@sentio/sdk-bundle 2.42.0-rc.7 → 2.42.0-rc.8
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/lib/btc/filter.d.ts.map +1 -1
- package/lib/btc/index.js +1 -1
- package/lib/chunk-3AEWKTHO.js +4 -0
- package/lib/chunk-3AEWKTHO.js.map +1 -0
- package/lib/testing/index.js +1 -1
- package/package.json +2 -2
- package/src/btc/filter.ts +29 -20
- package/lib/chunk-PEB2BU4O.js +0 -4
- package/lib/chunk-PEB2BU4O.js.map +0 -1
package/lib/btc/filter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/btc/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/btc/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAMrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;AAEvE,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAA;AAEvE,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAA;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI;KACpC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU;CAClC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,EAAE,CAAC,EAAE,UAAU,CAAA;IAEf,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAE1B,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC1B,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAE/D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC5B,cAAc,CAAC,EAAE;QACf,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACzC,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;KAEnC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IACrC,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAA;IACxC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/E,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;AAoDxE,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAShF"}
|
package/lib/btc/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
|
|
2
|
-
import{a as r,b as e,c as f,d as m,e as o}from"../chunk-
|
|
2
|
+
import{a as r,b as e,c as f,d as m,e as o}from"../chunk-3AEWKTHO.js";import"../chunk-TO35Z22E.js";import"../chunk-SBU7XQ42.js";import"../chunk-PLLN42GP.js";import"../chunk-NMFPLO65.js";import"../chunk-K6FJLTBX.js";import"../chunk-GQE2JYJW.js";import"../chunk-DJQ5RDDN.js";import"../chunk-FC546GTB.js";import"../chunk-LLHU72AA.js";export{r as BTCContext,o as BTCPlugin,f as BTCProcessor,e as BTCProcessorState,m as filters2Proto};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
|
|
2
|
+
import{D as m,Ka as _,La as y,Lc as N,Na as T,Oa as x,Pa as B,W as C,bd as o,fd as I,kd as k,tc as A}from"./chunk-TO35Z22E.js";import{a as V}from"./chunk-FC546GTB.js";import{e as P,g as F}from"./chunk-LLHU72AA.js";var p=class extends I{constructor(e,n,i,s){super({});this.chainId=e;this.name=n;this.tx=i;this.address=s}getMetaDataInternal(e,n){return{address:this.address,contractName:this.name,blockNumber:BigInt(this.tx.block_number??0),transactionIndex:0,transactionHash:this.tx.transaction_hash,chainId:this.getChainId(),name:e,logIndex:0,labels:A(n)}}getChainId(){return this.chainId}};import{ListStateStorage as R}from"@sentio/runtime";var g=class extends R{},l=g;F(l,"INSTANCE",new g);var d=class{constructor(t){this.config=t}callHandlers=[];static bind(t){let e=new d(t);return l.INSTANCE.addValue(e),e}onTransaction(t,e){let n={handler:async i=>{let s=i.transaction,a=new p(this.config.chainId,this.config.name??this.config.address??"",s,this.config.address??s.vout[0].script_address);return await t(s,a),a.stopAndGetResult()},filter:e};return this.callHandlers.push(n),this}};function w(r){if(r){let t=x.create(),e=[],n=[],i=[];for(let s of Array.isArray(r)?r:[r]){let{preVOut:a,preTransaction:b,...O}=s;e.push(O),a&&n.push(a),b&&i.push(b)}if(t.filters=T.create({filters:u(e)}),n.length>0){let s=u(n);s&&s.length>0&&(t.preVOut=s[0])}return i.length>0&&(t.preTransaction=f(i)?.[0]),t}}function D(r){if(r){let t=B.create(),e=Array.isArray(r)?r:[r];return t.filters=T.create({filters:u(e)}),t}}function f(r){return(Array.isArray(r)?r:[r]).map(e=>({filter:u(e.filter),inputFilter:w(e.inputFilter),outputFilter:D(e.outputFilter)}))}function S(r){let t=_.create();r instanceof Date&&(t.eq=o(r)),typeof r=="number"&&(t.eq=o(r)),typeof r=="string"&&(t.eq=o(r)),r instanceof V&&(t.eq=o(r)),typeof r=="bigint"&&(t.eq=o(r)),typeof r=="boolean"&&(t.eq=o(r)),Array.isArray(r)&&(t.in={values:r.map(e=>o(e))});for(let[e,n]of Object.entries(r))switch(e){case"prefix":case"contains":case"notContains":t[e]=n.toString();break;case"length":t.lengthEq=n;break;case"lengthGt":case"lengthLt":t[e]=n;break;case"hasAny":case"hasAll":case"in":t[e]={values:n.map(i=>o(i))};break;case"eq":case"gt":case"gte":case"lt":case"lte":case"ne":t[e]=o(n);break;default:throw new Error("Unknown condition op: "+e)}return t}function u(r){if(r&&r.length>0){let t=[];for(let e of r){let n=y.create();for(let[i,s]of Object.entries(e))n.conditions[i]=S(s);t.push(n)}return t}return[]}import{errorString as H,GLOBAL_CONFIG as E,mergeProcessResults as q,Plugin as v,PluginManager as L,USER_PROCESSOR as G}from"@sentio/runtime";var c=P(N(),1);var h=class extends v{name="BTCPlugin";handlers={txHandlers:[]};async configure(t){let e={txHandlers:[]};for(let n of l.INSTANCE.getValues()){let i=C.fromPartial({processorType:G,contract:{name:n.config.name,chainId:n.config.chainId.toString(),address:n.config.address||"*",abi:""},startBlock:n.config.startBlock,endBlock:n.config.endBlock});for(let s of n.callHandlers){let a=e.txHandlers.push(s.handler)-1;s.filter?i.btcTransactionConfigs.push({filters:f(s.filter),handlerId:a}):i.contract?.address!="*"&&i.btcTransactionConfigs.push({filters:f({outputFilter:{script_address:n.config.address}}),handlerId:a})}t.contractConfigs.push(i)}this.handlers=e}supportedHandlers=[m.BTC_TRANSACTION];processBinding(t){switch(t.handlerType){case m.BTC_TRANSACTION:return this.processTransaction(t);default:throw new c.ServerError(c.Status.INVALID_ARGUMENT,"No handle type registered "+t.handlerType)}}async start(t){}stateDiff(t){return k.INSTANCE.getValues().length!==t.templateInstances.length}async processTransaction(t){if(!t.data?.btcTransaction)throw new c.ServerError(c.Status.INVALID_ARGUMENT,"BTCEvents can't be null");let e=[],n=t.data?.btcTransaction;for(let i of t.handlerIds){let s=this.handlers.txHandlers[i](t.data?.btcTransaction).catch(a=>{throw new c.ServerError(c.Status.INTERNAL,"error processing transaction: "+JSON.stringify(n)+`
|
|
3
|
+
`+H(a))});E.execution.sequential&&await s,e.push(s)}return q(await Promise.all(e))}};L.INSTANCE.register(new h);export{p as a,l as b,d as c,f as d,h as e};
|
|
4
|
+
//# sourceMappingURL=chunk-3AEWKTHO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/btc/types.ts","../src/btc/btc-processor.ts","../src/btc/filter.ts","../src/btc/btc-plugin.ts"],"sourcesContent":["import { BaseContext, Labels, normalizeLabels } from '../core/index.js'\nimport { RecordMetaData } from '@sentio/protos'\nimport { ChainId } from '@sentio/chain'\n\nexport type Vin = {\n vin_index: number\n coinbase?: string\n spent_transaction_hash?: string\n spent_output_index?: number\n sequence: number\n witness?: string[]\n script_asm: string\n script_hex: string\n value: number\n addresses?: string[]\n pre_vout?: Vout\n pre_transaction?: Transaction\n}\n\nexport type Vout = {\n value: number\n vout_index: number\n script_asm: string\n script_hex: string\n script_type: string\n script_address: string\n script_reg_sigs: number\n}\n\nexport type Transaction = {\n transaction_hash: string\n transaction_index: number\n block_hash: string\n block_number: number\n block_timestamp: Date\n size: number\n virtual_size: number\n version: number\n lock_time: number\n input_count: number\n output_count: number\n vin: Vin[]\n vout: Vout[]\n}\n\nexport type Block = {\n block_hash: string\n block_number: number\n block_timestamp: Date\n size: number\n stripped_size: number\n weight: number\n version: number\n merkle_root: string\n nonce: number\n bits: string\n difficulty: number\n previous_hash: string\n next_hash: string\n transaction_count: number\n}\n\nexport class BTCContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly tx: Transaction,\n readonly address: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.name,\n blockNumber: BigInt(this.tx.block_number ?? 0),\n transactionIndex: 0,\n transactionHash: this.tx.transaction_hash,\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n","import { ListStateStorage } from '@sentio/runtime'\nimport { BTCContext, Transaction } from './types.js'\nimport { Data_BTCTransaction, ProcessResult } from '@sentio/protos'\nimport { TransactionFilters } from './filter.js'\n\nexport class BTCProcessorState extends ListStateStorage<BTCProcessor> {\n static INSTANCE = new BTCProcessorState()\n}\n\nexport class BTCProcessor {\n callHandlers: CallHandler<Data_BTCTransaction>[] = []\n\n constructor(readonly config: BTCProcessorConfig) {}\n\n static bind(config: BTCProcessorConfig): BTCProcessor {\n const processor = new BTCProcessor(config)\n BTCProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n public onTransaction(\n handler: (transaction: Transaction, ctx: BTCContext) => void | Promise<void>,\n filter?: TransactionFilters\n ) {\n const callHandler = {\n handler: async (call: Data_BTCTransaction) => {\n const tx = call.transaction as Transaction\n\n const ctx = new BTCContext(\n this.config.chainId,\n this.config.name ?? this.config.address ?? '',\n tx,\n this.config.address ?? tx.vout[0].script_address\n )\n await handler(tx, ctx)\n return ctx.stopAndGetResult()\n },\n filter\n }\n this.callHandlers.push(callHandler)\n return this\n }\n}\n\ninterface BTCProcessorConfig {\n chainId: string\n name?: string\n address?: string\n startBlock?: bigint\n endBlock?: bigint\n}\n\nexport type CallHandler<T> = {\n handler: (call: T) => Promise<ProcessResult>\n filter?: TransactionFilters\n}\n","import {\n BTCTransactionFilter,\n BTCTransactionFilter_Condition,\n BTCTransactionFilter_Filter,\n BTCTransactionFilter_Filters,\n BTCTransactionFilter_VinFilter,\n BTCTransactionFilter_VOutFilter\n} from '@sentio/protos'\nimport { serializeRichValue } from '../store/util.js'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { Transaction, Vin, Vout } from './types.js'\n\nexport type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>\n\nexport type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction'>\n\nexport type VOutFields = keyof Vout\n\nexport type Filter<F extends string> = {\n [K in F]?: Condition | Comparable\n}\n\nexport type Condition = {\n eq?: Comparable\n gt?: Comparable\n gte?: Comparable\n lt?: Comparable\n lte?: Comparable\n ne?: Comparable\n // string has the prefix\n prefix?: string\n // string contains\n contains?: string\n notContains?: string\n length?: number\n lengthGt?: number\n lengthLt?: number\n // array contains any of the values\n hasAny?: Array<Comparable>\n // array contains all the values\n hasAll?: Array<Comparable>\n in?: Array<Comparable>\n}\n\nexport type Filters<T extends string> = Filter<T> | Filter<T>[]\n\nexport type VinFilter = Filter<VinFields> & {\n preVOut?: Filter<VOutFields>\n preTransaction?: {\n filter?: Array<Filter<TransactionFields>>\n outputFilter?: Filters<VOutFields>\n // can't have inputFilter here, we can only support one level of nesting\n }\n}\n\nexport type VOutFilter = Filter<VOutFields>\n\nexport type TransactionFilter = {\n inputFilter?: VinFilter | VinFilter[]\n outputFilter?: VOutFilter | VOutFilter[]\n filter?: Array<Filter<TransactionFields>>\n}\n\nexport type Comparable = number | BigDecimal | bigint | Date | string | boolean\n\nexport type TransactionFilters = TransactionFilter | TransactionFilter[]\n\nfunction toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {\n if (inputFilter) {\n const ret = BTCTransactionFilter_VinFilter.create()\n const filters = []\n const vouts: Filter<VOutFields>[] = []\n const txs: TransactionFilters = []\n\n for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {\n const { preVOut, preTransaction, ...rest } = f\n filters.push(rest)\n if (preVOut) {\n vouts.push(preVOut)\n }\n if (preTransaction) {\n txs.push(preTransaction)\n }\n }\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n if (vouts.length > 0) {\n const voutFilters = convertFilters(vouts)\n if (voutFilters && voutFilters.length > 0) {\n ret.preVOut = voutFilters[0]\n }\n }\n if (txs.length > 0) {\n ret.preTransaction = filters2Proto(txs)?.[0]\n }\n\n return ret\n }\n\n return undefined\n}\n\nfunction toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]): BTCTransactionFilter_VOutFilter | undefined {\n if (outputFilter) {\n const ret = BTCTransactionFilter_VOutFilter.create()\n const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])\n ret.filters = BTCTransactionFilter_Filters.create({\n filters: convertFilters(filters)\n })\n\n return ret\n }\n return undefined\n}\n\nexport function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {\n const filters = Array.isArray(filter) ? filter : [filter]\n return filters.map((f) => {\n return {\n filter: convertFilters(f.filter),\n inputFilter: toVinFilter(f.inputFilter),\n outputFilter: toVOutFilter(f.outputFilter)\n } as BTCTransactionFilter\n })\n}\n\nfunction toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {\n const ret: BTCTransactionFilter_Condition = BTCTransactionFilter_Condition.create()\n if (value instanceof Date) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'number') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'string') {\n ret.eq = serializeRichValue(value)\n }\n if (value instanceof BigDecimal) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'bigint') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'boolean') {\n ret.eq = serializeRichValue(value)\n }\n if (Array.isArray(value)) {\n ret.in = { values: value.map((v) => serializeRichValue(v)) }\n }\n\n for (const [k, v] of Object.entries(value)) {\n switch (k) {\n case 'prefix':\n case 'contains':\n case 'notContains':\n ret[k] = v.toString()\n break\n case 'length':\n ret['lengthEq'] = v\n break\n case 'lengthGt':\n case 'lengthLt':\n ret[k] = v\n break\n case 'hasAny':\n case 'hasAll':\n case 'in':\n ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }\n break\n case 'eq':\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n case 'ne':\n ret[k] = serializeRichValue(v)\n break\n default:\n throw new Error('Unknown condition op: ' + k)\n }\n }\n\n return ret\n}\n\nfunction convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {\n if (filters && filters.length > 0) {\n const ret: BTCTransactionFilter_Filter[] = []\n for (const filter of filters) {\n const f: BTCTransactionFilter_Filter = BTCTransactionFilter_Filter.create()\n for (const [key, value] of Object.entries(filter)) {\n f.conditions[key] = toCondition(value as any)\n }\n ret.push(f)\n }\n return ret\n }\n return []\n}\n","import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n Data_BTCTransaction,\n DataBinding,\n HandlerType,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { BTCProcessorState } from './btc-processor.js'\nimport { filters2Proto, TransactionFilter } from './filter.js'\n\ninterface Handlers {\n txHandlers: ((trace: Data_BTCTransaction) => Promise<ProcessResult>)[]\n}\n\nexport class BTCPlugin extends Plugin {\n name: string = 'BTCPlugin'\n handlers: Handlers = {\n txHandlers: []\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n txHandlers: []\n }\n\n for (const processor of BTCProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: processor.config.chainId.toString(),\n address: processor.config.address || '*',\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n for (const callHandler of processor.callHandlers) {\n const handlerId = handlers.txHandlers.push(callHandler.handler) - 1\n\n if (callHandler.filter) {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto(callHandler.filter),\n handlerId\n })\n } else if (contractConfig.contract?.address != '*') {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto({\n outputFilter: {\n script_address: processor.config.address\n }\n } as TransactionFilter),\n handlerId\n })\n }\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n\n this.handlers = handlers\n }\n\n supportedHandlers = [HandlerType.BTC_TRANSACTION]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n return this.processTransaction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async start(request: StartRequest) {}\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async processTransaction(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"BTCEvents can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n const result = binding.data?.btcTransaction\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.txHandlers[handlerId](binding.data?.btcTransaction).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(result) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new BTCPlugin())\n"],"mappings":"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","names":["BTCContext","BaseContext","chainId","name","tx","address","labels","normalizeLabels","ListStateStorage","_BTCProcessorState","ListStateStorage","BTCProcessorState","__publicField","BTCProcessor","config","processor","handler","filter","callHandler","call","tx","ctx","BTCContext","toVinFilter","inputFilter","ret","BTCTransactionFilter_VinFilter","filters","vouts","txs","f","preVOut","preTransaction","rest","BTCTransactionFilter_Filters","convertFilters","voutFilters","filters2Proto","toVOutFilter","outputFilter","BTCTransactionFilter_VOutFilter","filter","toCondition","value","BTCTransactionFilter_Condition","serializeRichValue","BigDecimal","v","k","BTCTransactionFilter_Filter","key","errorString","GLOBAL_CONFIG","mergeProcessResults","Plugin","PluginManager","USER_PROCESSOR","import_nice_grpc","BTCPlugin","Plugin","config","handlers","processor","BTCProcessorState","contractConfig","ContractConfig","USER_PROCESSOR","callHandler","handlerId","filters2Proto","HandlerType","request","TemplateInstanceState","binding","promises","result","promise","e","errorString","GLOBAL_CONFIG","mergeProcessResults","PluginManager"]}
|
package/lib/testing/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
|
|
2
|
-
import{b as F}from"../chunk-BY3NP62H.js";import"../chunk-PEB2BU4O.js";import{g as _}from"../chunk-JEAW5KKT.js";import"../chunk-LDCEM6PZ.js";import"../chunk-ZGALPNQV.js";import{f as g}from"../chunk-ZDHGKRIS.js";import"../chunk-GTPT4243.js";import{c as T}from"../chunk-ZY643Q3A.js";import"../chunk-3FX7DHPT.js";import"../chunk-SSMP6EWG.js";import"../chunk-F2HFFA4Z.js";import"../chunk-NHARQGR7.js";import"../chunk-PE6MZT4O.js";import{d as M}from"../chunk-GORIGKSL.js";import"../chunk-PNA6LFOX.js";import"../chunk-ZIGQO7R5.js";import{a as D,d as u,n as E}from"../chunk-4TVQXTHY.js";import"../chunk-7SE2IH73.js";import"../chunk-ECTPH53D.js";import"../chunk-MGWHCJHO.js";import"../chunk-2GOCSOX5.js";import{a as m}from"../chunk-7HVQTJAO.js";import{D as a}from"../chunk-TO35Z22E.js";import"../chunk-SBU7XQ42.js";import"../chunk-PLLN42GP.js";import"../chunk-NMFPLO65.js";import"../chunk-K6FJLTBX.js";import"../chunk-GQE2JYJW.js";import"../chunk-DJQ5RDDN.js";import{a as L}from"../chunk-FC546GTB.js";import{e as h}from"../chunk-LLHU72AA.js";var U=h(m(),1);import{Endpoints as q,ProcessorServiceImpl as G,State as j}from"@sentio/runtime";var I=class{server;constructor(e){this.server=e}testEntryFunctionCall(e,t=T.MAIN_NET){return this.testEntryFunctionCalls([e],t)}testEntryFunctionCalls(e,t=T.MAIN_NET){let n=[];for(let r of e){let s=this.buildEntryFunctionCallBinding(r,t);if(!s)throw Error("Invalid test transaction: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildEntryFunctionCallBinding(e,t=T.MAIN_NET){let n=e.payload;for(let r of this.server.contractConfigs)if(r.contract?.chainId===t){for(let s of r.moveCallConfigs)for(let o of s.filters)if(u(r.contract.address)+"::"+o.function===n.function)return{data:{aptCall:{transaction:e}},handlerIds:[s.handlerId],handlerType:a.APT_CALL}}}testEvent(e,t=T.MAIN_NET){let n=this.buildEventBinding(e,t);if(!n)throw Error("Invalid test event: "+JSON.stringify(e));return this.server.processBinding(n)}buildEventBinding(e,t=T.MAIN_NET){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t){for(let r of n.moveEventConfigs)for(let s of r.filters)for(let o of e.events)if(u(n.contract.address)+"::"+s.type===E(o.type).qname)return{data:{aptEvent:{transaction:e}},handlerIds:[r.handlerId],handlerType:a.APT_EVENT}}}};var v=class{server;constructor(e){this.server=e}testInstructions(e){return this.server.processBindings({bindings:e.map(t=>({data:{raw:new Uint8Array,solInstruction:t},handlerIds:[],handlerType:a.SOL_INSTRUCTION}))})}};var f=h(m(),1),B=class{server;constructor(e){this.server=e}testTrace(e,t=f.EthChainId.ETHEREUM){return this.testTraces([e],t)}testTraces(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildTraceBinding(r,t);if(!s)throw Error("Invalid test trace: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildTraceBinding(e,t=f.EthChainId.ETHEREUM){if(e.type!=="call"||!e.action.input)throw Error("Invalid test trace: "+JSON.stringify(e));let n=e.action.input.slice(0,10);for(let r of this.server.contractConfigs)if(r.contract?.chainId===t&&!(e.action.to?.toLowerCase()!==r.contract?.address.toLowerCase()&&r.contract?.address!=="*")){for(let s of r.traceConfigs)if(s.signature==n)return{data:{ethTrace:{trace:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.ETH_TRACE}}}testLog(e,t=f.EthChainId.ETHEREUM){return this.testLogs([e],t)}testLogs(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildLogBinding(r,t);if(!s)throw Error("Invalid test log: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildLogBinding(e,t=f.EthChainId.ETHEREUM){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t&&!(e.address.toLowerCase()!==n.contract?.address.toLowerCase()&&n.contract?.address!=="*"))for(let r of n.logConfigs)for(let s of r.filters){let o=!0;for(let c in s.topics){let d=e.topics[c],l=s.topics[c].hashes;if(l.length!==0&&!l.find(p=>p.toLowerCase()===d.toLowerCase())){o=!1;break}}if(o)return{data:{ethLog:{log:e,timestamp:new Date}},handlerIds:[r.handlerId],handlerType:a.ETH_LOG}}}testAccountLog(e,t,n=f.EthChainId.ETHEREUM){return this.testAccountLogs(e,[t],n)}testAccountLogs(e,t,n=f.EthChainId.ETHEREUM){let r=[];for(let s of t){let o=this.buildAccountLogBinding(e,s,n);if(!o)throw Error("Invalid test log: "+JSON.stringify(s));r.push(o)}return this.server.processBindings({bindings:r})}buildAccountLogBinding(e,t,n=f.EthChainId.ETHEREUM){for(let r of this.server.accountConfigs)if(r.chainId===n&&e.toLowerCase()===r.address.toLowerCase())for(let s of r.logConfigs)for(let o of s.filters){let c=!0;for(let d in o.topics){let l=t.topics[d],p=o.topics[d].hashes;if(p.length!==0&&!p.find(w=>w.toLowerCase()===l.toLowerCase())){c=!1;break}}if(c)return{data:{ethLog:{log:t,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.ETH_LOG}}}testBlock(e,t=f.EthChainId.ETHEREUM){return this.testBlocks([e],t)}testBlocks(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildBlockBinding(r,t);if(!s)throw Error("Invalid test block: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildBlockBinding(e,t=f.EthChainId.ETHEREUM){let n={data:{ethBlock:{block:e}},handlerType:a.ETH_BLOCK,handlerIds:[]};for(let r of this.server.contractConfigs){if(r.contract?.chainId!==t)continue;let s=e.number;if(!(s<r.startBlock)&&!(r.endBlock!==0n&&s>=r.endBlock))for(let o of r.intervalConfigs)n.handlerIds.push(o.handlerId)}return n}};var S=class{server;constructor(e){this.server=e}testEntryFunctionCall(e,t=g.MAIN_NET){return this.testEntryFunctionCalls([e],t)}testEntryFunctionCalls(e,t=g.MAIN_NET){let n=[];for(let r of e){let s=this.buildEntryFunctionCallBinding(r,t);if(!s)throw Error("Invalid test transaction: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildEntryFunctionCallBinding(e,t=g.MAIN_NET){let n=_(e);for(let r of n){let s=[u(r.package),r.module,r.function].join(D);for(let o of this.server.contractConfigs)if(o.contract?.chainId===t){for(let c of o.moveCallConfigs)for(let d of c.filters)if(u(o.contract.address)+"::"+d.function===s)return{data:{suiCall:{transaction:e,timestamp:new Date,slot:10000n}},handlerIds:[c.handlerId],handlerType:a.SUI_CALL}}}}testEvent(e,t=g.MAIN_NET){let n=this.buildEventBinding(e,t);if(!n)throw Error("Invalid test event: "+JSON.stringify(e));return this.server.processBinding(n)}testGlobalTransaction(e,t=g.MAIN_NET){let n=[];for(let s of this.server.contractConfigs)if(s.contract?.address==="*")for(let o of s.moveCallConfigs)o.filters.length===1&&o.filters[0].function===""&&n.push(o.handlerId);if(n.length===0)throw Error("Invalid test global transaction: "+JSON.stringify(e));let r={handlerIds:n,handlerType:a.SUI_CALL,data:{suiCall:{transaction:e,timestamp:e.timestampMs?new Date(e.timestampMs):new Date,slot:BigInt(e.checkpoint||0)}}};return this.server.processBinding(r)}buildEventBinding(e,t=g.MAIN_NET){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t){for(let r of n.moveEventConfigs)for(let s of r.filters)for(let o of e.events||[])if(u(n.contract.address)+"::"+s.type===E(o.type).qname)return{data:{suiEvent:{transaction:e,timestamp:new Date(e.timestampMs||0),slot:10000n}},handlerIds:[r.handlerId],handlerType:a.SUI_EVENT}}}};var N=class{server;constructor(e){this.server=e}testOnTransaction(e,t=F.TEST_NET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test transaction: "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t){for(let s of r.fuelCallConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL},c=s.filters[0]?.function;if(c)for(let d of e.status.receipts||[])d.receiptType=="CALL"&&d.param1==c&&n.push(o);else n.push(o)}for(let s of r.fuelLogConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL},c=s.logIds;for(let d of e.status.receipts||[])if((d.receiptType=="LOG"||d.receiptType=="LOG_DATA")&&c.includes(d.rb)){n.push(o);break}}for(let s of r.assetConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL};n.push(o)}}return n}};var R=h(m(),1),x={INJECTIVE_MAINNET:R.CosmosChainId.INJECTIVE_MAINNET,INJECTIVE_TESTNET:R.CosmosChainId.INJECTIVE_TESTNET};var P=class{server;constructor(e){this.server=e}testOnTransaction(e,t=x.INJECTIVE_TESTNET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test transaction: "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t)for(let s of r.cosmosLogConfigs){let o={data:{cosmosCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.COSMOS_CALL},c=s.logFilters;for(let d of e.logs||[])if(d.events.find(l=>c.includes(l.type))){n.push(o);break}}return n}};var O=h(m(),1),y=class{server;constructor(e){this.server=e}testOnEvents(e,t=O.StarknetChainId.STARKNET_SEPOLIA){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test : "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[],r=Array.isArray(e)?e:[e];for(let s of r)for(let o of this.server.contractConfigs)if(o.contract?.chainId===t)for(let c of o.starknetEventConfigs){let d={data:{starknetEvents:{result:s,timestamp:new Date}},handlerIds:[c.handlerId],handlerType:a.STARKNET_EVENT},l=c.filters,p=s.keys;for(let w of p)for(let J of l)if(J.keys.includes(w))return n.push(d),n}return n}};var H=h(m(),1);var b=class{server;constructor(e){this.server=e}testOnTransactions(e,t=H.BTCChainId.BTC_TESTNET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test : "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t)for(let s of r.btcTransactionConfigs){let o={data:{btcTransaction:e},handlerIds:[s.handlerId],handlerType:a.BTC_TRANSACTION};n.push(o)}return n}};var C={};function K(){j.reset()}var k=class{service;contractConfigs;accountConfigs;aptos;eth;solana;sui;fuel;cosmos;starknet;btc;constructor(e,t={}){K(),this.service=new G(e),this.aptos=new I(this),this.solana=new v(this),this.eth=new B(this),this.sui=new S(this),this.fuel=new N(this),this.cosmos=new P(this),this.starknet=new y(this),this.btc=new b(this);for(let n in U.CHAIN_MAP){let r=t[n]||"";q.INSTANCE.chainServer.set(n,r)}}async start(e={templateInstances:[]},t=C){let n=await this.service.start(e,t),r=await this.getConfig({});return this.contractConfigs=r.contractConfigs,this.accountConfigs=r.accountConfigs,n}stop(e,t=C){return this.service.stop(e,t)}getConfig(e,t=C){return this.service.getConfig(e,t)}processBindings(e,t=C){return this.service.processBindings(e,t)}processBinding(e,t=C){return this.service.processBindings({bindings:[e]},t)}processBindingsStream(e,t){throw new Error("Method not implemented.")}preprocessBindingsStream(e,t){throw new Error("Method not implemented.")}};function A(i){if(i!==void 0){if(i.doubleValue!==void 0)return i.doubleValue;if(i.bigInteger!==void 0){let e=M(i.bigInteger.data);return i.bigInteger.negative&&(e=-e),e}if(i.bigDecimal!==void 0)return new L(i.bigDecimal)}}function X(i,e){if(i){for(let t of i.counters)if(t.metadata?.name===e)return A(t.metricValue)}}function z(i,e){if(i){for(let t of i.gauges)if(t.metadata?.name===e)return A(t.metricValue)}}var V=h(m(),1);import{Endpoints as Q}from"@sentio/runtime";function W(i){let e=[];Array.isArray(i)||(i=[i]);for(let t of Object.keys(V.CHAIN_MAP)){let n="TEST_ENDPOINT_"+t,r=process.env[n];r&&(e.push(t),Q.INSTANCE.chainServer.set(t,r))}for(let t of i)if(!e.includes(t))return!1;return!0}export{A as MetricValueToNumber,k as TestProcessorServer,X as firstCounterValue,z as firstGaugeValue,W as loadTestProvidersFromEnv};
|
|
2
|
+
import{b as F}from"../chunk-BY3NP62H.js";import"../chunk-3AEWKTHO.js";import{g as _}from"../chunk-JEAW5KKT.js";import"../chunk-LDCEM6PZ.js";import"../chunk-ZGALPNQV.js";import{f as g}from"../chunk-ZDHGKRIS.js";import"../chunk-GTPT4243.js";import{c as T}from"../chunk-ZY643Q3A.js";import"../chunk-3FX7DHPT.js";import"../chunk-SSMP6EWG.js";import"../chunk-F2HFFA4Z.js";import"../chunk-NHARQGR7.js";import"../chunk-PE6MZT4O.js";import{d as M}from"../chunk-GORIGKSL.js";import"../chunk-PNA6LFOX.js";import"../chunk-ZIGQO7R5.js";import{a as D,d as u,n as E}from"../chunk-4TVQXTHY.js";import"../chunk-7SE2IH73.js";import"../chunk-ECTPH53D.js";import"../chunk-MGWHCJHO.js";import"../chunk-2GOCSOX5.js";import{a as m}from"../chunk-7HVQTJAO.js";import{D as a}from"../chunk-TO35Z22E.js";import"../chunk-SBU7XQ42.js";import"../chunk-PLLN42GP.js";import"../chunk-NMFPLO65.js";import"../chunk-K6FJLTBX.js";import"../chunk-GQE2JYJW.js";import"../chunk-DJQ5RDDN.js";import{a as L}from"../chunk-FC546GTB.js";import{e as h}from"../chunk-LLHU72AA.js";var U=h(m(),1);import{Endpoints as q,ProcessorServiceImpl as G,State as j}from"@sentio/runtime";var I=class{server;constructor(e){this.server=e}testEntryFunctionCall(e,t=T.MAIN_NET){return this.testEntryFunctionCalls([e],t)}testEntryFunctionCalls(e,t=T.MAIN_NET){let n=[];for(let r of e){let s=this.buildEntryFunctionCallBinding(r,t);if(!s)throw Error("Invalid test transaction: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildEntryFunctionCallBinding(e,t=T.MAIN_NET){let n=e.payload;for(let r of this.server.contractConfigs)if(r.contract?.chainId===t){for(let s of r.moveCallConfigs)for(let o of s.filters)if(u(r.contract.address)+"::"+o.function===n.function)return{data:{aptCall:{transaction:e}},handlerIds:[s.handlerId],handlerType:a.APT_CALL}}}testEvent(e,t=T.MAIN_NET){let n=this.buildEventBinding(e,t);if(!n)throw Error("Invalid test event: "+JSON.stringify(e));return this.server.processBinding(n)}buildEventBinding(e,t=T.MAIN_NET){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t){for(let r of n.moveEventConfigs)for(let s of r.filters)for(let o of e.events)if(u(n.contract.address)+"::"+s.type===E(o.type).qname)return{data:{aptEvent:{transaction:e}},handlerIds:[r.handlerId],handlerType:a.APT_EVENT}}}};var v=class{server;constructor(e){this.server=e}testInstructions(e){return this.server.processBindings({bindings:e.map(t=>({data:{raw:new Uint8Array,solInstruction:t},handlerIds:[],handlerType:a.SOL_INSTRUCTION}))})}};var f=h(m(),1),B=class{server;constructor(e){this.server=e}testTrace(e,t=f.EthChainId.ETHEREUM){return this.testTraces([e],t)}testTraces(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildTraceBinding(r,t);if(!s)throw Error("Invalid test trace: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildTraceBinding(e,t=f.EthChainId.ETHEREUM){if(e.type!=="call"||!e.action.input)throw Error("Invalid test trace: "+JSON.stringify(e));let n=e.action.input.slice(0,10);for(let r of this.server.contractConfigs)if(r.contract?.chainId===t&&!(e.action.to?.toLowerCase()!==r.contract?.address.toLowerCase()&&r.contract?.address!=="*")){for(let s of r.traceConfigs)if(s.signature==n)return{data:{ethTrace:{trace:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.ETH_TRACE}}}testLog(e,t=f.EthChainId.ETHEREUM){return this.testLogs([e],t)}testLogs(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildLogBinding(r,t);if(!s)throw Error("Invalid test log: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildLogBinding(e,t=f.EthChainId.ETHEREUM){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t&&!(e.address.toLowerCase()!==n.contract?.address.toLowerCase()&&n.contract?.address!=="*"))for(let r of n.logConfigs)for(let s of r.filters){let o=!0;for(let c in s.topics){let d=e.topics[c],l=s.topics[c].hashes;if(l.length!==0&&!l.find(p=>p.toLowerCase()===d.toLowerCase())){o=!1;break}}if(o)return{data:{ethLog:{log:e,timestamp:new Date}},handlerIds:[r.handlerId],handlerType:a.ETH_LOG}}}testAccountLog(e,t,n=f.EthChainId.ETHEREUM){return this.testAccountLogs(e,[t],n)}testAccountLogs(e,t,n=f.EthChainId.ETHEREUM){let r=[];for(let s of t){let o=this.buildAccountLogBinding(e,s,n);if(!o)throw Error("Invalid test log: "+JSON.stringify(s));r.push(o)}return this.server.processBindings({bindings:r})}buildAccountLogBinding(e,t,n=f.EthChainId.ETHEREUM){for(let r of this.server.accountConfigs)if(r.chainId===n&&e.toLowerCase()===r.address.toLowerCase())for(let s of r.logConfigs)for(let o of s.filters){let c=!0;for(let d in o.topics){let l=t.topics[d],p=o.topics[d].hashes;if(p.length!==0&&!p.find(w=>w.toLowerCase()===l.toLowerCase())){c=!1;break}}if(c)return{data:{ethLog:{log:t,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.ETH_LOG}}}testBlock(e,t=f.EthChainId.ETHEREUM){return this.testBlocks([e],t)}testBlocks(e,t=f.EthChainId.ETHEREUM){let n=[];for(let r of e){let s=this.buildBlockBinding(r,t);if(!s)throw Error("Invalid test block: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildBlockBinding(e,t=f.EthChainId.ETHEREUM){let n={data:{ethBlock:{block:e}},handlerType:a.ETH_BLOCK,handlerIds:[]};for(let r of this.server.contractConfigs){if(r.contract?.chainId!==t)continue;let s=e.number;if(!(s<r.startBlock)&&!(r.endBlock!==0n&&s>=r.endBlock))for(let o of r.intervalConfigs)n.handlerIds.push(o.handlerId)}return n}};var S=class{server;constructor(e){this.server=e}testEntryFunctionCall(e,t=g.MAIN_NET){return this.testEntryFunctionCalls([e],t)}testEntryFunctionCalls(e,t=g.MAIN_NET){let n=[];for(let r of e){let s=this.buildEntryFunctionCallBinding(r,t);if(!s)throw Error("Invalid test transaction: "+JSON.stringify(r));n.push(s)}return this.server.processBindings({bindings:n})}buildEntryFunctionCallBinding(e,t=g.MAIN_NET){let n=_(e);for(let r of n){let s=[u(r.package),r.module,r.function].join(D);for(let o of this.server.contractConfigs)if(o.contract?.chainId===t){for(let c of o.moveCallConfigs)for(let d of c.filters)if(u(o.contract.address)+"::"+d.function===s)return{data:{suiCall:{transaction:e,timestamp:new Date,slot:10000n}},handlerIds:[c.handlerId],handlerType:a.SUI_CALL}}}}testEvent(e,t=g.MAIN_NET){let n=this.buildEventBinding(e,t);if(!n)throw Error("Invalid test event: "+JSON.stringify(e));return this.server.processBinding(n)}testGlobalTransaction(e,t=g.MAIN_NET){let n=[];for(let s of this.server.contractConfigs)if(s.contract?.address==="*")for(let o of s.moveCallConfigs)o.filters.length===1&&o.filters[0].function===""&&n.push(o.handlerId);if(n.length===0)throw Error("Invalid test global transaction: "+JSON.stringify(e));let r={handlerIds:n,handlerType:a.SUI_CALL,data:{suiCall:{transaction:e,timestamp:e.timestampMs?new Date(e.timestampMs):new Date,slot:BigInt(e.checkpoint||0)}}};return this.server.processBinding(r)}buildEventBinding(e,t=g.MAIN_NET){for(let n of this.server.contractConfigs)if(n.contract?.chainId===t){for(let r of n.moveEventConfigs)for(let s of r.filters)for(let o of e.events||[])if(u(n.contract.address)+"::"+s.type===E(o.type).qname)return{data:{suiEvent:{transaction:e,timestamp:new Date(e.timestampMs||0),slot:10000n}},handlerIds:[r.handlerId],handlerType:a.SUI_EVENT}}}};var N=class{server;constructor(e){this.server=e}testOnTransaction(e,t=F.TEST_NET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test transaction: "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t){for(let s of r.fuelCallConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL},c=s.filters[0]?.function;if(c)for(let d of e.status.receipts||[])d.receiptType=="CALL"&&d.param1==c&&n.push(o);else n.push(o)}for(let s of r.fuelLogConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL},c=s.logIds;for(let d of e.status.receipts||[])if((d.receiptType=="LOG"||d.receiptType=="LOG_DATA")&&c.includes(d.rb)){n.push(o);break}}for(let s of r.assetConfigs){let o={data:{fuelCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.FUEL_CALL};n.push(o)}}return n}};var R=h(m(),1),x={INJECTIVE_MAINNET:R.CosmosChainId.INJECTIVE_MAINNET,INJECTIVE_TESTNET:R.CosmosChainId.INJECTIVE_TESTNET};var P=class{server;constructor(e){this.server=e}testOnTransaction(e,t=x.INJECTIVE_TESTNET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test transaction: "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t)for(let s of r.cosmosLogConfigs){let o={data:{cosmosCall:{transaction:e,timestamp:new Date}},handlerIds:[s.handlerId],handlerType:a.COSMOS_CALL},c=s.logFilters;for(let d of e.logs||[])if(d.events.find(l=>c.includes(l.type))){n.push(o);break}}return n}};var O=h(m(),1),y=class{server;constructor(e){this.server=e}testOnEvents(e,t=O.StarknetChainId.STARKNET_SEPOLIA){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test : "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[],r=Array.isArray(e)?e:[e];for(let s of r)for(let o of this.server.contractConfigs)if(o.contract?.chainId===t)for(let c of o.starknetEventConfigs){let d={data:{starknetEvents:{result:s,timestamp:new Date}},handlerIds:[c.handlerId],handlerType:a.STARKNET_EVENT},l=c.filters,p=s.keys;for(let w of p)for(let J of l)if(J.keys.includes(w))return n.push(d),n}return n}};var H=h(m(),1);var b=class{server;constructor(e){this.server=e}testOnTransactions(e,t=H.BTCChainId.BTC_TESTNET){let n=this.buildBinding(e,t);if(!n)throw Error("Invalid test : "+JSON.stringify(e));return this.server.processBindings({bindings:n})}buildBinding(e,t){let n=[];for(let r of this.server.contractConfigs)if(r.contract?.chainId===t)for(let s of r.btcTransactionConfigs){let o={data:{btcTransaction:e},handlerIds:[s.handlerId],handlerType:a.BTC_TRANSACTION};n.push(o)}return n}};var C={};function K(){j.reset()}var k=class{service;contractConfigs;accountConfigs;aptos;eth;solana;sui;fuel;cosmos;starknet;btc;constructor(e,t={}){K(),this.service=new G(e),this.aptos=new I(this),this.solana=new v(this),this.eth=new B(this),this.sui=new S(this),this.fuel=new N(this),this.cosmos=new P(this),this.starknet=new y(this),this.btc=new b(this);for(let n in U.CHAIN_MAP){let r=t[n]||"";q.INSTANCE.chainServer.set(n,r)}}async start(e={templateInstances:[]},t=C){let n=await this.service.start(e,t),r=await this.getConfig({});return this.contractConfigs=r.contractConfigs,this.accountConfigs=r.accountConfigs,n}stop(e,t=C){return this.service.stop(e,t)}getConfig(e,t=C){return this.service.getConfig(e,t)}processBindings(e,t=C){return this.service.processBindings(e,t)}processBinding(e,t=C){return this.service.processBindings({bindings:[e]},t)}processBindingsStream(e,t){throw new Error("Method not implemented.")}preprocessBindingsStream(e,t){throw new Error("Method not implemented.")}};function A(i){if(i!==void 0){if(i.doubleValue!==void 0)return i.doubleValue;if(i.bigInteger!==void 0){let e=M(i.bigInteger.data);return i.bigInteger.negative&&(e=-e),e}if(i.bigDecimal!==void 0)return new L(i.bigDecimal)}}function X(i,e){if(i){for(let t of i.counters)if(t.metadata?.name===e)return A(t.metricValue)}}function z(i,e){if(i){for(let t of i.gauges)if(t.metadata?.name===e)return A(t.metricValue)}}var V=h(m(),1);import{Endpoints as Q}from"@sentio/runtime";function W(i){let e=[];Array.isArray(i)||(i=[i]);for(let t of Object.keys(V.CHAIN_MAP)){let n="TEST_ENDPOINT_"+t,r=process.env[n];r&&(e.push(t),Q.INSTANCE.chainServer.set(t,r))}for(let t of i)if(!e.includes(t))return!1;return!0}export{A as MetricValueToNumber,k as TestProcessorServer,X as firstCounterValue,z as firstGaugeValue,W as loadTestProvidersFromEnv};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentio/sdk-bundle",
|
|
3
|
-
"version": "2.42.0-rc.
|
|
3
|
+
"version": "2.42.0-rc.8",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"!{lib,src}/*/tests"
|
|
49
49
|
],
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@sentio/runtime": "^2.42.0-rc.
|
|
51
|
+
"@sentio/runtime": "^2.42.0-rc.8"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {},
|
|
54
54
|
"devDependencies": {},
|
package/src/btc/filter.ts
CHANGED
|
@@ -2,7 +2,9 @@ import {
|
|
|
2
2
|
BTCTransactionFilter,
|
|
3
3
|
BTCTransactionFilter_Condition,
|
|
4
4
|
BTCTransactionFilter_Filter,
|
|
5
|
-
|
|
5
|
+
BTCTransactionFilter_Filters,
|
|
6
|
+
BTCTransactionFilter_VinFilter,
|
|
7
|
+
BTCTransactionFilter_VOutFilter
|
|
6
8
|
} from '@sentio/protos'
|
|
7
9
|
import { serializeRichValue } from '../store/util.js'
|
|
8
10
|
import { BigDecimal } from '@sentio/bigdecimal'
|
|
@@ -65,8 +67,9 @@ export type TransactionFilters = TransactionFilter | TransactionFilter[]
|
|
|
65
67
|
|
|
66
68
|
function toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {
|
|
67
69
|
if (inputFilter) {
|
|
70
|
+
const ret = BTCTransactionFilter_VinFilter.create()
|
|
68
71
|
const filters = []
|
|
69
|
-
const vouts = []
|
|
72
|
+
const vouts: Filter<VOutFields>[] = []
|
|
70
73
|
const txs: TransactionFilters = []
|
|
71
74
|
|
|
72
75
|
for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {
|
|
@@ -79,27 +82,35 @@ function toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilte
|
|
|
79
82
|
txs.push(preTransaction)
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
85
|
+
ret.filters = BTCTransactionFilter_Filters.create({
|
|
86
|
+
filters: convertFilters(filters)
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
if (vouts.length > 0) {
|
|
90
|
+
const voutFilters = convertFilters(vouts)
|
|
91
|
+
if (voutFilters && voutFilters.length > 0) {
|
|
92
|
+
ret.preVOut = voutFilters[0]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (txs.length > 0) {
|
|
96
|
+
ret.preTransaction = filters2Proto(txs)?.[0]
|
|
93
97
|
}
|
|
98
|
+
|
|
99
|
+
return ret
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
return undefined
|
|
97
103
|
}
|
|
98
104
|
|
|
99
|
-
function toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]) {
|
|
105
|
+
function toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]): BTCTransactionFilter_VOutFilter | undefined {
|
|
100
106
|
if (outputFilter) {
|
|
107
|
+
const ret = BTCTransactionFilter_VOutFilter.create()
|
|
101
108
|
const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])
|
|
102
|
-
|
|
109
|
+
ret.filters = BTCTransactionFilter_Filters.create({
|
|
110
|
+
filters: convertFilters(filters)
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
return ret
|
|
103
114
|
}
|
|
104
115
|
return undefined
|
|
105
116
|
}
|
|
@@ -116,7 +127,7 @@ export function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[
|
|
|
116
127
|
}
|
|
117
128
|
|
|
118
129
|
function toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {
|
|
119
|
-
const ret: BTCTransactionFilter_Condition =
|
|
130
|
+
const ret: BTCTransactionFilter_Condition = BTCTransactionFilter_Condition.create()
|
|
120
131
|
if (value instanceof Date) {
|
|
121
132
|
ret.eq = serializeRichValue(value)
|
|
122
133
|
}
|
|
@@ -178,9 +189,7 @@ function convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransa
|
|
|
178
189
|
if (filters && filters.length > 0) {
|
|
179
190
|
const ret: BTCTransactionFilter_Filter[] = []
|
|
180
191
|
for (const filter of filters) {
|
|
181
|
-
const f: BTCTransactionFilter_Filter =
|
|
182
|
-
conditions: {}
|
|
183
|
-
}
|
|
192
|
+
const f: BTCTransactionFilter_Filter = BTCTransactionFilter_Filter.create()
|
|
184
193
|
for (const [key, value] of Object.entries(filter)) {
|
|
185
194
|
f.conditions[key] = toCondition(value as any)
|
|
186
195
|
}
|
|
@@ -188,5 +197,5 @@ function convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransa
|
|
|
188
197
|
}
|
|
189
198
|
return ret
|
|
190
199
|
}
|
|
191
|
-
return
|
|
200
|
+
return []
|
|
192
201
|
}
|
package/lib/chunk-PEB2BU4O.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { createRequire as createRequireSdkShim } from 'module'; const require = createRequireSdkShim(import.meta.url);
|
|
2
|
-
import{D as m,Lc as A,W as C,bd as o,fd as _,kd as x,tc as y}from"./chunk-TO35Z22E.js";import{a as F}from"./chunk-FC546GTB.js";import{e as B,g as b}from"./chunk-LLHU72AA.js";var d=class extends _{constructor(e,n,s,i){super({});this.chainId=e;this.name=n;this.tx=s;this.address=i}getMetaDataInternal(e,n){return{address:this.address,contractName:this.name,blockNumber:BigInt(this.tx.block_number??0),transactionIndex:0,transactionHash:this.tx.transaction_hash,chainId:this.getChainId(),name:e,logIndex:0,labels:y(n)}}getChainId(){return this.chainId}};import{ListStateStorage as I}from"@sentio/runtime";var g=class extends I{},l=g;b(l,"INSTANCE",new g);var p=class{constructor(t){this.config=t}callHandlers=[];static bind(t){let e=new p(t);return l.INSTANCE.addValue(e),e}onTransaction(t,e){let n={handler:async s=>{let i=s.transaction,a=new d(this.config.chainId,this.config.name??this.config.address??"",i,this.config.address??i.vout[0].script_address);return await t(i,a),a.stopAndGetResult()},filter:e};return this.callHandlers.push(n),this}};function k(r){if(r){let t=[],e=[],n=[];for(let i of Array.isArray(r)?r:[r]){let{preVOut:a,preTransaction:h,...V}=i;t.push(V),a&&e.push(a),h&&n.push(h)}let s=u(t);return{filters:s?{filters:s}:void 0,preVOut:e?.length>0?u(e)?.[0]:void 0,preTransaction:n.length>0?f(n)?.[0]:void 0}}}function O(r){if(r){let t=Array.isArray(r)?r:[r];return u(t)?.[0]}}function f(r){return(Array.isArray(r)?r:[r]).map(e=>({filter:u(e.filter),inputFilter:k(e.inputFilter),outputFilter:O(e.outputFilter)}))}function P(r){let t={};r instanceof Date&&(t.eq=o(r)),typeof r=="number"&&(t.eq=o(r)),typeof r=="string"&&(t.eq=o(r)),r instanceof F&&(t.eq=o(r)),typeof r=="bigint"&&(t.eq=o(r)),typeof r=="boolean"&&(t.eq=o(r)),Array.isArray(r)&&(t.in={values:r.map(e=>o(e))});for(let[e,n]of Object.entries(r))switch(e){case"prefix":case"contains":case"notContains":t[e]=n.toString();break;case"length":t.lengthEq=n;break;case"lengthGt":case"lengthLt":t[e]=n;break;case"hasAny":case"hasAll":case"in":t[e]={values:n.map(s=>o(s))};break;case"eq":case"gt":case"gte":case"lt":case"lte":case"ne":t[e]=o(n);break;default:throw new Error("Unknown condition op: "+e)}return t}function u(r){if(r&&r.length>0){let t=[];for(let e of r){let n={conditions:{}};for(let[s,i]of Object.entries(e))n.conditions[s]=P(i);t.push(n)}return t}}import{errorString as N,GLOBAL_CONFIG as R,mergeProcessResults as w,Plugin as D,PluginManager as S,USER_PROCESSOR as H}from"@sentio/runtime";var c=B(A(),1);var T=class extends D{name="BTCPlugin";handlers={txHandlers:[]};async configure(t){let e={txHandlers:[]};for(let n of l.INSTANCE.getValues()){let s=C.fromPartial({processorType:H,contract:{name:n.config.name,chainId:n.config.chainId.toString(),address:n.config.address||"*",abi:""},startBlock:n.config.startBlock,endBlock:n.config.endBlock});for(let i of n.callHandlers){let a=e.txHandlers.push(i.handler)-1;i.filter?s.btcTransactionConfigs.push({filters:f(i.filter),handlerId:a}):s.contract?.address!="*"&&s.btcTransactionConfigs.push({filters:f({outputFilter:{script_address:n.config.address}}),handlerId:a})}t.contractConfigs.push(s)}this.handlers=e}supportedHandlers=[m.BTC_TRANSACTION];processBinding(t){switch(t.handlerType){case m.BTC_TRANSACTION:return this.processTransaction(t);default:throw new c.ServerError(c.Status.INVALID_ARGUMENT,"No handle type registered "+t.handlerType)}}async start(t){}stateDiff(t){return x.INSTANCE.getValues().length!==t.templateInstances.length}async processTransaction(t){if(!t.data?.btcTransaction)throw new c.ServerError(c.Status.INVALID_ARGUMENT,"BTCEvents can't be null");let e=[],n=t.data?.btcTransaction;for(let s of t.handlerIds){let i=this.handlers.txHandlers[s](t.data?.btcTransaction).catch(a=>{throw new c.ServerError(c.Status.INTERNAL,"error processing transaction: "+JSON.stringify(n)+`
|
|
3
|
-
`+N(a))});R.execution.sequential&&await i,e.push(i)}return w(await Promise.all(e))}};S.INSTANCE.register(new T);export{d as a,l as b,p as c,f as d,T as e};
|
|
4
|
-
//# sourceMappingURL=chunk-PEB2BU4O.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/btc/types.ts","../src/btc/btc-processor.ts","../src/btc/filter.ts","../src/btc/btc-plugin.ts"],"sourcesContent":["import { BaseContext, Labels, normalizeLabels } from '../core/index.js'\nimport { RecordMetaData } from '@sentio/protos'\nimport { ChainId } from '@sentio/chain'\n\nexport type Vin = {\n vin_index: number\n coinbase?: string\n spent_transaction_hash?: string\n spent_output_index?: number\n sequence: number\n witness?: string[]\n script_asm: string\n script_hex: string\n value: number\n addresses?: string[]\n pre_vout?: Vout\n pre_transaction?: Transaction\n}\n\nexport type Vout = {\n value: number\n vout_index: number\n script_asm: string\n script_hex: string\n script_type: string\n script_address: string\n script_reg_sigs: number\n}\n\nexport type Transaction = {\n transaction_hash: string\n transaction_index: number\n block_hash: string\n block_number: number\n block_timestamp: Date\n size: number\n virtual_size: number\n version: number\n lock_time: number\n input_count: number\n output_count: number\n vin: Vin[]\n vout: Vout[]\n}\n\nexport type Block = {\n block_hash: string\n block_number: number\n block_timestamp: Date\n size: number\n stripped_size: number\n weight: number\n version: number\n merkle_root: string\n nonce: number\n bits: string\n difficulty: number\n previous_hash: string\n next_hash: string\n transaction_count: number\n}\n\nexport class BTCContext extends BaseContext {\n constructor(\n readonly chainId: string,\n readonly name: string,\n readonly tx: Transaction,\n readonly address: string\n ) {\n super({})\n }\n\n protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.name,\n blockNumber: BigInt(this.tx.block_number ?? 0),\n transactionIndex: 0,\n transactionHash: this.tx.transaction_hash,\n chainId: this.getChainId(),\n name: name,\n logIndex: 0,\n labels: normalizeLabels(labels)\n }\n }\n\n getChainId(): ChainId {\n return this.chainId as ChainId\n }\n}\n","import { ListStateStorage } from '@sentio/runtime'\nimport { BTCContext, Transaction } from './types.js'\nimport { Data_BTCTransaction, ProcessResult } from '@sentio/protos'\nimport { TransactionFilters } from './filter.js'\n\nexport class BTCProcessorState extends ListStateStorage<BTCProcessor> {\n static INSTANCE = new BTCProcessorState()\n}\n\nexport class BTCProcessor {\n callHandlers: CallHandler<Data_BTCTransaction>[] = []\n\n constructor(readonly config: BTCProcessorConfig) {}\n\n static bind(config: BTCProcessorConfig): BTCProcessor {\n const processor = new BTCProcessor(config)\n BTCProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n public onTransaction(\n handler: (transaction: Transaction, ctx: BTCContext) => void | Promise<void>,\n filter?: TransactionFilters\n ) {\n const callHandler = {\n handler: async (call: Data_BTCTransaction) => {\n const tx = call.transaction as Transaction\n\n const ctx = new BTCContext(\n this.config.chainId,\n this.config.name ?? this.config.address ?? '',\n tx,\n this.config.address ?? tx.vout[0].script_address\n )\n await handler(tx, ctx)\n return ctx.stopAndGetResult()\n },\n filter\n }\n this.callHandlers.push(callHandler)\n return this\n }\n}\n\ninterface BTCProcessorConfig {\n chainId: string\n name?: string\n address?: string\n startBlock?: bigint\n endBlock?: bigint\n}\n\nexport type CallHandler<T> = {\n handler: (call: T) => Promise<ProcessResult>\n filter?: TransactionFilters\n}\n","import {\n BTCTransactionFilter,\n BTCTransactionFilter_Condition,\n BTCTransactionFilter_Filter,\n BTCTransactionFilter_VinFilter\n} from '@sentio/protos'\nimport { serializeRichValue } from '../store/util.js'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { Transaction, Vin, Vout } from './types.js'\n\nexport type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>\n\nexport type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction'>\n\nexport type VOutFields = keyof Vout\n\nexport type Filter<F extends string> = {\n [K in F]?: Condition | Comparable\n}\n\nexport type Condition = {\n eq?: Comparable\n gt?: Comparable\n gte?: Comparable\n lt?: Comparable\n lte?: Comparable\n ne?: Comparable\n // string has the prefix\n prefix?: string\n // string contains\n contains?: string\n notContains?: string\n length?: number\n lengthGt?: number\n lengthLt?: number\n // array contains any of the values\n hasAny?: Array<Comparable>\n // array contains all the values\n hasAll?: Array<Comparable>\n in?: Array<Comparable>\n}\n\nexport type Filters<T extends string> = Filter<T> | Filter<T>[]\n\nexport type VinFilter = Filter<VinFields> & {\n preVOut?: Filter<VOutFields>\n preTransaction?: {\n filter?: Array<Filter<TransactionFields>>\n outputFilter?: Filters<VOutFields>\n // can't have inputFilter here, we can only support one level of nesting\n }\n}\n\nexport type VOutFilter = Filter<VOutFields>\n\nexport type TransactionFilter = {\n inputFilter?: VinFilter | VinFilter[]\n outputFilter?: VOutFilter | VOutFilter[]\n filter?: Array<Filter<TransactionFields>>\n}\n\nexport type Comparable = number | BigDecimal | bigint | Date | string | boolean\n\nexport type TransactionFilters = TransactionFilter | TransactionFilter[]\n\nfunction toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {\n if (inputFilter) {\n const filters = []\n const vouts = []\n const txs: TransactionFilters = []\n\n for (const f of Array.isArray(inputFilter) ? inputFilter : [inputFilter]) {\n const { preVOut, preTransaction, ...rest } = f\n filters.push(rest)\n if (preVOut) {\n vouts.push(preVOut)\n }\n if (preTransaction) {\n txs.push(preTransaction)\n }\n }\n\n const protoFilters = convertFilters(filters)\n\n return {\n filters: protoFilters\n ? {\n filters: protoFilters\n }\n : undefined,\n preVOut: vouts?.length > 0 ? convertFilters(vouts as Filter<VOutFields>[])?.[0] : undefined,\n preTransaction: txs.length > 0 ? filters2Proto(txs)?.[0] : undefined\n }\n }\n\n return undefined\n}\n\nfunction toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]) {\n if (outputFilter) {\n const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])\n return convertFilters(filters)?.[0]\n }\n return undefined\n}\n\nexport function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {\n const filters = Array.isArray(filter) ? filter : [filter]\n return filters.map((f) => {\n return {\n filter: convertFilters(f.filter),\n inputFilter: toVinFilter(f.inputFilter),\n outputFilter: toVOutFilter(f.outputFilter)\n } as BTCTransactionFilter\n })\n}\n\nfunction toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {\n const ret: BTCTransactionFilter_Condition = {}\n if (value instanceof Date) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'number') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'string') {\n ret.eq = serializeRichValue(value)\n }\n if (value instanceof BigDecimal) {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'bigint') {\n ret.eq = serializeRichValue(value)\n }\n if (typeof value === 'boolean') {\n ret.eq = serializeRichValue(value)\n }\n if (Array.isArray(value)) {\n ret.in = { values: value.map((v) => serializeRichValue(v)) }\n }\n\n for (const [k, v] of Object.entries(value)) {\n switch (k) {\n case 'prefix':\n case 'contains':\n case 'notContains':\n ret[k] = v.toString()\n break\n case 'length':\n ret['lengthEq'] = v\n break\n case 'lengthGt':\n case 'lengthLt':\n ret[k] = v\n break\n case 'hasAny':\n case 'hasAll':\n case 'in':\n ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }\n break\n case 'eq':\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n case 'ne':\n ret[k] = serializeRichValue(v)\n break\n default:\n throw new Error('Unknown condition op: ' + k)\n }\n }\n\n return ret\n}\n\nfunction convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {\n if (filters && filters.length > 0) {\n const ret: BTCTransactionFilter_Filter[] = []\n for (const filter of filters) {\n const f: BTCTransactionFilter_Filter = {\n conditions: {}\n }\n for (const [key, value] of Object.entries(filter)) {\n f.conditions[key] = toCondition(value as any)\n }\n ret.push(f)\n }\n return ret\n }\n return undefined\n}\n","import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n ContractConfig,\n Data_BTCTransaction,\n DataBinding,\n HandlerType,\n ProcessConfigResponse,\n ProcessResult,\n StartRequest\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\nimport { TemplateInstanceState } from '../core/template.js'\nimport { BTCProcessorState } from './btc-processor.js'\nimport { filters2Proto, TransactionFilter } from './filter.js'\n\ninterface Handlers {\n txHandlers: ((trace: Data_BTCTransaction) => Promise<ProcessResult>)[]\n}\n\nexport class BTCPlugin extends Plugin {\n name: string = 'BTCPlugin'\n handlers: Handlers = {\n txHandlers: []\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n txHandlers: []\n }\n\n for (const processor of BTCProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n processorType: USER_PROCESSOR,\n contract: {\n name: processor.config.name,\n chainId: processor.config.chainId.toString(),\n address: processor.config.address || '*',\n abi: ''\n },\n startBlock: processor.config.startBlock,\n endBlock: processor.config.endBlock\n })\n for (const callHandler of processor.callHandlers) {\n const handlerId = handlers.txHandlers.push(callHandler.handler) - 1\n\n if (callHandler.filter) {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto(callHandler.filter),\n handlerId\n })\n } else if (contractConfig.contract?.address != '*') {\n contractConfig.btcTransactionConfigs.push({\n filters: filters2Proto({\n outputFilter: {\n script_address: processor.config.address\n }\n } as TransactionFilter),\n handlerId\n })\n }\n }\n\n // Finish up a contract\n config.contractConfigs.push(contractConfig)\n }\n\n this.handlers = handlers\n }\n\n supportedHandlers = [HandlerType.BTC_TRANSACTION]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.BTC_TRANSACTION:\n return this.processTransaction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async start(request: StartRequest) {}\n\n stateDiff(config: ProcessConfigResponse): boolean {\n return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length\n }\n\n async processTransaction(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.btcTransaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"BTCEvents can't be null\")\n }\n\n const promises: Promise<ProcessResult>[] = []\n\n const result = binding.data?.btcTransaction\n\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.txHandlers[handlerId](binding.data?.btcTransaction).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing transaction: ' + JSON.stringify(result) + '\\n' + errorString(e)\n )\n })\n if (GLOBAL_CONFIG.execution.sequential) {\n await promise\n }\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new BTCPlugin())\n"],"mappings":"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","names":["BTCContext","BaseContext","chainId","name","tx","address","labels","normalizeLabels","ListStateStorage","_BTCProcessorState","ListStateStorage","BTCProcessorState","__publicField","BTCProcessor","config","processor","handler","filter","callHandler","call","tx","ctx","BTCContext","toVinFilter","inputFilter","filters","vouts","txs","f","preVOut","preTransaction","rest","protoFilters","convertFilters","filters2Proto","toVOutFilter","outputFilter","filter","toCondition","value","ret","serializeRichValue","BigDecimal","v","k","key","errorString","GLOBAL_CONFIG","mergeProcessResults","Plugin","PluginManager","USER_PROCESSOR","import_nice_grpc","BTCPlugin","Plugin","config","handlers","processor","BTCProcessorState","contractConfig","ContractConfig","USER_PROCESSOR","callHandler","handlerId","filters2Proto","HandlerType","request","TemplateInstanceState","binding","promises","result","promise","e","errorString","GLOBAL_CONFIG","mergeProcessResults","PluginManager"]}
|