@sentio/runtime 3.8.0 → 3.8.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/lib/processor-runner.js
CHANGED
|
@@ -75,7 +75,7 @@ Expecting one of '${a.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
|
|
|
75
75
|
`),this.outputHelp({error:!0}));let a=o||{},s=a.exitCode||1,u=a.code||"commander.error";this._exit(s,u,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in D.env){let o=e.attributeName();(this.getOptionValue(o)===void 0||["default","config","env"].includes(this.getOptionValueSource(o)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,D.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new TP(this.options),o=a=>this.getOptionValue(a)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(a));this.options.filter(a=>a.implied!==void 0&&o(a.attributeName())&&e.valueFromOption(this.getOptionValue(a.attributeName()),a)).forEach(a=>{Object.keys(a.implied).filter(s=>!o(s)).forEach(s=>{this.setOptionValueWithSource(s,a.implied[s],"implied")})})}missingArgument(e){let o=`error: missing required argument '${e}'`;this.error(o,{code:"commander.missingArgument"})}optionMissingArgument(e){let o=`error: option '${e.flags}' argument missing`;this.error(o,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let o=`error: required option '${e.flags}' not specified`;this.error(o,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,o){let a=r=>{let t=r.attributeName(),i=this.getOptionValue(t),c=this.options.find(p=>p.negate&&t===p.attributeName()),l=this.options.find(p=>!p.negate&&t===p.attributeName());return c&&(c.presetArg===void 0&&i===!1||c.presetArg!==void 0&&i===c.presetArg)?c:l||r},s=r=>{let t=a(r),i=t.attributeName();return this.getOptionValueSource(i)==="env"?`environment variable '${t.envVar}'`:`option '${t.flags}'`},u=`error: ${s(e)} cannot be used with ${s(o)}`;this.error(u,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let o="";if(e.startsWith("--")&&this._showSuggestionAfterError){let s=[],u=this;do{let r=u.createHelp().visibleOptions(u).filter(t=>t.long).map(t=>t.long);s=s.concat(r),u=u.parent}while(u&&!u._enablePositionalOptions);o=Ay(e,s)}let a=`error: unknown option '${e}'${o}`;this.error(a,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let o=this.registeredArguments.length,a=o===1?"":"s",u=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${o} argument${a} but got ${e.length}.`;this.error(u,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],o="";if(this._showSuggestionAfterError){let s=[];this.createHelp().visibleCommands(this).forEach(u=>{s.push(u.name()),u.alias()&&s.push(u.alias())}),o=Ay(e,s)}let a=`error: unknown command '${e}'${o}`;this.error(a,{code:"commander.unknownCommand"})}version(e,o,a){if(e===void 0)return this._version;this._version=e,o=o||"-V, --version",a=a||"output the version number";let s=this.createOption(o,a);return this._versionOptionName=s.attributeName(),this._registerOption(s),this.on("option:"+s.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
76
76
|
`),this._exit(0,"commander.version",e)}),this}description(e,o){return e===void 0&&o===void 0?this._description:(this._description=e,o&&(this._argsDescription=o),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let o=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(o=this.commands[this.commands.length-1]),e===o._name)throw new Error("Command alias can't be the same as its name");let a=this.parent?._findCommand(e);if(a){let s=[a.name()].concat(a.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${s}'`)}return o._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(o=>this.alias(o)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let o=this.registeredArguments.map(a=>_P(a));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?o:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=$e.basename(e,$e.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let o=this.createHelp(),a=this._getOutputContext(e);o.prepareContext({error:a.error,helpWidth:a.helpWidth,outputHasColors:a.hasColors});let s=o.formatHelp(this,o);return a.hasColors?s:this._outputConfiguration.stripColor(s)}_getOutputContext(e){e=e||{};let o=!!e.error,a,s,u;return o?(a=t=>this._outputConfiguration.writeErr(t),s=this._outputConfiguration.getErrHasColors(),u=this._outputConfiguration.getErrHelpWidth()):(a=t=>this._outputConfiguration.writeOut(t),s=this._outputConfiguration.getOutHasColors(),u=this._outputConfiguration.getOutHelpWidth()),{error:o,write:t=>(s||(t=this._outputConfiguration.stripColor(t)),a(t)),hasColors:s,helpWidth:u}}outputHelp(e){let o;typeof e=="function"&&(o=e,e=void 0);let a=this._getOutputContext(e),s={error:a.error,write:a.write,command:this};this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",s)),this.emit("beforeHelp",s);let u=this.helpInformation({error:a.error});if(o&&(u=o(u),typeof u!="string"&&!Buffer.isBuffer(u)))throw new Error("outputHelp callback must return a string or a Buffer");a.write(u),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",s),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",s))}helpOption(e,o){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",o??"display help for command"),(e||o)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let o=Number(D.exitCode??0);o===0&&e&&typeof e!="function"&&e.error&&(o=1),this._exit(o,"commander.help","(outputHelp)")}addHelpText(e,o){let a=["beforeAll","before","after","afterAll"];if(!a.includes(e))throw new Error(`Unexpected value for position to addHelpText.
|
|
77
77
|
Expecting one of '${a.join("', '")}'`);let s=`${e}Help`;return this.on(s,u=>{let r;typeof o=="function"?r=o({error:u.error,command:u.command}):r=o,r&&u.write(`${r}
|
|
78
|
-
`)}),this}_outputHelpIfRequested(e){let o=this._getHelpOption();o&&e.find(s=>o.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Oy(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let o,a="127.0.0.1",s="9229",u;return(u=e.match(/^(--inspect(-brk)?)$/))!==null?o=u[1]:(u=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=u[1],/^\d+$/.test(u[3])?s=u[3]:a=u[3]):(u=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=u[1],a=u[3],s=u[4]),o&&s!=="0"?`${o}=${a}:${parseInt(s)+1}`:e})}function bl(){if(D.env.NO_COLOR||D.env.FORCE_COLOR==="0"||D.env.FORCE_COLOR==="false")return!1;if(D.env.FORCE_COLOR||D.env.CLICOLOR_FORCE!==void 0)return!0}Nl.Command=vl;Nl.useColor=bl});var Ry=E(ge=>{"use strict";var{Argument:by}=$s(),{Command:xl}=vy(),{CommanderError:yP,InvalidArgumentError:Ny}=Ln(),{Help:gP}=El(),{Option:xy}=gl();ge.program=new xl;ge.createCommand=n=>new xl(n);ge.createOption=(n,e)=>new xy(n,e);ge.createArgument=(n,e)=>new by(n,e);ge.Command=xl;ge.Option=xy;ge.Argument=by;ge.Help=gP;ge.CommanderError=yP;ge.InvalidArgumentError=Ny;ge.InvalidOptionArgumentError=Ny});var Py=E((de,My)=>{"use strict";var Me=Ry();de=My.exports={};de.program=new Me.Command;de.Argument=Me.Argument;de.Command=Me.Command;de.CommanderError=Me.CommanderError;de.Help=Me.Help;de.InvalidArgumentError=Me.InvalidArgumentError;de.InvalidOptionArgumentError=Me.InvalidArgumentError;de.Option=Me.Option;de.createCommand=n=>new Me.Command(n);de.createOption=(n,e)=>new Me.Option(n,e);de.createArgument=(n,e)=>new Me.Argument(n,e)});var Nr=he(qy(),1),Gy=he(Dl(),1),By=he(Yy(),1);import AP from"http";import{Session as Hy}from"node:inspector/promises";import{fork as OP}from"child_process";import{fileURLToPath as vP}from"url";import ea from"os";import{createHash as $y}from"crypto";var Jl=ht("2.54.0-rc.7"),Ky=ht("2.55.0-rc.1"),Ql=ht("2.55.0-rc.1"),jP=ht("2.57.9-rc.12"),Mr=new Zs({max:1e4}),Zl=process.env.ENABLE_PARSE_CACHE==="true",Xl=new Zs({max:Zl?5e3:1});function Z(n){if(!Zl)return JSON.parse(n);let e=$y("md5").update(n).digest("hex"),o=Xl.get(e);return o||(o=JSON.parse(n),Xl.set(e,o)),o}var Fn=class{sdkVersion;constructor(){let e=Dt("@sentio/sdk");this.sdkVersion=ht(e.version)}adjustDataBinding(e){let o=Ut(this.sdkVersion,Ql)<0;if(e)switch(e.handlerType){case 1:let a=e.data?.ethLog;a?.log==null&&a?.rawLog&&(a.log=JSON.parse(a.rawLog),a.rawTransaction&&(a.transaction=Z(a.rawTransaction)),a.rawBlock&&(a.block=Z(a.rawBlock)),a.rawTransactionReceipt&&(a.transactionReceipt=Z(a.rawTransactionReceipt)));break;case 11:let s=e.data?.ethTransaction;s?.transaction==null&&s?.rawTransaction&&(s.transaction=Z(s.rawTransaction),s.rawBlock?s.block=Z(s.rawBlock):s.block=void 0,s.rawTransactionReceipt?s.transactionReceipt=Z(s.rawTransactionReceipt):s.transactionReceipt=void 0);break;case 2:let u=e.data?.ethBlock;u?.block==null&&u?.rawBlock&&(u.block=Z(u.rawBlock));break;case 5:let r=e.data?.ethTrace;r?.trace==null&&r?.rawTrace&&(r.trace=Z(r.rawTrace),r.rawTransaction&&(r.transaction=Z(r.rawTransaction)),r.rawBlock&&(r.block=Z(r.rawBlock)),r.rawTransactionReceipt&&(r.transactionReceipt=Z(r.rawTransactionReceipt)));break;case 4:let t=e.data?.solInstruction;t?.parsed==null&&t?.rawParsed&&(t.parsed=Z(t.rawParsed));break;case 20:Ut(this.sdkVersion,Jl)<0&&(e.handlerType=13,e.data&&(e.data.fuelCall=e.data?.fuelTransaction));break;case 19:Ut(this.sdkVersion,Jl)<0&&(e.handlerType=13,e.data&&(e.data.fuelCall=e.data?.fuelLog));break;case 6:let i=e.data?.aptEvent;if(i&&o&&i.rawTransaction){let y=Z(i.rawTransaction),A=`${y.hash}-${e.handlerIds[0]}`;if(Mr.has(A)){console.debug("skip binding",A),e.handlerType=0;return}Mr.set(A,!0),i.transaction=y,y.events?.length||(y.events=[JSON.parse(i.rawEvent)])}break;case 7:let c=e.data?.aptCall;c&&o&&c.rawTransaction&&(c.transaction=Z(c.rawTransaction));break;case 8:let l=e.data?.aptResource;l&&o&&l.rawResources&&(l.resources=l.rawResources.map(y=>JSON.parse(y)));break;case 3:let p=e.data?.suiEvent;if(p&&o&&p.rawTransaction){let y=Z(p.rawTransaction),A=`${y.digest}-${e.handlerIds[0]}`;if(Mr.has(A)){console.debug("skip binding",A),e.handlerType=0;return}Mr.set(A,!0),p.transaction=y,y.events?.length||(y.events=[JSON.parse(p.rawEvent)])}break;case 9:let h=e.data?.suiCall;h&&o&&h.rawTransaction&&(h.transaction=Z(h.rawTransaction));break;case 10:let m=e.data?.suiObject;m&&o&&(m.rawSelf||m.rawObjects)&&(m.rawSelf&&(m.self=JSON.parse(m.rawSelf)),m.objects=m.rawObjects.map(y=>JSON.parse(y)));break;case 12:let T=e.data?.suiObjectChange;T&&o&&T.rawChanges&&(T.changes=T.rawChanges.map(y=>JSON.parse(y)));break;case 0:break;default:break}}patchConfig(e){if(e.executionConfig=Il.fromPartial(Gl.execution),e.contractConfigs)for(let o of e.contractConfigs)Ut(this.sdkVersion,Ky)<0&&o.fuelCallConfigs&&(o.fuelTransactionConfigs=o.fuelCallConfigs,o.fuelCallConfigs=void 0),o.fuelLogConfigs&&(o.fuelReceiptConfigs=o.fuelLogConfigs.map(a=>({handlerId:a.handlerId,handlerName:a.handlerName,log:{logIds:a.logIds}}))),o.aptosCallConfigs&&(o.moveCallConfigs=o.aptosCallConfigs),o.aptosEventConfigs&&(o.moveEventConfigs=o.aptosEventConfigs)}},qn=class{constructor(e){this.instance=e;let o=Dt("@sentio/sdk");this.sdkVersion=ht(o.version)}instance;sdkVersion;patcher=new Fn;async getConfig(e,o){let a=await this.instance.getConfig(e,o);return this.patcher.patchConfig(a),Ut(this.sdkVersion,Ql)<0&&Mr.clear(),a}async start(e,o){return await this.instance.start(e,o)}async stop(e,o){return await this.instance.stop(e,o)}async processBindings(e,o){for(let a of e.bindings)this.patcher.adjustDataBinding(a);try{let a=await this.instance.processBindings(e,o);return this.adjustResult(a.result),!a.configUpdated&&a.result?.states?.configUpdated&&(a.configUpdated=a.result?.states?.configUpdated),a}catch(a){throw this.sdkVersion.minor<=16&&(a.code===ea.constants.errno.ECONNRESET||a.code===ea.constants.errno.ECONNREFUSED||a.code===ea.constants.errno.ECONNABORTED)&&process.exit(1),a}}async*adjustBindingsStream(e){for await(let o of e)this.patcher.adjustDataBinding(o.binding),yield o}async*processBindingsStream(e,o){yield*this.instance.processBindingsStream(this.adjustBindingsStream(e),o)}async*preprocessBindingsStream(e,o){yield*this.instance.preprocessBindingsStream(this.adjustBindingsStream(e),o)}adjustResult(e){}},Yn=class{constructor(e){this.instance=e}patcher=new Fn;async start(e,o){return this.instance.start(e,o)}async getConfig(e,o){let a=await this.instance.getConfig(e,o);return this.patcher.patchConfig(a),a}async*processBindingsStream(e,o){yield*this.instance.processBindingsStream(this.adjustBindingsStream(e),o)}async*adjustBindingsStream(e){for await(let o of e)this.patcher.adjustDataBinding(o.binding),yield o}async updateTemplates(e,o){return this.instance.updateTemplates(e,o)}};import("node:process").then(n=>n.stdout.write(""));var xe=he(h_(),1);function m_(n){let e=new WeakSet;return JSON.stringify(n,function(o,a){if(typeof a=="object"&&a!==null){if(e.has(a))return"[Circular]";e.add(a)}return a})}function __(n,e,o){let a={transform:u=>{let r=[];typeof u.message=="object"?r.push(m_(u.message)):r.push(u.message);let t=u[Symbol.for("splat")];if(t)for(let i in t){let c=t[i];typeof c=="object"?r.push(m_(c)):r.push(c)}return u.message=r.join(" "),u}},s=(0,xe.createLogger)({format:xe.format.combine(xe.format.timestamp({format:"YYYY-MM-DDTHH:mm:ss.SSSZ"}),a,xe.format.errors({stack:!0}),n?xe.format.json():xe.format.simple(),xe.format.label({label:o?"worker #{workerId}":""})),level:e?"debug":"info",transports:[new xe.transports.Console]});console.log=(...u)=>s.info.call(s,...u),console.info=(...u)=>s.info.call(s,...u),console.warn=(...u)=>s.warn.call(s,...u),console.error=(...u)=>s.error.call(s,...u),console.debug=(...u)=>s.debug.call(s,...u)}import("node:process").then(n=>n.stdout.write(""));_r();var cl=he(uy(),1),dy=he(fy(),1);C();async function hy(n){console.log("Setting up OTLP metrics, debug=",!!n),n&&g.setLogger(new Fl,Oe.DEBUG);let e=[new Ct({exporter:new cl.OTLPMetricExporter,exportIntervalMillis:6e4})];n&&e.push(new dy.PrometheusExporter({host:"0.0.0.0",port:4041}));let o=new mr({readers:[new Ct({exporter:new cl.OTLPMetricExporter,exportIntervalMillis:6e4})]});Xs.setGlobalMeterProvider(o),["SIGINT","SIGTERM"].forEach(a=>{process.on(a,()=>o.forceFlush().catch(console.error))}),Xs.getMeter("processor").createGauge("up").record(1)}import("node:process").then(n=>n.stdout.write(""));var qs=class{constructor(e){this.loader=e}async listen(e){let o=Be.INSTANCE;await this.loader(),await o.configure(kn.create()),console.log("Starting Action Server at:",e),await o.startServer(e)}forceShutdown(){Be.INSTANCE.shutdown()}};import("node:process").then(n=>n.stdout.write(""));var br=he(Dl(),1);var _y=he(jy(),1);var{process_binding_count:nP,process_binding_time:oP,process_binding_error:iP}=$l,sP=process.env.WRITE_V2_EVENT_LOGS!=="false",my=1e3,Ys=class{enablePartition;loader;shutdownHandler;started=!1;constructor(e,o,a){this.loader=e,this.shutdownHandler=a,this.enablePartition=o?.enablePartition==!0}async start(e,o){if(this.started)return{};Bl();try{await this.loader()}catch(a){throw new br.ServerError(br.Status.INVALID_ARGUMENT,"Failed to load processor: "+Js(a))}return await Be.INSTANCE.start(e),this.started=!0,{}}async getConfig(e,o){if(!this.started)throw new br.ServerError(br.Status.UNAVAILABLE,"Service Not started.");let a=kn.fromPartial({});return await Be.INSTANCE.configure(a),a}async*processBindingsStream(e,o){let a=new _y.Subject;this.handleRequests(e,a).then(()=>{a.complete()}).catch(s=>{console.error(s),a.error(s)}),yield*Vl(a).pipe(kl(o.signal))}async handleRequests(e,o){let a;for await(let s of e)try{s.binding&&(a=s.binding),this.handleRequest(s,a,o)}catch(u){console.error("unexpect error during handle loop",u)}}contexts=new ll;async handleRequest(e,o,a){if(e.binding){if(nP.add(1),e.binding.handlerType===Pl.UNKNOWN){a.next({processId:e.processId,result:wl.create()});return}if(this.enablePartition)try{console.debug("sending partition request",e.binding);let s=await Be.INSTANCE.partition(e.binding);a.next({processId:e.processId,partitions:s})}catch(s){console.error("Partition error:",s),a.error(new Error("Partition error: "+Js(s)));return}else this.startProcess(e.processId,e.binding,a)}if(e.start){if(!o){console.error("start request received without binding"),a.error(new Error("start request received without binding"));return}this.startProcess(e.processId,o,a)}if(e.dbResult){let s=this.contexts.get(e.processId);try{s?.result(e.dbResult)}catch{a.error(new Error("db result error, process should stop"))}}}startProcess(e,o,a){let s=this.contexts.new(e,a),u=Date.now();Be.INSTANCE.processBinding(o,void 0,s).then(async r=>{await s.awaitPendings();let{timeseriesResult:t,...i}=r;for(let c=0;c<t.length;c+=my){let l=t.slice(c,c+my);a.next({processId:e,tsRequest:{data:l}})}a.next({result:sP?i:{states:i.states},processId:e}),zl(r,o.handlerType)}).catch(r=>{console.error(r,r.stack),s.error(e,r),iP.add(1)}).finally(()=>{let r=Date.now()-u;oP.add(r),this.contexts.delete(e)})}async updateTemplates(e,o){return await Be.INSTANCE.updateTemplates(e),{}}},ll=class{contexts=new Map;get(e){return this.contexts.get(e)}new(e,o){let a=new Kl(e,o);return this.contexts.set(e,a),a}delete(e){this.get(e)?.close(),this.contexts.delete(e)}};import("node:process").then(n=>n.stdout.write(""));import{dirname as bP,join as NP}from"path";var wy=he(Py(),1),{program:ak,createCommand:uk,createArgument:ck,createOption:lk,CommanderError:pk,InvalidArgumentError:Cy,InvalidOptionArgumentError:fk,Command:Iy,Argument:dk,Option:hk,Help:mk}=wy.default;var Ly=1;try{Ly=parseInt(process.env.PROCESSOR_WORKER?.trim()??"1")}catch(n){console.error("Failed to parse worker number",n)}function Un(n,e){let o=parseInt(n,10);if(isNaN(o))throw new Cy("Not a number.");return o}var Dn=new Iy("processor-runner").allowUnknownOption().allowExcessArguments().name("processor-runner").description("Sentio Processor Runtime").argument("<target>","Path to the processor module to load").option("-p, --port <port>","Port to listen on","4000").option("--concurrency <number>","Number of concurrent workers(V2 only, deprecated)",Un,4).option("--batch-count <number>","Batch count for processing",Un,1).option("-c, --chains-config <path>","Path to chains configuration file","chains-config.json").option("--chainquery-server <url>","Chain query server URL").option("--pricefeed-server <url>","Price feed server URL").option("--log-format <format>","Log format (console|json)","console").option("--debug","Enable debug mode").option("--otlp-debug","Enable OTLP debug mode").option("--start-action-server","Start action server instead of processor server").option("--worker <number>","Number of processor worker threads ",Un,Ly).option("--process-timeout <seconds>","Process timeout in seconds",Un,60).option("--worker-timeout <seconds>","Worker timeout in seconds",Un,parseInt(process.env.WORKER_TIMEOUT_SECONDS||"60")).option("--enable-partition","Enable binding data partition",process.env.SENTIO_ENABLE_BINDING_DATA_PARTITION==="true");import("node:process").then(n=>n.stdout.write(""));Dn.parse();var te={...Dn.opts(),target:Dn.args[Dn.args.length-1]},xP=process.env.LOG_LEVEL?.toLowerCase(),ft=!1,Uy=!1,Ws=()=>{};__(te.logFormat==="json",xP==="debug"?!0:te.debug);console.debug("Starting with",te.target);await hy(te.otlpDebug);Error.stackTraceLimit=20;Ul(te);console.debug("Starting Server",te);var zs=process.env.IS_CHILD==="true";function Dy(n){zs||(ft=!0,Ws()),process.exit(n)}if(!zs){let n=Dt("@sentio/sdk"),e=Dt("@sentio/runtime");console.log("Runtime version:",e.version,"SDK version:",n.version)}var Ke,xr,Ml,Rl=async()=>{let n=await import(te.target);return console.debug("Module loaded",n),n};if(te.startActionServer)Ke=new qs(Rl),Ke.listen(te.port);else{Ke=(0,Gy.createServer)({"grpc.max_send_message_length":768*1024*1024,"grpc.max_receive_message_length":768*1024*1024}).use(By.errorDetailsServerMiddleware),xr=new Wl(Rl,te,Ke.shutdown);let n=new qn(xr);Ke.add(Ll,n),Ke.add(Cl,new Yn(new Ys(Rl,te,Ke.shutdown))),Ke.listen("0.0.0.0:"+te.port),console.log("Processor Server Started at:",te.port)}if(!zs&&(Ml=AP.createServer(async function(e,o){if(e.url){let a=new URL(e.url,`http://${e.headers.host}`),s=a.searchParams;switch(a.pathname){case"/heap":{try{let u="/tmp/"+Date.now()+".heapsnapshot";await Vy(u);let r=Nr.default.createReadStream(u);o.writeHead(200,{"Content-Type":"application/json"}),r.pipe(o),o.end()}catch{o.writeHead(500),o.end()}break}case"/profile":{try{let u=parseInt(s.get("t")||"1000",10)||1e3,r=new Hy;r.connect(),await r.post("Profiler.enable"),await r.post("Profiler.start"),await new Promise(i=>setTimeout(i,u));let{profile:t}=await r.post("Profiler.stop");o.writeHead(200,{"Content-Type":"application/json"}),o.write(JSON.stringify(t)),r.disconnect()}catch{o.writeHead(500)}break}default:o.writeHead(404)}}else o.writeHead(404);o.end()}).listen(4040),console.log("Metric Server Started at:",4040),process.env.OOM_DUMP_MEMORY_SIZE_GB)){let e=!1,o=parseFloat(process.env.OOM_DUMP_MEMORY_SIZE_GB);console.log("heap dumping is enabled, limit set to ",o,"gb");let a=process.env.OOM_DUMP_DIR||"/tmp";setInterval(async()=>{let s=process.memoryUsage();if(console.log("Current Memory Usage",s),s.heapTotal>o*1024*1024*1024&&!e){let u=NP(a,`${Date.now()}.heapsnapshot`);e=!0,await Vy(u),process.exit(11)}},1e3*60)}process.once("SIGINT",function(){ft||(ft=!0,Ws(),ky(0))}).once("SIGTERM",function(){ft||(ft=!0,Ws(),ky(0))}).on("uncaughtException",n=>{console.error("Uncaught Exception, please checking if await is properly used",n),xr&&(xr.unhandled=n)}).on("unhandledRejection",(n,e)=>{n?.message.startsWith('invalid ENS name (disallowed character: "*"')||(console.error("Unhandled Rejection, please checking if await is properly",n),xr&&(xr.unhandled=n))});async function Vy(n){console.log("Heap dumping to",n);let e=new Hy;Nr.default.mkdirSync(bP(n),{recursive:!0});let o=Nr.default.openSync(n,"w");try{e.connect(),e.on("HeapProfiler.addHeapSnapshotChunk",a=>{Nr.default.writeSync(o,a.params.chunk)}),await e.post("HeapProfiler.takeHeapSnapshot"),console.log("Heap dumped to",n)}finally{e.disconnect(),Nr.default.closeSync(o)}}function ky(n){Ke.forceShutdown(),console.log("RPC server shut down"),Ml?Ml.close(function(){console.log("Http server shut down"),Dy(n)}):Dy(n)}if(te.worker>1&&!zs){let n=new Map,e=new Map,o=parseInt(te.port),a=1e3,s=u=>{let r=process.argv.slice(2),t=["--port="+String(u)];for(let c=0;c<r.length;c++){let l=r[c];if(l==="-p"||l==="--port"){c++;continue}else if(l.startsWith("--port=")||l.startsWith("--inspect="))continue;t.push(l)}let i=OP(vP(import.meta.url),t,{env:{...process.env,IS_CHILD:"true"},stdio:"inherit"});i.on("error",c=>{console.error(`Child process on port ${u} error:`,c)}),i.on("exit",(c,l)=>{if(n.delete(u),console.log(`Child process on port ${u} exited with code ${c}, signal ${l??"none"}`),ft||e.has(u))return;console.log(`Scheduling restart for child process on port ${u} in ${a}ms`);let p=setTimeout(()=>{e.delete(u),!ft&&(console.log(`Restarting child process on port ${u}`),s(u))},a);e.set(u,p)}),n.set(u,i),console.log(`Spawned child server process for port ${u} (pid: ${i.pid})`)};for(let u=1;u<te.worker;u++){let r=o+u;s(r)}Ws=()=>{if(!Uy){Uy=!0,ft=!0;for(let u of e.values())clearTimeout(u);e.clear();for(let u of n.values())u.kill("SIGINT")}}}import("node:process").then(n=>n.stdout.write(""));
|
|
78
|
+
`)}),this}_outputHelpIfRequested(e){let o=this._getHelpOption();o&&e.find(s=>o.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Oy(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let o,a="127.0.0.1",s="9229",u;return(u=e.match(/^(--inspect(-brk)?)$/))!==null?o=u[1]:(u=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=u[1],/^\d+$/.test(u[3])?s=u[3]:a=u[3]):(u=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=u[1],a=u[3],s=u[4]),o&&s!=="0"?`${o}=${a}:${parseInt(s)+1}`:e})}function bl(){if(D.env.NO_COLOR||D.env.FORCE_COLOR==="0"||D.env.FORCE_COLOR==="false")return!1;if(D.env.FORCE_COLOR||D.env.CLICOLOR_FORCE!==void 0)return!0}Nl.Command=vl;Nl.useColor=bl});var Ry=E(ge=>{"use strict";var{Argument:by}=$s(),{Command:xl}=vy(),{CommanderError:yP,InvalidArgumentError:Ny}=Ln(),{Help:gP}=El(),{Option:xy}=gl();ge.program=new xl;ge.createCommand=n=>new xl(n);ge.createOption=(n,e)=>new xy(n,e);ge.createArgument=(n,e)=>new by(n,e);ge.Command=xl;ge.Option=xy;ge.Argument=by;ge.Help=gP;ge.CommanderError=yP;ge.InvalidArgumentError=Ny;ge.InvalidOptionArgumentError=Ny});var Py=E((de,My)=>{"use strict";var Me=Ry();de=My.exports={};de.program=new Me.Command;de.Argument=Me.Argument;de.Command=Me.Command;de.CommanderError=Me.CommanderError;de.Help=Me.Help;de.InvalidArgumentError=Me.InvalidArgumentError;de.InvalidOptionArgumentError=Me.InvalidArgumentError;de.Option=Me.Option;de.createCommand=n=>new Me.Command(n);de.createOption=(n,e)=>new Me.Option(n,e);de.createArgument=(n,e)=>new Me.Argument(n,e)});var Nr=he(qy(),1),Gy=he(Dl(),1),By=he(Yy(),1);import AP from"http";import{Session as Hy}from"node:inspector/promises";import{fork as OP}from"child_process";import{fileURLToPath as vP}from"url";import ea from"os";import{createHash as $y}from"crypto";var Jl=ht("2.54.0-rc.7"),Ky=ht("2.55.0-rc.1"),Ql=ht("2.55.0-rc.1"),jP=ht("2.57.9-rc.12"),Mr=new Zs({max:1e4}),Zl=process.env.ENABLE_PARSE_CACHE==="true",Xl=new Zs({max:Zl?5e3:1});function Z(n){if(!Zl)return JSON.parse(n);let e=$y("md5").update(n).digest("hex"),o=Xl.get(e);return o||(o=JSON.parse(n),Xl.set(e,o)),o}var Fn=class{sdkVersion;constructor(){let e=Dt("@sentio/sdk");this.sdkVersion=ht(e.version)}adjustDataBinding(e){let o=Ut(this.sdkVersion,Ql)<0;if(e)switch(e.handlerType){case 1:let a=e.data?.ethLog;a?.log==null&&a?.rawLog&&(a.log=JSON.parse(a.rawLog),a.rawTransaction&&(a.transaction=Z(a.rawTransaction)),a.rawBlock&&(a.block=Z(a.rawBlock)),a.rawTransactionReceipt&&(a.transactionReceipt=Z(a.rawTransactionReceipt)));break;case 11:let s=e.data?.ethTransaction;s?.transaction==null&&s?.rawTransaction&&(s.transaction=Z(s.rawTransaction),s.rawBlock?s.block=Z(s.rawBlock):s.block=void 0,s.rawTransactionReceipt?s.transactionReceipt=Z(s.rawTransactionReceipt):s.transactionReceipt=void 0);break;case 2:let u=e.data?.ethBlock;u?.block==null&&u?.rawBlock&&(u.block=Z(u.rawBlock));break;case 5:let r=e.data?.ethTrace;r?.trace==null&&r?.rawTrace&&(r.trace=Z(r.rawTrace),r.rawTransaction&&(r.transaction=Z(r.rawTransaction)),r.rawBlock&&(r.block=Z(r.rawBlock)),r.rawTransactionReceipt&&(r.transactionReceipt=Z(r.rawTransactionReceipt)));break;case 4:let t=e.data?.solInstruction;t?.parsed==null&&t?.rawParsed&&(t.parsed=Z(t.rawParsed));break;case 20:Ut(this.sdkVersion,Jl)<0&&(e.handlerType=13,e.data&&(e.data.fuelCall=e.data?.fuelTransaction));break;case 19:Ut(this.sdkVersion,Jl)<0&&(e.handlerType=13,e.data&&(e.data.fuelCall=e.data?.fuelLog));break;case 6:let i=e.data?.aptEvent;if(i&&o&&i.rawTransaction){let y=Z(i.rawTransaction),A=`${y.hash}-${e.handlerIds[0]}`;if(Mr.has(A)){console.debug("skip binding",A),e.handlerType=0;return}Mr.set(A,!0),i.transaction=y,y.events?.length||(y.events=[JSON.parse(i.rawEvent)])}break;case 7:let c=e.data?.aptCall;c&&o&&c.rawTransaction&&(c.transaction=Z(c.rawTransaction));break;case 8:let l=e.data?.aptResource;l&&o&&l.rawResources&&(l.resources=l.rawResources.map(y=>JSON.parse(y)));break;case 3:let p=e.data?.suiEvent;if(p&&o&&p.rawTransaction){let y=Z(p.rawTransaction),A=`${y.digest}-${e.handlerIds[0]}`;if(Mr.has(A)){console.debug("skip binding",A),e.handlerType=0;return}Mr.set(A,!0),p.transaction=y,y.events?.length||(y.events=[JSON.parse(p.rawEvent)])}break;case 9:let h=e.data?.suiCall;h&&o&&h.rawTransaction&&(h.transaction=Z(h.rawTransaction));break;case 10:let m=e.data?.suiObject;m&&o&&(m.rawSelf||m.rawObjects)&&(m.rawSelf&&(m.self=JSON.parse(m.rawSelf)),m.objects=m.rawObjects.map(y=>JSON.parse(y)));break;case 12:let T=e.data?.suiObjectChange;T&&o&&T.rawChanges&&(T.changes=T.rawChanges.map(y=>JSON.parse(y)));break;case 0:break;default:break}}patchConfig(e){e.executionConfig=Il.fromPartial(Gl.execution);for(let o of[...e.contractConfigs??[],...e.accountConfigs??[]])for(let a of o.moveResourceChangeConfigs??[])!a.types?.length&&a.type&&(a.types=[a.type]);if(e.contractConfigs)for(let o of e.contractConfigs)Ut(this.sdkVersion,Ky)<0&&o.fuelCallConfigs&&(o.fuelTransactionConfigs=o.fuelCallConfigs,o.fuelCallConfigs=void 0),o.fuelLogConfigs&&(o.fuelReceiptConfigs=o.fuelLogConfigs.map(a=>({handlerId:a.handlerId,handlerName:a.handlerName,log:{logIds:a.logIds}}))),o.aptosCallConfigs&&(o.moveCallConfigs=o.aptosCallConfigs),o.aptosEventConfigs&&(o.moveEventConfigs=o.aptosEventConfigs)}},qn=class{constructor(e){this.instance=e;let o=Dt("@sentio/sdk");this.sdkVersion=ht(o.version)}instance;sdkVersion;patcher=new Fn;async getConfig(e,o){let a=await this.instance.getConfig(e,o);return this.patcher.patchConfig(a),Ut(this.sdkVersion,Ql)<0&&Mr.clear(),a}async start(e,o){return await this.instance.start(e,o)}async stop(e,o){return await this.instance.stop(e,o)}async processBindings(e,o){for(let a of e.bindings)this.patcher.adjustDataBinding(a);try{let a=await this.instance.processBindings(e,o);return this.adjustResult(a.result),!a.configUpdated&&a.result?.states?.configUpdated&&(a.configUpdated=a.result?.states?.configUpdated),a}catch(a){throw this.sdkVersion.minor<=16&&(a.code===ea.constants.errno.ECONNRESET||a.code===ea.constants.errno.ECONNREFUSED||a.code===ea.constants.errno.ECONNABORTED)&&process.exit(1),a}}async*adjustBindingsStream(e){for await(let o of e)this.patcher.adjustDataBinding(o.binding),yield o}async*processBindingsStream(e,o){yield*this.instance.processBindingsStream(this.adjustBindingsStream(e),o)}async*preprocessBindingsStream(e,o){yield*this.instance.preprocessBindingsStream(this.adjustBindingsStream(e),o)}adjustResult(e){}},Yn=class{constructor(e){this.instance=e}patcher=new Fn;async start(e,o){return this.instance.start(e,o)}async getConfig(e,o){let a=await this.instance.getConfig(e,o);return this.patcher.patchConfig(a),a}async*processBindingsStream(e,o){yield*this.instance.processBindingsStream(this.adjustBindingsStream(e),o)}async*adjustBindingsStream(e){for await(let o of e)this.patcher.adjustDataBinding(o.binding),yield o}async updateTemplates(e,o){return this.instance.updateTemplates(e,o)}};import("node:process").then(n=>n.stdout.write(""));var xe=he(h_(),1);function m_(n){let e=new WeakSet;return JSON.stringify(n,function(o,a){if(typeof a=="object"&&a!==null){if(e.has(a))return"[Circular]";e.add(a)}return a})}function __(n,e,o){let a={transform:u=>{let r=[];typeof u.message=="object"?r.push(m_(u.message)):r.push(u.message);let t=u[Symbol.for("splat")];if(t)for(let i in t){let c=t[i];typeof c=="object"?r.push(m_(c)):r.push(c)}return u.message=r.join(" "),u}},s=(0,xe.createLogger)({format:xe.format.combine(xe.format.timestamp({format:"YYYY-MM-DDTHH:mm:ss.SSSZ"}),a,xe.format.errors({stack:!0}),n?xe.format.json():xe.format.simple(),xe.format.label({label:o?"worker #{workerId}":""})),level:e?"debug":"info",transports:[new xe.transports.Console]});console.log=(...u)=>s.info.call(s,...u),console.info=(...u)=>s.info.call(s,...u),console.warn=(...u)=>s.warn.call(s,...u),console.error=(...u)=>s.error.call(s,...u),console.debug=(...u)=>s.debug.call(s,...u)}import("node:process").then(n=>n.stdout.write(""));_r();var cl=he(uy(),1),dy=he(fy(),1);C();async function hy(n){console.log("Setting up OTLP metrics, debug=",!!n),n&&g.setLogger(new Fl,Oe.DEBUG);let e=[new Ct({exporter:new cl.OTLPMetricExporter,exportIntervalMillis:6e4})];n&&e.push(new dy.PrometheusExporter({host:"0.0.0.0",port:4041}));let o=new mr({readers:[new Ct({exporter:new cl.OTLPMetricExporter,exportIntervalMillis:6e4})]});Xs.setGlobalMeterProvider(o),["SIGINT","SIGTERM"].forEach(a=>{process.on(a,()=>o.forceFlush().catch(console.error))}),Xs.getMeter("processor").createGauge("up").record(1)}import("node:process").then(n=>n.stdout.write(""));var qs=class{constructor(e){this.loader=e}async listen(e){let o=Be.INSTANCE;await this.loader(),await o.configure(kn.create()),console.log("Starting Action Server at:",e),await o.startServer(e)}forceShutdown(){Be.INSTANCE.shutdown()}};import("node:process").then(n=>n.stdout.write(""));var br=he(Dl(),1);var _y=he(jy(),1);var{process_binding_count:nP,process_binding_time:oP,process_binding_error:iP}=$l,sP=process.env.WRITE_V2_EVENT_LOGS!=="false",my=1e3,Ys=class{enablePartition;loader;shutdownHandler;started=!1;constructor(e,o,a){this.loader=e,this.shutdownHandler=a,this.enablePartition=o?.enablePartition==!0}async start(e,o){if(this.started)return{};Bl();try{await this.loader()}catch(a){throw new br.ServerError(br.Status.INVALID_ARGUMENT,"Failed to load processor: "+Js(a))}return await Be.INSTANCE.start(e),this.started=!0,{}}async getConfig(e,o){if(!this.started)throw new br.ServerError(br.Status.UNAVAILABLE,"Service Not started.");let a=kn.fromPartial({});return await Be.INSTANCE.configure(a),a}async*processBindingsStream(e,o){let a=new _y.Subject;this.handleRequests(e,a).then(()=>{a.complete()}).catch(s=>{console.error(s),a.error(s)}),yield*Vl(a).pipe(kl(o.signal))}async handleRequests(e,o){let a;for await(let s of e)try{s.binding&&(a=s.binding),this.handleRequest(s,a,o)}catch(u){console.error("unexpect error during handle loop",u)}}contexts=new ll;async handleRequest(e,o,a){if(e.binding){if(nP.add(1),e.binding.handlerType===Pl.UNKNOWN){a.next({processId:e.processId,result:wl.create()});return}if(this.enablePartition)try{console.debug("sending partition request",e.binding);let s=await Be.INSTANCE.partition(e.binding);a.next({processId:e.processId,partitions:s})}catch(s){console.error("Partition error:",s),a.error(new Error("Partition error: "+Js(s)));return}else this.startProcess(e.processId,e.binding,a)}if(e.start){if(!o){console.error("start request received without binding"),a.error(new Error("start request received without binding"));return}this.startProcess(e.processId,o,a)}if(e.dbResult){let s=this.contexts.get(e.processId);try{s?.result(e.dbResult)}catch{a.error(new Error("db result error, process should stop"))}}}startProcess(e,o,a){let s=this.contexts.new(e,a),u=Date.now();Be.INSTANCE.processBinding(o,void 0,s).then(async r=>{await s.awaitPendings();let{timeseriesResult:t,...i}=r;for(let c=0;c<t.length;c+=my){let l=t.slice(c,c+my);a.next({processId:e,tsRequest:{data:l}})}a.next({result:sP?i:{states:i.states},processId:e}),zl(r,o.handlerType)}).catch(r=>{console.error(r,r.stack),s.error(e,r),iP.add(1)}).finally(()=>{let r=Date.now()-u;oP.add(r),this.contexts.delete(e)})}async updateTemplates(e,o){return await Be.INSTANCE.updateTemplates(e),{}}},ll=class{contexts=new Map;get(e){return this.contexts.get(e)}new(e,o){let a=new Kl(e,o);return this.contexts.set(e,a),a}delete(e){this.get(e)?.close(),this.contexts.delete(e)}};import("node:process").then(n=>n.stdout.write(""));import{dirname as bP,join as NP}from"path";var wy=he(Py(),1),{program:ak,createCommand:uk,createArgument:ck,createOption:lk,CommanderError:pk,InvalidArgumentError:Cy,InvalidOptionArgumentError:fk,Command:Iy,Argument:dk,Option:hk,Help:mk}=wy.default;var Ly=1;try{Ly=parseInt(process.env.PROCESSOR_WORKER?.trim()??"1")}catch(n){console.error("Failed to parse worker number",n)}function Un(n,e){let o=parseInt(n,10);if(isNaN(o))throw new Cy("Not a number.");return o}var Dn=new Iy("processor-runner").allowUnknownOption().allowExcessArguments().name("processor-runner").description("Sentio Processor Runtime").argument("<target>","Path to the processor module to load").option("-p, --port <port>","Port to listen on","4000").option("--concurrency <number>","Number of concurrent workers(V2 only, deprecated)",Un,4).option("--batch-count <number>","Batch count for processing",Un,1).option("-c, --chains-config <path>","Path to chains configuration file","chains-config.json").option("--chainquery-server <url>","Chain query server URL").option("--pricefeed-server <url>","Price feed server URL").option("--log-format <format>","Log format (console|json)","console").option("--debug","Enable debug mode").option("--otlp-debug","Enable OTLP debug mode").option("--start-action-server","Start action server instead of processor server").option("--worker <number>","Number of processor worker threads ",Un,Ly).option("--process-timeout <seconds>","Process timeout in seconds",Un,60).option("--worker-timeout <seconds>","Worker timeout in seconds",Un,parseInt(process.env.WORKER_TIMEOUT_SECONDS||"60")).option("--enable-partition","Enable binding data partition",process.env.SENTIO_ENABLE_BINDING_DATA_PARTITION==="true");import("node:process").then(n=>n.stdout.write(""));Dn.parse();var te={...Dn.opts(),target:Dn.args[Dn.args.length-1]},xP=process.env.LOG_LEVEL?.toLowerCase(),ft=!1,Uy=!1,Ws=()=>{};__(te.logFormat==="json",xP==="debug"?!0:te.debug);console.debug("Starting with",te.target);await hy(te.otlpDebug);Error.stackTraceLimit=20;Ul(te);console.debug("Starting Server",te);var zs=process.env.IS_CHILD==="true";function Dy(n){zs||(ft=!0,Ws()),process.exit(n)}if(!zs){let n=Dt("@sentio/sdk"),e=Dt("@sentio/runtime");console.log("Runtime version:",e.version,"SDK version:",n.version)}var Ke,xr,Ml,Rl=async()=>{let n=await import(te.target);return console.debug("Module loaded",n),n};if(te.startActionServer)Ke=new qs(Rl),Ke.listen(te.port);else{Ke=(0,Gy.createServer)({"grpc.max_send_message_length":768*1024*1024,"grpc.max_receive_message_length":768*1024*1024}).use(By.errorDetailsServerMiddleware),xr=new Wl(Rl,te,Ke.shutdown);let n=new qn(xr);Ke.add(Ll,n),Ke.add(Cl,new Yn(new Ys(Rl,te,Ke.shutdown))),Ke.listen("0.0.0.0:"+te.port),console.log("Processor Server Started at:",te.port)}if(!zs&&(Ml=AP.createServer(async function(e,o){if(e.url){let a=new URL(e.url,`http://${e.headers.host}`),s=a.searchParams;switch(a.pathname){case"/heap":{try{let u="/tmp/"+Date.now()+".heapsnapshot";await Vy(u);let r=Nr.default.createReadStream(u);o.writeHead(200,{"Content-Type":"application/json"}),r.pipe(o),o.end()}catch{o.writeHead(500),o.end()}break}case"/profile":{try{let u=parseInt(s.get("t")||"1000",10)||1e3,r=new Hy;r.connect(),await r.post("Profiler.enable"),await r.post("Profiler.start"),await new Promise(i=>setTimeout(i,u));let{profile:t}=await r.post("Profiler.stop");o.writeHead(200,{"Content-Type":"application/json"}),o.write(JSON.stringify(t)),r.disconnect()}catch{o.writeHead(500)}break}default:o.writeHead(404)}}else o.writeHead(404);o.end()}).listen(4040),console.log("Metric Server Started at:",4040),process.env.OOM_DUMP_MEMORY_SIZE_GB)){let e=!1,o=parseFloat(process.env.OOM_DUMP_MEMORY_SIZE_GB);console.log("heap dumping is enabled, limit set to ",o,"gb");let a=process.env.OOM_DUMP_DIR||"/tmp";setInterval(async()=>{let s=process.memoryUsage();if(console.log("Current Memory Usage",s),s.heapTotal>o*1024*1024*1024&&!e){let u=NP(a,`${Date.now()}.heapsnapshot`);e=!0,await Vy(u),process.exit(11)}},1e3*60)}process.once("SIGINT",function(){ft||(ft=!0,Ws(),ky(0))}).once("SIGTERM",function(){ft||(ft=!0,Ws(),ky(0))}).on("uncaughtException",n=>{console.error("Uncaught Exception, please checking if await is properly used",n),xr&&(xr.unhandled=n)}).on("unhandledRejection",(n,e)=>{n?.message.startsWith('invalid ENS name (disallowed character: "*"')||(console.error("Unhandled Rejection, please checking if await is properly",n),xr&&(xr.unhandled=n))});async function Vy(n){console.log("Heap dumping to",n);let e=new Hy;Nr.default.mkdirSync(bP(n),{recursive:!0});let o=Nr.default.openSync(n,"w");try{e.connect(),e.on("HeapProfiler.addHeapSnapshotChunk",a=>{Nr.default.writeSync(o,a.params.chunk)}),await e.post("HeapProfiler.takeHeapSnapshot"),console.log("Heap dumped to",n)}finally{e.disconnect(),Nr.default.closeSync(o)}}function ky(n){Ke.forceShutdown(),console.log("RPC server shut down"),Ml?Ml.close(function(){console.log("Http server shut down"),Dy(n)}):Dy(n)}if(te.worker>1&&!zs){let n=new Map,e=new Map,o=parseInt(te.port),a=1e3,s=u=>{let r=process.argv.slice(2),t=["--port="+String(u)];for(let c=0;c<r.length;c++){let l=r[c];if(l==="-p"||l==="--port"){c++;continue}else if(l.startsWith("--port=")||l.startsWith("--inspect="))continue;t.push(l)}let i=OP(vP(import.meta.url),t,{env:{...process.env,IS_CHILD:"true"},stdio:"inherit"});i.on("error",c=>{console.error(`Child process on port ${u} error:`,c)}),i.on("exit",(c,l)=>{if(n.delete(u),console.log(`Child process on port ${u} exited with code ${c}, signal ${l??"none"}`),ft||e.has(u))return;console.log(`Scheduling restart for child process on port ${u} in ${a}ms`);let p=setTimeout(()=>{e.delete(u),!ft&&(console.log(`Restarting child process on port ${u}`),s(u))},a);e.set(u,p)}),n.set(u,i),console.log(`Spawned child server process for port ${u} (pid: ${i.pid})`)};for(let u=1;u<te.worker;u++){let r=o+u;s(r)}Ws=()=>{if(!Uy){Uy=!0,ft=!0;for(let u of e.values())clearTimeout(u);e.clear();for(let u of n.values())u.kill("SIGINT")}}}import("node:process").then(n=>n.stdout.write(""));
|
|
79
79
|
/*! Bundled license information:
|
|
80
80
|
|
|
81
81
|
safe-buffer/index.js:
|