@aeternity/aepp-sdk 14.1.0 → 14.1.1

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/es/aens.d.ts CHANGED
@@ -136,7 +136,12 @@ export default class Name {
136
136
  */
137
137
  extendTtl(nameTtl?: number, options?: Omit<Parameters<Name['update']>[1], 'extendPointers' | 'nameTtl'>): ReturnType<Name['update']>;
138
138
  /**
139
- * Claim a previously preclaimed registration. This can only be done after the preclaim step
139
+ * Claim a name.
140
+ *
141
+ * Since the Ceres protocol upgrade, it is possible to claim a name without preclaiming it.
142
+ * If you preclaim, wait for at least 1 key block to be mined before exposing a name in the
143
+ * NameClaimTx to ensure that nobody can front-run the claim.
144
+ *
140
145
  * @param options - options
141
146
  * @returns mined transaction details
142
147
  * @example
@@ -146,7 +151,10 @@ export default class Name {
146
151
  */
147
152
  claim(options?: NameClaimOptions): ReturnType<typeof sendTransaction>;
148
153
  /**
149
- * Preclaim a name. Sends a hash of the name and a random salt to the node
154
+ * Preclaim a name. This sends a commitment hash (derived from the name and a random salt) to
155
+ * the node. Preclaiming was required to claim a name before the Ceres protocol upgrade.
156
+ * After the upgrade, preclaiming is optional but still available for added security if you
157
+ * want to claim a non-auction name.
150
158
  * @param options - Options
151
159
  * @example
152
160
  * ```js
package/es/aens.js CHANGED
@@ -207,7 +207,12 @@ export default class Name {
207
207
  }
208
208
 
209
209
  /**
210
- * Claim a previously preclaimed registration. This can only be done after the preclaim step
210
+ * Claim a name.
211
+ *
212
+ * Since the Ceres protocol upgrade, it is possible to claim a name without preclaiming it.
213
+ * If you preclaim, wait for at least 1 key block to be mined before exposing a name in the
214
+ * NameClaimTx to ensure that nobody can front-run the claim.
215
+ *
211
216
  * @param options - options
212
217
  * @returns mined transaction details
213
218
  * @example
@@ -232,7 +237,10 @@ export default class Name {
232
237
  }
233
238
 
234
239
  /**
235
- * Preclaim a name. Sends a hash of the name and a random salt to the node
240
+ * Preclaim a name. This sends a commitment hash (derived from the name and a random salt) to
241
+ * the node. Preclaiming was required to claim a name before the Ceres protocol upgrade.
242
+ * After the upgrade, preclaiming is optional but still available for added security if you
243
+ * want to claim a non-auction name.
236
244
  * @param options - Options
237
245
  * @example
238
246
  * ```js
package/es/aens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"aens.js","names":["genSalt","isEncoded","commitmentHash","isAuctionName","produceNameId","Tag","Encoding","LogicError","sendTransaction","buildTxAsync","NotAuctionNameError","constructor","name","action","_salt","WeakMap","Name","value","options","_classPrivateFieldInitSpec","id","revoke","opt","tx","_isInternalBuild","tag","NameRevokeTx","nameId","accountId","onAccount","address","update","pointers","extendPointers","allPointers","Object","fromEntries","onNode","getNameEntryByName","map","key","hasRawPointers","values","some","v","Bytearray","NameUpdateTx","version","entries","transfer","NameTransferTx","recipientId","getState","_options$onNode","nameEntry","owner","getAuctionState","_options$onNode2","getAuctionEntryByName","highestBidder","extendTtl","nameTtl","claim","nameSalt","_classPrivateFieldGet","NameClaimTx","preclaim","NamePreclaimTx","commitmentId","result","_classPrivateFieldSet","bid","nameFee"],"sources":["../src/aens.ts"],"sourcesContent":["/**\n * Aens methods - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { genSalt, isEncoded } from './utils/crypto.js';\nimport { commitmentHash, isAuctionName, produceNameId } from './tx/builder/helpers.js';\nimport { Tag, AensName } from './tx/builder/constants.js';\nimport { Encoded, Encoding } from './utils/encoder.js';\nimport { LogicError } from './utils/errors.js';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction.js';\nimport { Optional } from './utils/other.js';\nimport { buildTxAsync, BuildTxOptions } from './tx/builder/index.js';\nimport Node from './Node.js';\nimport AccountBase from './account/Base.js';\nimport { AddressEncodings } from './tx/builder/field-types/address.js';\n\ninterface NameRevokeOptions\n extends BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface KeyPointers {\n [key: string]: Encoded.Generic<AddressEncodings | Encoding.Bytearray>;\n}\n\ninterface NameUpdateOptions\n extends BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {\n /**\n * Get the pointers from the node and merge with provided ones. Pointers with the same key will be\n * overwritten.\n */\n extendPointers?: boolean;\n}\n\ninterface NameTransferOptions\n extends BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface NamePreclaimOptions\n extends BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface NameClaimOptions\n extends BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'name'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\nclass NotAuctionNameError extends LogicError {\n constructor(name: AensName, action: string) {\n super(`Can't ${action} because ${name} is not an auction name`);\n this.name = 'NotAuctionNameError';\n }\n}\n\n/**\n * @category AENS\n * @example\n * ```js\n * const name = new Name('test.chain', aeSdk.getContext())\n * ```\n */\nexport default class Name {\n #salt?: number;\n\n /**\n * @param value - AENS name\n * @param options - Options\n * @param options.onNode - Node to use\n * @param options.onAccount - Account to use\n */\n constructor(\n public readonly value: AensName,\n public options: { onNode: Node; onAccount: AccountBase } & Omit<\n NameRevokeOptions &\n NameUpdateOptions &\n NameTransferOptions &\n NamePreclaimOptions &\n NameClaimOptions,\n 'version'\n >,\n ) {\n this.options = options;\n }\n\n /**\n * Name ID encoded as nm_-prefixed string\n */\n get id(): Encoded.Name {\n return produceNameId(this.value);\n }\n\n /**\n * Revoke a name\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.revoke({ fee, ttl, nonce })\n * ```\n */\n async revoke(options: NameRevokeOptions = {}): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameRevokeTx,\n nameId: this.value,\n accountId: opt.onAccount.address,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Update a name\n * @param pointers - Map of pointer keys to corresponding addresses\n * @param options - Options\n * @example\n * ```js\n * const name = 'test.chain'\n * const channel = 'ch_2519mBs...'\n * const pointers = {\n * account_pubkey: 'ak_asd23dasdas...,',\n * contract_pubkey: 'ct_asdf34fasdasd...',\n * [getDefaultPointerKey(channel)]: channel,\n * }\n * await name.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n * ```\n */\n async update(\n pointers: KeyPointers,\n options: NameUpdateOptions = {},\n ): ReturnType<typeof sendTransaction> {\n const { extendPointers, ...opt } = { ...this.options, ...options };\n const allPointers = {\n ...(extendPointers === true &&\n Object.fromEntries(\n (await opt.onNode.getNameEntryByName(this.value)).pointers.map(({ key, id }) => [\n key,\n id,\n ]),\n )),\n ...pointers,\n };\n\n const hasRawPointers = Object.values(allPointers).some((v) => isEncoded(v, Encoding.Bytearray));\n\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameUpdateTx,\n version: hasRawPointers ? 2 : 1,\n nameId: this.value,\n accountId: opt.onAccount.address,\n pointers: Object.entries(allPointers).map(\n ([key, id]: [string, Encoded.Generic<AddressEncodings>]) => ({ key, id }),\n ),\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Transfer a name to another account\n * @param address - Recipient account public key\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.transfer('ak_asd23dasdas...', { ttl, fee, nonce })\n * ```\n */\n async transfer(\n address: Encoded.AccountAddress,\n options: NameTransferOptions = {},\n ): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameTransferTx,\n nameId: this.value,\n accountId: opt.onAccount.address,\n recipientId: address,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Query the AENS name info from the node and return the object with info\n * @param options - Options\n * @example\n * ```js\n * const nameEntry = await name.getState()\n * console.log(nameEntry.owner)\n * ```\n */\n async getState(options: { onNode?: Node } = {}): Promise<\n Awaited<ReturnType<Node['getNameEntryByName']>> & {\n id: Encoded.Name;\n owner: Encoded.AccountAddress;\n }\n > {\n const onNode = options.onNode ?? this.options.onNode;\n const nameEntry = await onNode.getNameEntryByName(this.value);\n return {\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n owner: nameEntry.owner as Encoded.AccountAddress,\n };\n }\n\n /**\n * Query the AENS auction info from the node and return the object with info\n * @param options - Options\n * @example\n * ```js\n * const auctionEntry = await name.getAuctionState()\n * console.log(auctionEntry.highestBidder)\n * ```\n */\n async getAuctionState(options: { onNode?: Node } = {}): Promise<\n Awaited<ReturnType<Node['getAuctionEntryByName']>> & {\n id: Encoded.Name;\n highestBidder: Encoded.AccountAddress;\n }\n > {\n if (!isAuctionName(this.value)) throw new NotAuctionNameError(this.value, 'get auction state');\n const onNode = options.onNode ?? this.options.onNode;\n const nameEntry = await onNode.getAuctionEntryByName(this.value);\n return {\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n highestBidder: nameEntry.highestBidder as Encoded.AccountAddress,\n };\n }\n\n /**\n *\n * @param nameTtl - represents in number of blocks (max and default is 180000)\n * @param options - Options\n * @returns mined transaction details\n */\n async extendTtl(\n nameTtl?: number,\n options: Omit<Parameters<Name['update']>[1], 'extendPointers' | 'nameTtl'> = {},\n ): ReturnType<Name['update']> {\n return this.update({}, { ...options, nameTtl, extendPointers: true });\n }\n\n /**\n * Claim a previously preclaimed registration. This can only be done after the preclaim step\n * @param options - options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.claim({ ttl, fee, nonce, nameFee })\n * ```\n */\n async claim(options: NameClaimOptions = {}): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n nameSalt: this.#salt,\n ...opt,\n tag: Tag.NameClaimTx,\n accountId: opt.onAccount.address,\n name: this.value,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @param options - Options\n * @example\n * ```js\n * await name.preclaim({ ttl, fee, nonce })\n * ```\n */\n async preclaim(\n options: NamePreclaimOptions = {},\n ): Promise<Awaited<ReturnType<typeof sendTransaction>> & { nameSalt: number }> {\n const opt = { ...this.options, ...options };\n const nameSalt = genSalt();\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NamePreclaimTx,\n accountId: opt.onAccount.address,\n commitmentId: commitmentHash(this.value, nameSalt),\n });\n const result = await sendTransaction(tx, opt);\n this.#salt = nameSalt;\n return { ...result, nameSalt };\n }\n\n /**\n * Bid to name auction\n * @param nameFee - Name fee (bid fee)\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * const bidFee = computeBidFee(name.value, { startFee, increment: 0.42 })\n * await name.bid(213109412839123, { ttl, fee, nonce })\n * ```\n */\n async bid(\n nameFee: number | string | BigNumber,\n options: Omit<NameClaimOptions, 'nameFee'> = {},\n ): ReturnType<typeof sendTransaction> {\n if (!isAuctionName(this.value)) throw new NotAuctionNameError(this.value, 'make a bid');\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameClaimTx,\n accountId: opt.onAccount.address,\n nameSalt: 0,\n name: this.value,\n nameFee,\n });\n return sendTransaction(tx, opt);\n }\n}\n"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,OAAO,EAAEC,SAAS,QAAQ,mBAAmB;AACtD,SAASC,cAAc,EAAEC,aAAa,EAAEC,aAAa,QAAQ,yBAAyB;AACtF,SAASC,GAAG,QAAkB,2BAA2B;AACzD,SAAkBC,QAAQ,QAAQ,oBAAoB;AACtD,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,eAAe,QAAgC,uBAAuB;AAE/E,SAASC,YAAY,QAAwB,uBAAuB;AAmCpE,MAAMC,mBAAmB,SAASH,UAAU,CAAC;EAC3CI,WAAWA,CAACC,IAAc,EAAEC,MAAc,EAAE;IAC1C,KAAK,CAAC,SAASA,MAAM,YAAYD,IAAI,yBAAyB,CAAC;IAC/D,IAAI,CAACA,IAAI,GAAG,qBAAqB;EACnC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAAAE,KAAA,oBAAAC,OAAA;AAOA,eAAe,MAAMC,IAAI,CAAC;EAGxB;AACF;AACA;AACA;AACA;AACA;EACEL,WAAWA,CACOM,KAAe,EACxBC,OAON,EACD;IAlBFC,0BAAA,OAAAL,KAAK;IAAU,KASGG,KAAe,GAAfA,KAAe;IAAA,KACxBC,OAON,GAPMA,OAON;IAED,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;EACE,IAAIE,EAAEA,CAAA,EAAiB;IACrB,OAAOhB,aAAa,CAAC,IAAI,CAACa,KAAK,CAAC;EAClC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMI,MAAMA,CAACH,OAA0B,GAAG,CAAC,CAAC,EAAsC;IAChF,MAAMI,GAAG,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAC3C,MAAMK,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtB,GAAGF,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAACqB,YAAY;MACrBC,MAAM,EAAE,IAAI,CAACV,KAAK;MAClBW,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC;IAC3B,CAAC,CAAC;IACF,OAAOtB,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMS,MAAMA,CACVC,QAAqB,EACrBd,OAA0B,GAAG,CAAC,CAAC,EACK;IACpC,MAAM;MAAEe,cAAc;MAAE,GAAGX;IAAI,CAAC,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAClE,MAAMgB,WAAW,GAAG;MAClB,IAAID,cAAc,KAAK,IAAI,IACzBE,MAAM,CAACC,WAAW,CAChB,CAAC,MAAMd,GAAG,CAACe,MAAM,CAACC,kBAAkB,CAAC,IAAI,CAACrB,KAAK,CAAC,EAAEe,QAAQ,CAACO,GAAG,CAAC,CAAC;QAAEC,GAAG;QAAEpB;MAAG,CAAC,KAAK,CAC9EoB,GAAG,EACHpB,EAAE,CACH,CACH,CAAC,CAAC;MACJ,GAAGY;IACL,CAAC;IAED,MAAMS,cAAc,GAAGN,MAAM,CAACO,MAAM,CAACR,WAAW,CAAC,CAACS,IAAI,CAAEC,CAAC,IAAK3C,SAAS,CAAC2C,CAAC,EAAEtC,QAAQ,CAACuC,SAAS,CAAC,CAAC;IAE/F,MAAMtB,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtB,GAAGF,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAACyC,YAAY;MACrBC,OAAO,EAAEN,cAAc,GAAG,CAAC,GAAG,CAAC;MAC/Bd,MAAM,EAAE,IAAI,CAACV,KAAK;MAClBW,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC,OAAO;MAChCE,QAAQ,EAAEG,MAAM,CAACa,OAAO,CAACd,WAAW,CAAC,CAACK,GAAG,CACvC,CAAC,CAACC,GAAG,EAAEpB,EAAE,CAA8C,MAAM;QAAEoB,GAAG;QAAEpB;MAAG,CAAC,CAC1E;IACF,CAAC,CAAC;IACF,OAAOZ,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM2B,QAAQA,CACZnB,OAA+B,EAC/BZ,OAA4B,GAAG,CAAC,CAAC,EACG;IACpC,MAAMI,GAAG,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAC3C,MAAMK,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtB,GAAGF,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAAC6C,cAAc;MACvBvB,MAAM,EAAE,IAAI,CAACV,KAAK;MAClBW,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC,OAAO;MAChCqB,WAAW,EAAErB;IACf,CAAC,CAAC;IACF,OAAOtB,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM8B,QAAQA,CAAClC,OAA0B,GAAG,CAAC,CAAC,EAK5C;IAAA,IAAAmC,eAAA;IACA,MAAMhB,MAAM,IAAAgB,eAAA,GAAGnC,OAAO,CAACmB,MAAM,cAAAgB,eAAA,cAAAA,eAAA,GAAI,IAAI,CAACnC,OAAO,CAACmB,MAAM;IACpD,MAAMiB,SAAS,GAAG,MAAMjB,MAAM,CAACC,kBAAkB,CAAC,IAAI,CAACrB,KAAK,CAAC;IAC7D,OAAO;MACL,GAAGqC,SAAS;MACZlC,EAAE,EAAEkC,SAAS,CAAClC,EAAkB;MAChCmC,KAAK,EAAED,SAAS,CAACC;IACnB,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,eAAeA,CAACtC,OAA0B,GAAG,CAAC,CAAC,EAKnD;IAAA,IAAAuC,gBAAA;IACA,IAAI,CAACtD,aAAa,CAAC,IAAI,CAACc,KAAK,CAAC,EAAE,MAAM,IAAIP,mBAAmB,CAAC,IAAI,CAACO,KAAK,EAAE,mBAAmB,CAAC;IAC9F,MAAMoB,MAAM,IAAAoB,gBAAA,GAAGvC,OAAO,CAACmB,MAAM,cAAAoB,gBAAA,cAAAA,gBAAA,GAAI,IAAI,CAACvC,OAAO,CAACmB,MAAM;IACpD,MAAMiB,SAAS,GAAG,MAAMjB,MAAM,CAACqB,qBAAqB,CAAC,IAAI,CAACzC,KAAK,CAAC;IAChE,OAAO;MACL,GAAGqC,SAAS;MACZlC,EAAE,EAAEkC,SAAS,CAAClC,EAAkB;MAChCuC,aAAa,EAAEL,SAAS,CAACK;IAC3B,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,SAASA,CACbC,OAAgB,EAChB3C,OAA0E,GAAG,CAAC,CAAC,EACnD;IAC5B,OAAO,IAAI,CAACa,MAAM,CAAC,CAAC,CAAC,EAAE;MAAE,GAAGb,OAAO;MAAE2C,OAAO;MAAE5B,cAAc,EAAE;IAAK,CAAC,CAAC;EACvE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM6B,KAAKA,CAAC5C,OAAyB,GAAG,CAAC,CAAC,EAAsC;IAC9E,MAAMI,GAAG,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAC3C,MAAMK,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtBuC,QAAQ,EAAEC,qBAAA,CAAKlD,KAAK,EAAV,IAAS,CAAC;MACpB,GAAGQ,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAAC4D,WAAW;MACpBrC,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC,OAAO;MAChClB,IAAI,EAAE,IAAI,CAACK;IACb,CAAC,CAAC;IACF,OAAOT,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM4C,QAAQA,CACZhD,OAA4B,GAAG,CAAC,CAAC,EAC4C;IAC7E,MAAMI,GAAG,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAC3C,MAAM6C,QAAQ,GAAG/D,OAAO,CAAC,CAAC;IAC1B,MAAMuB,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtB,GAAGF,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAAC8D,cAAc;MACvBvC,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC,OAAO;MAChCsC,YAAY,EAAElE,cAAc,CAAC,IAAI,CAACe,KAAK,EAAE8C,QAAQ;IACnD,CAAC,CAAC;IACF,MAAMM,MAAM,GAAG,MAAM7D,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;IAC7CgD,qBAAA,CAAKxD,KAAK,EAAV,IAAI,EAASiD,QAAJ,CAAC;IACV,OAAO;MAAE,GAAGM,MAAM;MAAEN;IAAS,CAAC;EAChC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMQ,GAAGA,CACPC,OAAoC,EACpCtD,OAA0C,GAAG,CAAC,CAAC,EACX;IACpC,IAAI,CAACf,aAAa,CAAC,IAAI,CAACc,KAAK,CAAC,EAAE,MAAM,IAAIP,mBAAmB,CAAC,IAAI,CAACO,KAAK,EAAE,YAAY,CAAC;IACvF,MAAMK,GAAG,GAAG;MAAE,GAAG,IAAI,CAACJ,OAAO;MAAE,GAAGA;IAAQ,CAAC;IAC3C,MAAMK,EAAE,GAAG,MAAMd,YAAY,CAAC;MAC5Be,gBAAgB,EAAE,IAAI;MACtB,GAAGF,GAAG;MACNG,GAAG,EAAEpB,GAAG,CAAC4D,WAAW;MACpBrC,SAAS,EAAEN,GAAG,CAACO,SAAS,CAACC,OAAO;MAChCiC,QAAQ,EAAE,CAAC;MACXnD,IAAI,EAAE,IAAI,CAACK,KAAK;MAChBuD;IACF,CAAC,CAAC;IACF,OAAOhE,eAAe,CAACe,EAAE,EAAED,GAAG,CAAC;EACjC;AACF","ignoreList":[]}
1
+ {"version":3,"file":"aens.js","names":["genSalt","isEncoded","commitmentHash","isAuctionName","produceNameId","Tag","Encoding","LogicError","sendTransaction","buildTxAsync","NotAuctionNameError","constructor","name","action","_salt","WeakMap","Name","value","options","_classPrivateFieldInitSpec","id","revoke","opt","tx","_isInternalBuild","tag","NameRevokeTx","nameId","accountId","onAccount","address","update","pointers","extendPointers","allPointers","Object","fromEntries","onNode","getNameEntryByName","map","key","hasRawPointers","values","some","v","Bytearray","NameUpdateTx","version","entries","transfer","NameTransferTx","recipientId","getState","_options$onNode","nameEntry","owner","getAuctionState","_options$onNode2","getAuctionEntryByName","highestBidder","extendTtl","nameTtl","claim","nameSalt","_classPrivateFieldGet","NameClaimTx","preclaim","NamePreclaimTx","commitmentId","result","_classPrivateFieldSet","bid","nameFee"],"sources":["../src/aens.ts"],"sourcesContent":["/**\n * Aens methods - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { genSalt, isEncoded } from './utils/crypto.js';\nimport { commitmentHash, isAuctionName, produceNameId } from './tx/builder/helpers.js';\nimport { Tag, AensName } from './tx/builder/constants.js';\nimport { Encoded, Encoding } from './utils/encoder.js';\nimport { LogicError } from './utils/errors.js';\nimport { sendTransaction, SendTransactionOptions } from './send-transaction.js';\nimport { Optional } from './utils/other.js';\nimport { buildTxAsync, BuildTxOptions } from './tx/builder/index.js';\nimport Node from './Node.js';\nimport AccountBase from './account/Base.js';\nimport { AddressEncodings } from './tx/builder/field-types/address.js';\n\ninterface NameRevokeOptions\n extends BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface KeyPointers {\n [key: string]: Encoded.Generic<AddressEncodings | Encoding.Bytearray>;\n}\n\ninterface NameUpdateOptions\n extends BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {\n /**\n * Get the pointers from the node and merge with provided ones. Pointers with the same key will be\n * overwritten.\n */\n extendPointers?: boolean;\n}\n\ninterface NameTransferOptions\n extends BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface NamePreclaimOptions\n extends BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\ninterface NameClaimOptions\n extends BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'name'>,\n Optional<SendTransactionOptions, 'onAccount' | 'onNode'> {}\n\nclass NotAuctionNameError extends LogicError {\n constructor(name: AensName, action: string) {\n super(`Can't ${action} because ${name} is not an auction name`);\n this.name = 'NotAuctionNameError';\n }\n}\n\n/**\n * @category AENS\n * @example\n * ```js\n * const name = new Name('test.chain', aeSdk.getContext())\n * ```\n */\nexport default class Name {\n #salt?: number;\n\n /**\n * @param value - AENS name\n * @param options - Options\n * @param options.onNode - Node to use\n * @param options.onAccount - Account to use\n */\n constructor(\n public readonly value: AensName,\n public options: { onNode: Node; onAccount: AccountBase } & Omit<\n NameRevokeOptions &\n NameUpdateOptions &\n NameTransferOptions &\n NamePreclaimOptions &\n NameClaimOptions,\n 'version'\n >,\n ) {\n this.options = options;\n }\n\n /**\n * Name ID encoded as nm_-prefixed string\n */\n get id(): Encoded.Name {\n return produceNameId(this.value);\n }\n\n /**\n * Revoke a name\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.revoke({ fee, ttl, nonce })\n * ```\n */\n async revoke(options: NameRevokeOptions = {}): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameRevokeTx,\n nameId: this.value,\n accountId: opt.onAccount.address,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Update a name\n * @param pointers - Map of pointer keys to corresponding addresses\n * @param options - Options\n * @example\n * ```js\n * const name = 'test.chain'\n * const channel = 'ch_2519mBs...'\n * const pointers = {\n * account_pubkey: 'ak_asd23dasdas...,',\n * contract_pubkey: 'ct_asdf34fasdasd...',\n * [getDefaultPointerKey(channel)]: channel,\n * }\n * await name.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n * ```\n */\n async update(\n pointers: KeyPointers,\n options: NameUpdateOptions = {},\n ): ReturnType<typeof sendTransaction> {\n const { extendPointers, ...opt } = { ...this.options, ...options };\n const allPointers = {\n ...(extendPointers === true &&\n Object.fromEntries(\n (await opt.onNode.getNameEntryByName(this.value)).pointers.map(({ key, id }) => [\n key,\n id,\n ]),\n )),\n ...pointers,\n };\n\n const hasRawPointers = Object.values(allPointers).some((v) => isEncoded(v, Encoding.Bytearray));\n\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameUpdateTx,\n version: hasRawPointers ? 2 : 1,\n nameId: this.value,\n accountId: opt.onAccount.address,\n pointers: Object.entries(allPointers).map(\n ([key, id]: [string, Encoded.Generic<AddressEncodings>]) => ({ key, id }),\n ),\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Transfer a name to another account\n * @param address - Recipient account public key\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.transfer('ak_asd23dasdas...', { ttl, fee, nonce })\n * ```\n */\n async transfer(\n address: Encoded.AccountAddress,\n options: NameTransferOptions = {},\n ): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameTransferTx,\n nameId: this.value,\n accountId: opt.onAccount.address,\n recipientId: address,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Query the AENS name info from the node and return the object with info\n * @param options - Options\n * @example\n * ```js\n * const nameEntry = await name.getState()\n * console.log(nameEntry.owner)\n * ```\n */\n async getState(options: { onNode?: Node } = {}): Promise<\n Awaited<ReturnType<Node['getNameEntryByName']>> & {\n id: Encoded.Name;\n owner: Encoded.AccountAddress;\n }\n > {\n const onNode = options.onNode ?? this.options.onNode;\n const nameEntry = await onNode.getNameEntryByName(this.value);\n return {\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n owner: nameEntry.owner as Encoded.AccountAddress,\n };\n }\n\n /**\n * Query the AENS auction info from the node and return the object with info\n * @param options - Options\n * @example\n * ```js\n * const auctionEntry = await name.getAuctionState()\n * console.log(auctionEntry.highestBidder)\n * ```\n */\n async getAuctionState(options: { onNode?: Node } = {}): Promise<\n Awaited<ReturnType<Node['getAuctionEntryByName']>> & {\n id: Encoded.Name;\n highestBidder: Encoded.AccountAddress;\n }\n > {\n if (!isAuctionName(this.value)) throw new NotAuctionNameError(this.value, 'get auction state');\n const onNode = options.onNode ?? this.options.onNode;\n const nameEntry = await onNode.getAuctionEntryByName(this.value);\n return {\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n highestBidder: nameEntry.highestBidder as Encoded.AccountAddress,\n };\n }\n\n /**\n *\n * @param nameTtl - represents in number of blocks (max and default is 180000)\n * @param options - Options\n * @returns mined transaction details\n */\n async extendTtl(\n nameTtl?: number,\n options: Omit<Parameters<Name['update']>[1], 'extendPointers' | 'nameTtl'> = {},\n ): ReturnType<Name['update']> {\n return this.update({}, { ...options, nameTtl, extendPointers: true });\n }\n\n /**\n * Claim a name.\n *\n * Since the Ceres protocol upgrade, it is possible to claim a name without preclaiming it.\n * If you preclaim, wait for at least 1 key block to be mined before exposing a name in the\n * NameClaimTx to ensure that nobody can front-run the claim.\n *\n * @param options - options\n * @returns mined transaction details\n * @example\n * ```js\n * await name.claim({ ttl, fee, nonce, nameFee })\n * ```\n */\n async claim(options: NameClaimOptions = {}): ReturnType<typeof sendTransaction> {\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n nameSalt: this.#salt,\n ...opt,\n tag: Tag.NameClaimTx,\n accountId: opt.onAccount.address,\n name: this.value,\n });\n return sendTransaction(tx, opt);\n }\n\n /**\n * Preclaim a name. This sends a commitment hash (derived from the name and a random salt) to\n * the node. Preclaiming was required to claim a name before the Ceres protocol upgrade.\n * After the upgrade, preclaiming is optional but still available for added security if you\n * want to claim a non-auction name.\n * @param options - Options\n * @example\n * ```js\n * await name.preclaim({ ttl, fee, nonce })\n * ```\n */\n async preclaim(\n options: NamePreclaimOptions = {},\n ): Promise<Awaited<ReturnType<typeof sendTransaction>> & { nameSalt: number }> {\n const opt = { ...this.options, ...options };\n const nameSalt = genSalt();\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NamePreclaimTx,\n accountId: opt.onAccount.address,\n commitmentId: commitmentHash(this.value, nameSalt),\n });\n const result = await sendTransaction(tx, opt);\n this.#salt = nameSalt;\n return { ...result, nameSalt };\n }\n\n /**\n * Bid to name auction\n * @param nameFee - Name fee (bid fee)\n * @param options - Options\n * @returns mined transaction details\n * @example\n * ```js\n * const bidFee = computeBidFee(name.value, { startFee, increment: 0.42 })\n * await name.bid(213109412839123, { ttl, fee, nonce })\n * ```\n */\n async bid(\n nameFee: number | string | BigNumber,\n options: Omit<NameClaimOptions, 'nameFee'> = {},\n ): ReturnType<typeof sendTransaction> {\n if (!isAuctionName(this.value)) throw new NotAuctionNameError(this.value, 'make a bid');\n const opt = { ...this.options, ...options };\n const tx = await buildTxAsync({\n _isInternalBuild: true,\n ...opt,\n tag: Tag.NameClaimTx,\n accountId: opt.onAccount.address,\n nameSalt: 0,\n name: this.value,\n nameFee,\n });\n return sendTransaction(tx, opt);\n }\n}\n"],"mappings":"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","ignoreList":[]}