UNPKG

@hashgraph/sdk

Version:
3 lines (2 loc) 4.29 kB
import t,{QUERY_REGISTRY as e}from"../query/Query.js";import r from"./TransactionRecord.js";import n from"./TransactionReceipt.js";import s from"./TransactionId.js";import a from"../Status.js";import i from"../PrecheckStatusError.js";import o from"../ReceiptStatusError.js";import c from"../RecordStatusError.js";import{ExecutionState as d}from"../Executable.js";import*as u from"@hashgraph/proto";const{proto:l}=u;class h extends t{constructor(t={}){super(),this._transactionId=null,this._includeChildren=null,this._includeDuplicates=null,this._validateReceiptStatus=!0,null!=t.transactionId&&this.setTransactionId(t.transactionId),null!=t.includeChildren&&this.setIncludeChildren(t.includeChildren),null!=t.includeDuplicates&&this.setIncludeDuplicates(t.includeDuplicates),null!=t.validateReceiptStatus&&this.setValidateReceiptStatus(t.validateReceiptStatus)}get transactionId(){return this._transactionId}static _fromProtobuf(t){const e=t.transactionGetRecord;return new h({transactionId:e.transactionID?s._fromProtobuf(e.transactionID):void 0,includeChildren:null!=e.includeChildRecords?e.includeChildRecords:void 0,includeDuplicates:null!=e.includeDuplicates?e.includeDuplicates:void 0})}setTransactionId(t){return this._transactionId="string"==typeof t?s.fromString(t):t.clone(),this}setIncludeChildren(t){return this._includeChildren=t,this}get includeChildren(){return null!=this._includeChildren&&this._includeChildren}setIncludeDuplicates(t){return this._duplicates=t,this}get includeDuplicates(){return null!=this._duplicates&&this._duplicates}setValidateReceiptStatus(t){return this._validateReceiptStatus=t,this}get validateReceiptStatus(){return this._validateReceiptStatus}_shouldRetry(t,e){const{nodeTransactionPrecheckCode:r}=this._mapResponseHeader(e);let n=a._fromCode(null!=r?r:l.ResponseCodeEnum.OK);switch(this._logger&&this._logger.debug(`[${this._getLogId()}] received node precheck status ${n.toString()}`),n){case a.Busy:case a.Unknown:case a.ReceiptNotFound:case a.RecordNotFound:case a.PlatformNotActive:return[n,d.Retry];case a.Ok:break;default:return[n,d.Error]}const s=e.transactionGetRecord;if(s.header.responseType===u.proto.ResponseType.COST_ANSWER)return[n,d.Finished];const i=s.transactionRecord.receipt.status;switch(n=a._fromCode(i),this._logger&&this._logger.debug(`[${this._getLogId()}] received record's receipt ${n.toString()}`),n){case a.Ok:case a.Busy:case a.Unknown:case a.ReceiptNotFound:case a.RecordNotFound:return[n,d.Retry];case a.Success:return[n,d.Finished];default:return[n,this._validateReceiptStatus?d.Error:d.Finished]}}_mapStatusError(t,e,s){const{nodeTransactionPrecheckCode:d}=this._mapResponseHeader(e);let u=a._fromCode(null!=d?d:l.ResponseCodeEnum.OK);switch(u){case a.Ok:break;case a.ContractRevertExecuted:return new c({status:u,transactionId:this._getTransactionId(),transactionRecord:r._fromProtobuf({transactionRecord:e.transactionGetRecord.transactionRecord})});default:return new i({nodeId:s,status:u,transactionId:this._getTransactionId(),contractFunctionResult:null})}const h=e.transactionGetRecord.transactionRecord.receipt,p=h.status;return u=a._fromCode(p),u===a.ContractRevertExecuted?new c({status:u,transactionId:this._getTransactionId(),transactionRecord:r._fromProtobuf({transactionRecord:e.transactionGetRecord.transactionRecord})}):new o({status:u,transactionId:this._getTransactionId(),transactionReceipt:n._fromProtobuf({receipt:h})})}_validateChecksums(t){null!=this._transactionId&&null!=this._transactionId.accountId&&this._transactionId.accountId.validateChecksum(t)}_execute(t,e){return t.crypto.getTxRecordByTxID(e)}_mapResponseHeader(t){return t.transactionGetRecord.header}_mapResponse(t,e,n){const s=t.transactionGetRecord;return Promise.resolve(r._fromProtobuf(s))}_onMakeRequest(t){return{transactionGetRecord:{header:t,transactionID:null!=this._transactionId?this._transactionId._toProtobuf():null,includeChildRecords:this._includeChildren,includeDuplicates:this._includeDuplicates}}}_getLogId(){return`TransactionRecordQuery:${(null!=this._paymentTransactionId&&null!=this._paymentTransactionId.validStart?this._paymentTransactionId.validStart:this._timestamp).toString()}`}}e.set("transactionGetRecord",h._fromProtobuf);export{h as default}; //# sourceMappingURL=TransactionRecordQuery.js.map