factoriomod-debug 1.1.30 → 1.1.31
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/CHANGELOG.md +5 -1
- package/dist/fmtk.js +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
[<img height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=2' border='0' alt='Buy Me a Coffee at ko-fi.com'/>](https://ko-fi.com/X8X41IE4T)
|
|
4
4
|
|
|
5
|
+
## 1.1.31
|
|
6
|
+
* VSCode:
|
|
7
|
+
* Fixed profiler path mapping
|
|
8
|
+
* Fixed running Debugger in external process
|
|
9
|
+
|
|
5
10
|
## 1.1.30
|
|
6
11
|
* Debugger:
|
|
7
12
|
* Fixed catching pcall/xpcall caught errors in settings & data stage
|
|
@@ -10,7 +15,6 @@
|
|
|
10
15
|
* VSCode:
|
|
11
16
|
* Don't try to auto-detect attached debugger to debug forked processes (false positive on some systems)
|
|
12
17
|
|
|
13
|
-
|
|
14
18
|
## 1.1.29
|
|
15
19
|
* CLI:
|
|
16
20
|
* Added `fmtk settings unset` to remove a mod setting
|
package/dist/fmtk.js
CHANGED
|
@@ -26,7 +26,7 @@ Content-Type: ${o.type||"application/octet-stream"}\r
|
|
|
26
26
|
`)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),Nd=(t,e,r)=>{if(e.length<r)throw new TypeError(`Failed to execute '${t}' on 'FormData': ${r} arguments required, but only ${e.length} present.`)},ns=class{#e=[];constructor(...e){if(e.length)throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.")}get[Vv](){return"FormData"}[fTe](){return this.entries()}static[dTe](e){return e&&typeof e=="object"&&e[Vv]==="FormData"&&!hTe.some(r=>typeof e[r]!="function")}append(...e){Nd("append",arguments,2),this.#e.push(AH(...e))}delete(e){Nd("delete",arguments,1),e+="",this.#e=this.#e.filter(([r])=>r!==e)}get(e){Nd("get",arguments,1),e+="";for(var r=this.#e,n=r.length,i=0;i<n;i++)if(r[i][0]===e)return r[i][1];return null}getAll(e,r){return Nd("getAll",arguments,1),r=[],e+="",this.#e.forEach(n=>n[0]===e&&r.push(n[1])),r}has(e){return Nd("has",arguments,1),e+="",this.#e.some(r=>r[0]===e)}forEach(e,r){Nd("forEach",arguments,1);for(var[n,i]of this)e.call(r,i,n,this)}set(...e){Nd("set",arguments,2);var r=[],n=!0;e=AH(...e),this.#e.forEach(i=>{i[0]===e[0]?n&&(n=!r.push(e)):r.push(i)}),n&&r.push(e),this.#e=r}*entries(){yield*this.#e}*keys(){for(var[e]of this)yield e}*values(){for(var[,e]of this)yield e}}});var cc,nw=U(()=>{cc=class extends Error{constructor(e,r){super(e),Error.captureStackTrace(this,this.constructor),this.type=r}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}}});var qo,lO=U(()=>{nw();qo=class extends cc{constructor(e,r,n){super(e,r),n&&(this.code=this.errno=n.code,this.erroredSysCall=n.syscall)}}});var iw,fO,Gv,IH,LH,MH,ow=U(()=>{iw=Symbol.toStringTag,fO=t=>typeof t=="object"&&typeof t.append=="function"&&typeof t.delete=="function"&&typeof t.get=="function"&&typeof t.getAll=="function"&&typeof t.has=="function"&&typeof t.set=="function"&&typeof t.sort=="function"&&t[iw]==="URLSearchParams",Gv=t=>t&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&typeof t.constructor=="function"&&/^(Blob|File)$/.test(t[iw]),IH=t=>typeof t=="object"&&(t[iw]==="AbortSignal"||t[iw]==="EventTarget"),LH=(t,e)=>{let r=new URL(e).hostname,n=new URL(t).hostname;return r===n||r.endsWith(`.${n}`)},MH=(t,e)=>{let r=new URL(e).protocol,n=new URL(t).protocol;return r===n}});var jH=y((y1t,BH)=>{if(!globalThis.DOMException)try{let{MessageChannel:t}=require("worker_threads"),e=new t().port1,r=new ArrayBuffer;e.postMessage(r,[r,r])}catch(t){t.constructor.name==="DOMException"&&(globalThis.DOMException=t.constructor)}BH.exports=globalThis.DOMException});var Kv,NH,pTe,sw,dO=U(()=>{Kv=require("node:fs"),NH=pe(jH(),1);uO();Hv();({stat:pTe}=Kv.promises),sw=class{#e;#t;constructor(e){this.#e=e.path,this.#t=e.start,this.size=e.size,this.lastModified=e.lastModified}slice(e,r){return new sw({path:this.#e,lastModified:this.lastModified,size:r-e,start:this.#t+e})}async*stream(){let{mtimeMs:e}=await pTe(this.#e);if(e>this.lastModified)throw new NH.default("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");yield*(0,Kv.createReadStream)(this.#e,{start:this.#t,end:this.#t+this.size-1})}get[Symbol.toStringTag](){return"Blob"}}});var UH={};rr(UH,{toFormData:()=>_Te});function xTe(t){let e=t.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!e)return;let r=e[2]||e[3]||"",n=r.slice(r.lastIndexOf("\\")+1);return n=n.replace(/%22/g,'"'),n=n.replace(/&#(\d{4});/g,(i,o)=>String.fromCharCode(o)),n}async function _Te(t,e){if(!/multipart/i.test(e))throw new TypeError("Failed to fetch");let r=e.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!r)throw new TypeError("no or bad content-type header, no multipart boundary");let n=new hO(r[1]||r[2]),i,o,s,a,u,c,f=[],h=new ns,p=S=>{s+=R.decode(S,{stream:!0})},g=S=>{f.push(S)},b=()=>{let S=new Yp(f,c,{type:u});h.append(a,S)},E=()=>{h.append(a,s)},R=new TextDecoder("utf-8");R.decode(),n.onPartBegin=function(){n.onPartData=p,n.onPartEnd=E,i="",o="",s="",a="",u="",c=null,f.length=0},n.onHeaderField=function(S){i+=R.decode(S,{stream:!0})},n.onHeaderValue=function(S){o+=R.decode(S,{stream:!0})},n.onHeaderEnd=function(){if(o+=R.decode(),i=i.toLowerCase(),i==="content-disposition"){let S=o.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);S&&(a=S[2]||S[3]||""),c=xTe(o),c&&(n.onPartData=g,n.onPartEnd=b)}else i==="content-type"&&(u=o);o="",i=""};for await(let S of t)n.write(S);return n.end(),h}var eu,Wr,$H,Cl,aw,uw,mTe,Yv,gTe,vTe,bTe,yTe,$d,hO,WH=U(()=>{dO();rw();eu=0,Wr={START_BOUNDARY:eu++,HEADER_FIELD_START:eu++,HEADER_FIELD:eu++,HEADER_VALUE_START:eu++,HEADER_VALUE:eu++,HEADER_VALUE_ALMOST_DONE:eu++,HEADERS_ALMOST_DONE:eu++,PART_DATA_START:eu++,PART_DATA:eu++,END:eu++},$H=1,Cl={PART_BOUNDARY:$H,LAST_BOUNDARY:$H*=2},aw=10,uw=13,mTe=32,Yv=45,gTe=58,vTe=97,bTe=122,yTe=t=>t|32,$d=()=>{},hO=class{constructor(e){this.index=0,this.flags=0,this.onHeaderEnd=$d,this.onHeaderField=$d,this.onHeadersEnd=$d,this.onHeaderValue=$d,this.onPartBegin=$d,this.onPartData=$d,this.onPartEnd=$d,this.boundaryChars={},e=`\r
|
|
27
27
|
--`+e;let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n),this.boundaryChars[r[n]]=!0;this.boundary=r,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=Wr.START_BOUNDARY}write(e){let r=0,n=e.length,i=this.index,{lookbehind:o,boundary:s,boundaryChars:a,index:u,state:c,flags:f}=this,h=this.boundary.length,p=h-1,g=e.length,b,E,R=O=>{this[O+"Mark"]=r},S=O=>{delete this[O+"Mark"]},k=(O,B,M,N)=>{(B===void 0||B!==M)&&this[O](N&&N.subarray(B,M))},D=(O,B)=>{let M=O+"Mark";M in this&&(B?(k(O,this[M],r,e),delete this[M]):(k(O,this[M],e.length,e),this[M]=0))};for(r=0;r<n;r++)switch(b=e[r],c){case Wr.START_BOUNDARY:if(u===s.length-2){if(b===Yv)f|=Cl.LAST_BOUNDARY;else if(b!==uw)return;u++;break}else if(u-1===s.length-2){if(f&Cl.LAST_BOUNDARY&&b===Yv)c=Wr.END,f=0;else if(!(f&Cl.LAST_BOUNDARY)&&b===aw)u=0,k("onPartBegin"),c=Wr.HEADER_FIELD_START;else return;break}b!==s[u+2]&&(u=-2),b===s[u+2]&&u++;break;case Wr.HEADER_FIELD_START:c=Wr.HEADER_FIELD,R("onHeaderField"),u=0;case Wr.HEADER_FIELD:if(b===uw){S("onHeaderField"),c=Wr.HEADERS_ALMOST_DONE;break}if(u++,b===Yv)break;if(b===gTe){if(u===1)return;D("onHeaderField",!0),c=Wr.HEADER_VALUE_START;break}if(E=yTe(b),E<vTe||E>bTe)return;break;case Wr.HEADER_VALUE_START:if(b===mTe)break;R("onHeaderValue"),c=Wr.HEADER_VALUE;case Wr.HEADER_VALUE:b===uw&&(D("onHeaderValue",!0),k("onHeaderEnd"),c=Wr.HEADER_VALUE_ALMOST_DONE);break;case Wr.HEADER_VALUE_ALMOST_DONE:if(b!==aw)return;c=Wr.HEADER_FIELD_START;break;case Wr.HEADERS_ALMOST_DONE:if(b!==aw)return;k("onHeadersEnd"),c=Wr.PART_DATA_START;break;case Wr.PART_DATA_START:c=Wr.PART_DATA,R("onPartData");case Wr.PART_DATA:if(i=u,u===0){for(r+=p;r<g&&!(e[r]in a);)r+=h;r-=p,b=e[r]}if(u<s.length)s[u]===b?(u===0&&D("onPartData",!0),u++):u=0;else if(u===s.length)u++,b===uw?f|=Cl.PART_BOUNDARY:b===Yv?f|=Cl.LAST_BOUNDARY:u=0;else if(u-1===s.length)if(f&Cl.PART_BOUNDARY){if(u=0,b===aw){f&=~Cl.PART_BOUNDARY,k("onPartEnd"),k("onPartBegin"),c=Wr.HEADER_FIELD_START;break}}else f&Cl.LAST_BOUNDARY&&b===Yv?(k("onPartEnd"),c=Wr.END,f=0):u=0;if(u>0)o[u-1]=b;else if(i>0){let O=new Uint8Array(o.buffer,o.byteOffset,o.byteLength);k("onPartData",0,i,O),i=0,R("onPartData"),r--}break;case Wr.END:break;default:throw new Error(`Unexpected state entered: ${c}`)}D("onHeaderField"),D("onHeaderValue"),D("onPartData"),this.index=u,this.state=c,this.flags=f}end(){if(this.state===Wr.HEADER_FIELD_START&&this.index===0||this.state===Wr.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==Wr.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}});async function pO(t){if(t[Io].disturbed)throw new TypeError(`body used already for: ${t.url}`);if(t[Io].disturbed=!0,t[Io].error)throw t[Io].error;let{body:e}=t;if(e===null)return is.Buffer.alloc(0);if(!(e instanceof Fs.default))return is.Buffer.alloc(0);let r=[],n=0;try{for await(let i of e){if(t.size>0&&n+i.length>t.size){let o=new qo(`content size at ${t.url} over limit: ${t.size}`,"max-size");throw e.destroy(o),o}n+=i.length,r.push(i)}}catch(i){throw i instanceof cc?i:new qo(`Invalid response body while trying to fetch ${t.url}: ${i.message}`,"system",i)}if(e.readableEnded===!0||e._readableState.ended===!0)try{return r.every(i=>typeof i=="string")?is.Buffer.from(r.join("")):is.Buffer.concat(r,n)}catch(i){throw new qo(`Could not create Buffer from response body for ${t.url}: ${i.message}`,"system",i)}else throw new qo(`Premature close of server response while trying to fetch ${t.url}`)}var Fs,lc,is,wTe,Io,tu,Qp,ETe,cw,zH,HH,lw=U(()=>{Fs=pe(require("node:stream"),1),lc=require("node:util"),is=require("node:buffer");Hv();rw();lO();nw();ow();wTe=(0,lc.promisify)(Fs.default.pipeline),Io=Symbol("Body internals"),tu=class{constructor(e,{size:r=0}={}){let n=null;e===null?e=null:fO(e)?e=is.Buffer.from(e.toString()):Gv(e)||is.Buffer.isBuffer(e)||(lc.types.isAnyArrayBuffer(e)?e=is.Buffer.from(e):ArrayBuffer.isView(e)?e=is.Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof Fs.default||(e instanceof ns?(e=qH(e),n=e.type.split("=")[1]):e=is.Buffer.from(String(e))));let i=e;is.Buffer.isBuffer(e)?i=Fs.default.Readable.from(e):Gv(e)&&(i=Fs.default.Readable.from(e.stream())),this[Io]={body:e,stream:i,boundary:n,disturbed:!1,error:null},this.size=r,e instanceof Fs.default&&e.on("error",o=>{let s=o instanceof cc?o:new qo(`Invalid response body while trying to fetch ${this.url}: ${o.message}`,"system",o);this[Io].error=s})}get body(){return this[Io].stream}get bodyUsed(){return this[Io].disturbed}async arrayBuffer(){let{buffer:e,byteOffset:r,byteLength:n}=await pO(this);return e.slice(r,r+n)}async formData(){let e=this.headers.get("content-type");if(e.startsWith("application/x-www-form-urlencoded")){let n=new ns,i=new URLSearchParams(await this.text());for(let[o,s]of i)n.append(o,s);return n}let{toFormData:r}=await Promise.resolve().then(()=>(WH(),UH));return r(this.body,e)}async blob(){let e=this.headers&&this.headers.get("content-type")||this[Io].body&&this[Io].body.type||"",r=await this.arrayBuffer();return new Ps([r],{type:e})}async json(){let e=await this.text();return JSON.parse(e)}async text(){let e=await pO(this);return new TextDecoder().decode(e)}buffer(){return pO(this)}};tu.prototype.buffer=(0,lc.deprecate)(tu.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(tu.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:(0,lc.deprecate)(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});Qp=(t,e)=>{let r,n,{body:i}=t[Io];if(t.bodyUsed)throw new Error("cannot clone body after it is used");return i instanceof Fs.default&&typeof i.getBoundary!="function"&&(r=new Fs.PassThrough({highWaterMark:e}),n=new Fs.PassThrough({highWaterMark:e}),i.pipe(r),i.pipe(n),t[Io].stream=r,i=n),i},ETe=(0,lc.deprecate)(t=>t.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),cw=(t,e)=>t===null?null:typeof t=="string"?"text/plain;charset=UTF-8":fO(t)?"application/x-www-form-urlencoded;charset=UTF-8":Gv(t)?t.type||null:is.Buffer.isBuffer(t)||lc.types.isAnyArrayBuffer(t)||ArrayBuffer.isView(t)?null:t instanceof ns?`multipart/form-data; boundary=${e[Io].boundary}`:t&&typeof t.getBoundary=="function"?`multipart/form-data;boundary=${ETe(t)}`:t instanceof Fs.default?null:"text/plain;charset=UTF-8",zH=t=>{let{body:e}=t[Io];return e===null?0:Gv(e)?e.size:is.Buffer.isBuffer(e)?e.length:e&&typeof e.getLengthSync=="function"&&e.hasKnownLength&&e.hasKnownLength()?e.getLengthSync():null},HH=async(t,{body:e})=>{e===null?t.end():await wTe(e,t)}});function VH(t=[]){return new Di(t.reduce((e,r,n,i)=>(n%2===0&&e.push(i.slice(n,n+2)),e),[]).filter(([e,r])=>{try{return fw(e),gO(e,String(r)),!0}catch{return!1}}))}var mO,Qv,fw,gO,Di,dw=U(()=>{mO=require("node:util"),Qv=pe(require("node:http"),1),fw=typeof Qv.default.validateHeaderName=="function"?Qv.default.validateHeaderName:t=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(t)){let e=new TypeError(`Header name must be a valid HTTP token [${t}]`);throw Object.defineProperty(e,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),e}},gO=typeof Qv.default.validateHeaderValue=="function"?Qv.default.validateHeaderValue:(t,e)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(e)){let r=new TypeError(`Invalid character in header content ["${t}"]`);throw Object.defineProperty(r,"code",{value:"ERR_INVALID_CHAR"}),r}},Di=class extends URLSearchParams{constructor(e){let r=[];if(e instanceof Di){let n=e.raw();for(let[i,o]of Object.entries(n))r.push(...o.map(s=>[i,s]))}else if(e!=null)if(typeof e=="object"&&!mO.types.isBoxedPrimitive(e)){let n=e[Symbol.iterator];if(n==null)r.push(...Object.entries(e));else{if(typeof n!="function")throw new TypeError("Header pairs must be iterable");r=[...e].map(i=>{if(typeof i!="object"||mO.types.isBoxedPrimitive(i))throw new TypeError("Each header pair must be an iterable object");return[...i]}).map(i=>{if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...i]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return r=r.length>0?r.map(([n,i])=>(fw(n),gO(n,String(i)),[String(n).toLowerCase(),String(i)])):void 0,super(r),new Proxy(this,{get(n,i,o){switch(i){case"append":case"set":return(s,a)=>(fw(s),gO(s,String(a)),URLSearchParams.prototype[i].call(n,String(s).toLowerCase(),String(a)));case"delete":case"has":case"getAll":return s=>(fw(s),URLSearchParams.prototype[i].call(n,String(s).toLowerCase()));case"keys":return()=>(n.sort(),new Set(URLSearchParams.prototype.keys.call(n)).keys());default:return Reflect.get(n,i,o)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(e){let r=this.getAll(e);if(r.length===0)return null;let n=r.join(", ");return/^content-encoding$/i.test(e)&&(n=n.toLowerCase()),n}forEach(e,r=void 0){for(let n of this.keys())Reflect.apply(e,r,[this.get(n),n,this])}*values(){for(let e of this.keys())yield this.get(e)}*entries(){for(let e of this.keys())yield[e,this.get(e)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((e,r)=>(e[r]=this.getAll(r),e),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((e,r)=>{let n=this.getAll(r);return r==="host"?e[r]=n[0]:e[r]=n.length>1?n:n[0],e},{})}};Object.defineProperties(Di.prototype,["get","entries","forEach","values"].reduce((t,e)=>(t[e]={enumerable:!0},t),{}))});var DTe,hw,vO=U(()=>{DTe=new Set([301,302,303,307,308]),hw=t=>DTe.has(t)});var da,Si,GH=U(()=>{dw();lw();vO();da=Symbol("Response internals"),Si=class extends tu{constructor(e=null,r={}){super(e,r);let n=r.status!=null?r.status:200,i=new Di(r.headers);if(e!==null&&!i.has("Content-Type")){let o=cw(e,this);o&&i.append("Content-Type",o)}this[da]={type:"default",url:r.url,status:n,statusText:r.statusText||"",headers:i,counter:r.counter,highWaterMark:r.highWaterMark}}get type(){return this[da].type}get url(){return this[da].url||""}get status(){return this[da].status}get ok(){return this[da].status>=200&&this[da].status<300}get redirected(){return this[da].counter>0}get statusText(){return this[da].statusText}get headers(){return this[da].headers}get highWaterMark(){return this[da].highWaterMark}clone(){return new Si(Qp(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(e,r=302){if(!hw(r))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new Si(null,{headers:{location:new URL(e).toString()},status:r})}static error(){let e=new Si(null,{status:0,statusText:""});return e[da].type="error",e}static json(e=void 0,r={}){let n=JSON.stringify(e);if(n===void 0)throw new TypeError("data is not JSON serializable");let i=new Di(r&&r.headers);return i.has("content-type")||i.set("content-type","application/json"),new Si(n,{...r,headers:i})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(Si.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}})});var KH,YH=U(()=>{KH=t=>{if(t.search)return t.search;let e=t.href.length-1,r=t.hash||(t.href[e]==="#"?"#":"");return t.href[e-r.length]==="?"?"?":""}});function QH(t,e=!1){return t==null||(t=new URL(t),/^(about|blob|data):$/.test(t.protocol))?"no-referrer":(t.username="",t.password="",t.hash="",e&&(t.pathname="",t.search=""),t)}function eV(t){if(!JH.has(t))throw new TypeError(`Invalid referrerPolicy: ${t}`);return t}function STe(t){if(/^(http|ws)s:$/.test(t.protocol))return!0;let e=t.host.replace(/(^\[)|(]$)/g,""),r=(0,ZH.isIP)(e);return r===4&&/^127\./.test(e)||r===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(e)?!0:t.host==="localhost"||t.host.endsWith(".localhost")?!1:t.protocol==="file:"}function Zp(t){return/^about:(blank|srcdoc)$/.test(t)||t.protocol==="data:"||/^(blob|filesystem):$/.test(t.protocol)?!0:STe(t)}function tV(t,{referrerURLCallback:e,referrerOriginCallback:r}={}){if(t.referrer==="no-referrer"||t.referrerPolicy==="")return null;let n=t.referrerPolicy;if(t.referrer==="about:client")return"no-referrer";let i=t.referrer,o=QH(i),s=QH(i,!0);o.toString().length>4096&&(o=s),e&&(o=e(o)),r&&(s=r(s));let a=new URL(t.url);switch(n){case"no-referrer":return"no-referrer";case"origin":return s;case"unsafe-url":return o;case"strict-origin":return Zp(o)&&!Zp(a)?"no-referrer":s.toString();case"strict-origin-when-cross-origin":return o.origin===a.origin?o:Zp(o)&&!Zp(a)?"no-referrer":s;case"same-origin":return o.origin===a.origin?o:"no-referrer";case"origin-when-cross-origin":return o.origin===a.origin?o:s;case"no-referrer-when-downgrade":return Zp(o)&&!Zp(a)?"no-referrer":o;default:throw new TypeError(`Invalid referrerPolicy: ${n}`)}}function rV(t){let e=(t.get("referrer-policy")||"").split(/[,\s]+/),r="";for(let n of e)n&&JH.has(n)&&(r=n);return r}var ZH,JH,XH,bO=U(()=>{ZH=require("node:net");JH=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),XH="strict-origin-when-cross-origin"});var nV,iV,ai,Zv,CTe,fc,oV,sV=U(()=>{nV=require("node:url"),iV=require("node:util");dw();lw();ow();YH();bO();ai=Symbol("Request internals"),Zv=t=>typeof t=="object"&&typeof t[ai]=="object",CTe=(0,iV.deprecate)(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),fc=class extends tu{constructor(e,r={}){let n;if(Zv(e)?n=new URL(e.url):(n=new URL(e),e={}),n.username!==""||n.password!=="")throw new TypeError(`${n} is an url with embedded credentials.`);let i=r.method||e.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(i)&&(i=i.toUpperCase()),!Zv(r)&&"data"in r&&CTe(),(r.body!=null||Zv(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let o=r.body?r.body:Zv(e)&&e.body!==null?Qp(e):null;super(o,{size:r.size||e.size||0});let s=new Di(r.headers||e.headers||{});if(o!==null&&!s.has("Content-Type")){let c=cw(o,this);c&&s.set("Content-Type",c)}let a=Zv(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!IH(a))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let u=r.referrer==null?e.referrer:r.referrer;if(u==="")u="no-referrer";else if(u){let c=new URL(u);u=/^about:(\/\/)?client$/.test(c)?"client":c}else u=void 0;this[ai]={method:i,redirect:r.redirect||e.redirect||"follow",headers:s,parsedURL:n,signal:a,referrer:u},this.follow=r.follow===void 0?e.follow===void 0?20:e.follow:r.follow,this.compress=r.compress===void 0?e.compress===void 0?!0:e.compress:r.compress,this.counter=r.counter||e.counter||0,this.agent=r.agent||e.agent,this.highWaterMark=r.highWaterMark||e.highWaterMark||16384,this.insecureHTTPParser=r.insecureHTTPParser||e.insecureHTTPParser||!1,this.referrerPolicy=r.referrerPolicy||e.referrerPolicy||""}get method(){return this[ai].method}get url(){return(0,nV.format)(this[ai].parsedURL)}get headers(){return this[ai].headers}get redirect(){return this[ai].redirect}get signal(){return this[ai].signal}get referrer(){if(this[ai].referrer==="no-referrer")return"";if(this[ai].referrer==="client")return"about:client";if(this[ai].referrer)return this[ai].referrer.toString()}get referrerPolicy(){return this[ai].referrerPolicy}set referrerPolicy(e){this[ai].referrerPolicy=eV(e)}clone(){return new fc(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(fc.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});oV=t=>{let{parsedURL:e}=t[ai],r=new Di(t[ai].headers);r.has("Accept")||r.set("Accept","*/*");let n=null;if(t.body===null&&/^(post|put)$/i.test(t.method)&&(n="0"),t.body!==null){let a=zH(t);typeof a=="number"&&!Number.isNaN(a)&&(n=String(a))}n&&r.set("Content-Length",n),t.referrerPolicy===""&&(t.referrerPolicy=XH),t.referrer&&t.referrer!=="no-referrer"?t[ai].referrer=tV(t):t[ai].referrer="no-referrer",t[ai].referrer instanceof URL&&r.set("Referer",t.referrer),r.has("User-Agent")||r.set("User-Agent","node-fetch"),t.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip, deflate, br");let{agent:i}=t;typeof i=="function"&&(i=i(e)),!r.has("Connection")&&!i&&r.set("Connection","close");let o=KH(e),s={path:e.pathname+o,method:t.method,headers:r[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:t.insecureHTTPParser,agent:i};return{parsedURL:e,options:s}}});var pw,aV=U(()=>{nw();pw=class extends cc{constructor(e,r="aborted"){super(e,r)}}});async function kl(t,e){return new Promise((r,n)=>{let i=new fc(t,e),{parsedURL:o,options:s}=oV(i);if(!kTe.has(o.protocol))throw new TypeError(`node-fetch cannot load ${t}. URL scheme "${o.protocol.replace(/:$/,"")}" is not supported.`);if(o.protocol==="data:"){let b=SH(i.url),E=new Si(b,{headers:{"Content-Type":b.typeFull}});r(E);return}let a=(o.protocol==="https:"?cV.default:uV.default).request,{signal:u}=i,c=null,f=()=>{let b=new pw("The operation was aborted.");n(b),i.body&&i.body instanceof os.default.Readable&&i.body.destroy(b),!(!c||!c.body)&&c.body.emit("error",b)};if(u&&u.aborted){f();return}let h=()=>{f(),g()},p=a(o.toString(),s);u&&u.addEventListener("abort",h);let g=()=>{p.abort(),u&&u.removeEventListener("abort",h)};p.on("error",b=>{n(new qo(`request to ${i.url} failed, reason: ${b.message}`,"system",b)),g()}),RTe(p,b=>{c&&c.body&&c.body.destroy(b)}),process.version<"v14"&&p.on("socket",b=>{let E;b.prependListener("end",()=>{E=b._eventsCount}),b.prependListener("close",R=>{if(c&&E<b._eventsCount&&!R){let S=new Error("Premature close");S.code="ERR_STREAM_PREMATURE_CLOSE",c.body.emit("error",S)}})}),p.on("response",b=>{p.setTimeout(0);let E=VH(b.rawHeaders);if(hw(b.statusCode)){let O=E.get("Location"),B=null;try{B=O===null?null:new URL(O,i.url)}catch{if(i.redirect!=="manual"){n(new qo(`uri requested responds with an invalid redirect URL: ${O}`,"invalid-redirect")),g();return}}switch(i.redirect){case"error":n(new qo(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),g();return;case"manual":break;case"follow":{if(B===null)break;if(i.counter>=i.follow){n(new qo(`maximum redirect reached at: ${i.url}`,"max-redirect")),g();return}let M={headers:new Di(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:Qp(i),signal:i.signal,size:i.size,referrer:i.referrer,referrerPolicy:i.referrerPolicy};if(!LH(i.url,B)||!MH(i.url,B))for(let J of["authorization","www-authenticate","cookie","cookie2"])M.headers.delete(J);if(b.statusCode!==303&&i.body&&e.body instanceof os.default.Readable){n(new qo("Cannot follow redirect with body being a readable stream","unsupported-redirect")),g();return}(b.statusCode===303||(b.statusCode===301||b.statusCode===302)&&i.method==="POST")&&(M.method="GET",M.body=void 0,M.headers.delete("content-length"));let N=rV(E);N&&(M.referrerPolicy=N),r(kl(new fc(B,M))),g();return}default:return n(new TypeError(`Redirect option '${i.redirect}' is not a valid value of RequestRedirect`))}}u&&b.once("end",()=>{u.removeEventListener("abort",h)});let R=(0,os.pipeline)(b,new os.PassThrough,O=>{O&&n(O)});process.version<"v12.10"&&b.on("aborted",h);let S={url:i.url,status:b.statusCode,statusText:b.statusMessage,headers:E,size:i.size,counter:i.counter,highWaterMark:i.highWaterMark},k=E.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||k===null||b.statusCode===204||b.statusCode===304){c=new Si(R,S),r(c);return}let D={flush:Ud.default.Z_SYNC_FLUSH,finishFlush:Ud.default.Z_SYNC_FLUSH};if(k==="gzip"||k==="x-gzip"){R=(0,os.pipeline)(R,Ud.default.createGunzip(D),O=>{O&&n(O)}),c=new Si(R,S),r(c);return}if(k==="deflate"||k==="x-deflate"){let O=(0,os.pipeline)(b,new os.PassThrough,B=>{B&&n(B)});O.once("data",B=>{(B[0]&15)===8?R=(0,os.pipeline)(R,Ud.default.createInflate(),M=>{M&&n(M)}):R=(0,os.pipeline)(R,Ud.default.createInflateRaw(),M=>{M&&n(M)}),c=new Si(R,S),r(c)}),O.once("end",()=>{c||(c=new Si(R,S),r(c))});return}if(k==="br"){R=(0,os.pipeline)(R,Ud.default.createBrotliDecompress(),O=>{O&&n(O)}),c=new Si(R,S),r(c);return}c=new Si(R,S),r(c)}),HH(p,i).catch(n)})}function RTe(t,e){let r=Jv.Buffer.from(`0\r
|
|
28
28
|
\r
|
|
29
|
-
`),n=!1,i=!1,o;t.on("response",s=>{let{headers:a}=s;n=a["transfer-encoding"]==="chunked"&&!a["content-length"]}),t.on("socket",s=>{let a=()=>{if(n&&!i){let c=new Error("Premature close");c.code="ERR_STREAM_PREMATURE_CLOSE",e(c)}},u=c=>{i=Jv.Buffer.compare(c.slice(-5),r)===0,!i&&o&&(i=Jv.Buffer.compare(o.slice(-3),r.slice(0,3))===0&&Jv.Buffer.compare(c.slice(-2),r.slice(3))===0),o=c};s.prependListener("close",a),s.on("data",u),t.on("close",()=>{s.removeListener("close",a),s.removeListener("data",u)})})}var uV,cV,Ud,os,Jv,kTe,yO=U(()=>{uV=pe(require("node:http"),1),cV=pe(require("node:https"),1),Ud=pe(require("node:zlib"),1),os=pe(require("node:stream"),1),Jv=require("node:buffer");CH();lw();GH();dw();sV();lO();aV();vO();rw();ow();bO();dO();kTe=new Set(["data:","http:","https:"])});var fV,ha,Jp=U(()=>{fV="Factorio Modding Tool Kit",ha="1.1.30"});var hV=y((fwt,dV)=>{dV.exports=R1("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")});var mV=y((hwt,pV)=>{pV.exports=R1("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YaVS2w6CMAx91sR/IHuaCZDIDxncCi5Ct2yd8fNlA2RGoyS8tT2Xni5zwipDpcYz3AGJS2gUgitj58KclLjlWeNRkNKY8eNhvzOi7jo+z+JoZ6HXBGVEGIGjolfOKWxZnjHUCCzQAOVikEgGTqqpUtGahRIuvq1lbQhsEZxccABrtQ3FyD39i7DKpdqWybzszKZUHz7vuSKas9iMG77ljSw+sqokx1A8fvBHbOanv6MH104vQd5iFvrluknu8Vqj7EAGhwA9AVBLBwgtQTECxgAAAIYCAABQSwMEFAAIAAgAfQisVgAAAAAAAAAAAAAAACYAAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMwL3NldHRpbmdzLmx1YUXMUQrCMBAE0P9C77D0S8FcoOBZwsquUrrGkEzUIr27NRr8mYV5ywiDR31Cg+xefUdUgwhLVDrSkJGmcHFZge0Oh68GvlYVjg6a4SZp9Pv0/wFOKLGx6JmLwd/ZSvUGbHZ7+JNxmLcaqeinX/tu3b8BUEsHCOHbiDpxAAAApAAAAFBLAQItAxQACAAIADSRmlZ82efqYAIAABEIAAAlAAAAAAAAAAAAIAC2gQAAAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMwL2NvbnRyb2wubHVhUEsBAi0DFAAIAAgAlRKsVo56jb0EAQAAEAIAACIAAAAAAAAAAAAgALaBswIAAGRlYnVnYWRhcHRlci10ZXN0c18xLjEuMzAvZGF0YS5sdWFQSwECLQMUAAgACAC9ua1WGPBEzowAAADDAAAAIwAAAAAAAAAAACAAtoEHBAAAZGVidWdhZGFwdGVyLXRlc3RzXzEuMS4zMC9pbmZvLmpzb25QSwECLQMUAAgACAAlra1WUqj09c4AAAAwAQAAMwAAAAAAAAAAACAAtoHkBAAAZGVidWdhZGFwdGVyLXRlc3RzXzEuMS4zMC9zY2VuYXJpb3MvcnVuL2NvbnRyb2wubHVhUEsBAi0DFAAIAAgAaYkwVpSORlA8AAAAPgAAADkAAAAAAAAAAAAgALaBEwYAAGRlYnVnYWRhcHRlci10ZXN0c18xLjEuMzAvc2NlbmFyaW9zL3Rlcm1pbmF0ZS9jb250cm9sLmx1YVBLAQItAxQACAAIABiTmlYtQTECxgAAAIYCAAA1AAAAAAAAAAAAIAC2gbYGAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMwL3NjZW5hcmlvcy90aHJvdy9jb250cm9sLmx1YVBLAQItAxQACAAIAH0IrFbh24g6cQAAAKQAAAAmAAAAAAAAAAAAIAC2gd8HAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMwL3NldHRpbmdzLmx1YVBLBQYAAAAABwAHAHMCAACkCAAAAAA=")});async function xO(t,e){let r=await kl(`https://mods.factorio.com/api/mods/${t}${e?"/full":""}`);if(!r.ok)throw new Error(r.statusText);return await r.json()}var Lo,ru,TTe,nu,mw=U(()=>{"use strict";Lo=pe(require("fs/promises")),ru=pe(require("path"));yO();Jp();TTe={debugadapter:{version:ha,zip:async()=>(await Promise.resolve().then(()=>pe(hV()))).default},["debugadapter-tests"]:{version:ha,zip:async()=>(await Promise.resolve().then(()=>pe(mV()))).default}};nu=class{constructor(e,r){this.modsPath=e;this.playerdataPath=r;this.modList={mods:[]};this.Loaded=this.reload()}async reload(){let e=ru.resolve(this.modsPath,"./mod-list.json");try{this.modList=JSON.parse(await Lo.readFile(e,"utf8"))}catch{this.modList={mods:[]}}}async write(){let e=ru.resolve(this.modsPath,"./mod-list.json");return Lo.writeFile(e,JSON.stringify(this.modList,null,2),"utf8")}async getDownloadCredentials(e){let r=this.playerdataPath??ru.resolve(this.modsPath,"../player-data.json"),n=r?await Lo.readFile(r,"utf8").then(a=>JSON.parse(a)).catch(()=>{}):void 0;if(n?.["service-token"])return{username:n["service-username"],token:n["service-token"]};let i=await e(n?.["service-username"]),o=await kl("https://auth.factorio.com/api-login",{method:"POST",body:new URLSearchParams({username:i.username,password:i.password,api_version:"4",require_game_ownership:"true"})});if(!o.ok)throw new Error(o.statusText);let s=await o.json();return n&&(n["service-username"]=s.username,n["service-token"]=s.token,await Lo.writeFile(r,JSON.stringify(n,void 0,2))),s}async findInstallSource(e,r){if(r.origin!=="portal"){let o=TTe[e];if(o)return o;if(r.origin==="bundle")throw new Error(`No bundled package for ${e}`)}let n=await xO(e),i=n.releases[n.releases.length-1];return{version:i.version,zip:async()=>{let o=await this.getDownloadCredentials(r.credentialPrompt),s=await kl(`https://mods.factorio.com/${i.download_url}?username=${o.username}&token=${o.token}`);if(!s.ok)throw new Error(s.statusText);return s.body}}}async installMod(e,r){let n=await this.findInstallSource(e,r),i=n.version,o=this.modList.mods.find(f=>f.name===e),s=o?.enabled?o.version??!0:o?.enabled;async function a(f){let h=ru.resolve(f,"info.json");try{let p=await Lo.readFile(h,"utf8");if(p){let g=JSON.parse(p);if(g.name===e&&g.version===i)return!0}}catch{}return!1}if(!r.force){if(await a(ru.resolve(this.modsPath,e)))return this.set(e,i),{using:i,from:"folder",previous:s};if(await a(ru.resolve(this.modsPath,`${e}_${i}`)))return this.set(e,i),{using:i,from:"versioned_folder",previous:s};try{return await Lo.access(ru.resolve(this.modsPath,`${e}_${i}.zip`)),this.set(e,i),{using:i,from:"existing",previous:s}}catch{}}let u=Lo.writeFile(ru.resolve(this.modsPath,`${e}_${i}.zip`),await n.zip()),c;if(!r.keepOld){let f=(await Lo.readdir(this.modsPath,"utf8")).filter(h=>h.startsWith(e)&&h.endsWith(".zip")&&h!==`${e}_${i}.zip`);f.length===1&&(await Lo.unlink(ru.resolve(this.modsPath,f[0])),c=f[0].substring(e.length+1,f[0].length-4))}return this.set(e,i),await u,{using:i,from:"installed",previous:s,replaced:c}}set(e,r){let n=!!r,i=typeof r=="string"?r:void 0,o=this.modList.mods.find(s=>s.name===e);o?(o.enabled=n,o.version=i):this.modList.mods.push({name:e,enabled:n,version:i})}disableAll(){this.modList.mods.forEach(e=>e.enabled=!1)}}});function _O(t){if(t.readUInt8()!==0)return"";{let r=t.readPackedUInt_8_32();return t.readString(r)}}var An,gV=U(()=>{"use strict";An=class{constructor(){}static load(e){let r=e.readUInt8();switch(e.readUInt8(),r){case 0:return{type:r};case 1:return{type:r,value:e.readUInt8()!==0};case 2:return{type:r,value:e.readDoubleLE()};case 3:return{type:r,value:_O(e)};case 4:{let n=e.readUInt32LE(),i=[];for(let o=0;o<n;o++){_O(e);let s=An.load(e);i.push(s)}return{type:r,value:i}}case 5:{let n=e.readUInt32LE(),i={};for(let o=0;o<n;o++){let s=_O(e);if(!s)throw new Error("Missing key in PropertyTree Dictionary");let a=An.load(e);i[s]=a}return{type:r,value:i}}case 6:return{type:r,value:e.readBigInt64LE()};case 7:return{type:r,value:e.readBigUInt64LE()};default:throw new Error(`Invalid datatype in PropertyTree ${r}`)}}static saveString(e){if(!e)return Buffer.from([1]);let r=Buffer.from(e,"utf8"),n=Buffer.alloc(1);return r.length<255?n.writeInt8(r.length):(n=Buffer.alloc(5),n.writeInt8(255),n.writeUInt32LE(r.length,1)),Buffer.concat([Buffer.from([0]),n,r])}static typeTag(e){return Buffer.from([e,0])}static save(e){switch(e.type){case 3:return Buffer.concat([An.typeTag(3),An.saveString(e.value)]);case 1:return Buffer.concat([An.typeTag(1),Buffer.from([e.value?1:0])]);case 2:{let r=Buffer.alloc(8);return r.writeDoubleLE(e.value),Buffer.concat([An.typeTag(2),r])}case 6:{let r=Buffer.alloc(8);return r.writeBigInt64LE(e.value),Buffer.concat([An.typeTag(6),r])}case 7:{let r=Buffer.alloc(8);return r.writeBigUInt64LE(e.value),Buffer.concat([An.typeTag(7),r])}case 0:return An.typeTag(0);case 4:{let r=Buffer.alloc(4);return r.writeInt32LE(e.value.length),Buffer.concat([An.typeTag(4),r,Buffer.concat(e.value.map(n=>Buffer.concat([An.saveString(""),An.save(n)])))])}case 5:{let r=[];for(let i in e.value)if(Object.prototype.hasOwnProperty.call(e.value,i)){let o=e.value[i];r.push(Buffer.concat([An.saveString(i),An.save(o)]))}let n=Buffer.alloc(4);return n.writeInt32LE(r.length),Buffer.concat([An.typeTag(5),n,Buffer.concat(r)])}default:throw new Error(`Invalid datatype in PropertyTree ${e.type}`)}}}});var dc,wO=U(()=>{"use strict";dc=class{constructor(e,r,n,i,o){this.main=e;this.major=r;this.minor=n;this.patch=i;this.branch=o}static load(e){let r=e.readUInt16LE(),n=e.readUInt16LE(),i=e.readUInt16LE(),o=e.readUInt16LE(),s=e.readUInt8();return new dc(r,n,i,o,s)}save(){let e=Buffer.alloc(9);return e.writeUInt16LE(this.main,0),e.writeUInt16LE(this.major,2),e.writeUInt16LE(this.minor,4),e.writeUInt16LE(this.patch,6),e.writeInt8(this.branch,8),e}format(){return`${this.main}.${this.major}.${this.minor}-${this.patch}`}isBeyond(e,r,n,i){return this.main<e?!1:r===void 0?!0:this.major<r?!1:n===void 0?!0:this.minor<n?!1:i===void 0?!0:!(this.patch<i)}}});var gw,vV,Os,vw=U(()=>{"use strict";gV();wO();gw=pe(require("assert")),vV=["startup","runtime-global","runtime-per-user"],Os=class{constructor(e){this.version=dc.load(e);let r=An.load(e);(0,gw.default)(r.type===5);let n={startup:{},["runtime-global"]:{},["runtime-per-user"]:{}};for(let i of vV){let o=r.value[i];(0,gw.default)(o.type===5);let s=n[i];for(let a in o.value){let u=o.value[a];(0,gw.default)(u.type===5);let c=u.value.value;switch(c.type){case 3:s[a]={type:"string",value:c.value};break;case 2:s[a]={type:"number",value:c.value};break;case 6:s[a]={type:"int",value:c.value};break;case 1:s[a]={type:"bool",value:c.value};break;case 5:let f=c.value;if("r"in f&&f.r.type===2&&"g"in f&&f.g.type===2&&"b"in f&&f.b.type===2&&"a"in f&&f.a.type===2)s[a]={type:"color",value:{r:f.r.value,g:f.g.value,b:f.b.value,a:f.a.value}};else throw new Error(`Dictionary value in ModSettings Tree does not match any known structure at ${i} ${a}`);break;default:throw new Error(`Unexpected type in ModSettings Tree: ${c.type}`)}}}this._settings=n}get settings(){return this._settings}save(){let e={type:5,value:{}};for(let r of vV){let n=this._settings[r],i={type:5,value:{}};e.value[r]=i;for(let o in n){let s=n[o];switch(s.type){case"string":i.value[o]={type:5,value:{value:{type:3,value:s.value}}};break;case"bool":i.value[o]={type:5,value:{value:{type:1,value:s.value}}};break;case"int":i.value[o]={type:5,value:{value:{type:6,value:s.value}}};break;case"number":i.value[o]={type:5,value:{value:{type:2,value:s.value}}};break;case"color":i.value[o]={type:5,value:{value:{type:5,value:{r:{type:2,value:s.value.r},g:{type:2,value:s.value.g},b:{type:2,value:s.value.b},a:{type:2,value:s.value.a}}}}};break;default:break}}}return Buffer.concat([this.version.save(),An.save(e)])}set(e,r,n){n===void 0?delete this._settings[e][r]:this._settings[e][r]=n}get(e,r){return this._settings[e][r]}*list(){for(let e in this._settings)for(let r in this._settings[e]){let n=this._settings[e][r];yield{scope:e,setting:r,value:n.value}}}}});var bV,qn,Rl=U(()=>{"use strict";bV=require("stream"),qn=class extends bV.Readable{constructor(e){super(),this.push(e),this.push(null)}readUInt8(){return this.read(1).readUInt8()}readUInt16LE(){return this.read(2).readUInt16LE()}readUInt32LE(){return this.read(4).readUInt32LE()}readInt32LE(){return this.read(4).readInt32LE()}readBigInt64LE(){return this.read(8).readBigInt64LE()}readBigUInt64LE(){return this.read(8).readBigUInt64LE()}readDoubleLE(){return this.read(8).readDoubleLE()}readPackedUInt_8_32(){let e=this.readUInt8();return e===255&&(e=this.readUInt32LE()),e}readPackedUInt_16_32(){let e=this.readUInt16LE();return e===65535&&(e=this.readUInt32LE()),e}readString(e){return e===0?"":this.read(e).toString("utf8")}}});function yV(t,e){for(let r=0;r<e.length;r++){let n=t.readUInt8();if(n!==e[r])throw new Error(`Invalid Header at offset ${r}, expected ${e[r]} got ${n}`)}}function Xv(t){let e=t.readBigUInt64LE(),r=e>1?t.read(Number(e)-1):Buffer.alloc(0,0);return e>0&&t.readUInt8(),r}var PTe,FTe,EO,DO,SO,Xp,em,xV=U(()=>{"use strict";Rl();PTe=[27,76,117,97,82,0,1,4,8,4,8,0,25,147,13,10,26,10],FTe=[27,80,104,111,16,66,245,0];EO=class{constructor(e){this.raw=e}get Op(){return this.raw&63}get A(){return this.raw>>6&255}get B(){return this.raw>>23&511}get C(){return this.raw>>14&511}get Ax(){return this.raw>>6&67108863}get Bx(){return this.raw>>14&262143}get sBx(){return this.Bx-131071}get line(){return this._line??1}set line(e){if(this._line===void 0)this._line=e;else throw new Error("LuaInstruction.line can only be set once")}get column(){return this._column??0}set column(e){if(this._column===void 0)this._column=e;else throw new Error("LuaInstruction.column can only be set once")}get source_idx(){return this._source_idx??0}set source_idx(e){if(this._source_idx===void 0)this._source_idx=e;else throw new Error("LuaInstruction.source_idx can only be set once")}},DO=class{constructor(e){this.instack=e.readUInt8()!==0,this.idx=e.readUInt8()}},SO=class{constructor(e){this.name=Xv(e).toString("utf8"),this.start=e.readUInt32LE(),this.end=e.readUInt32LE()}},Xp=class{constructor(e,r){this.type=e;this.value=r;switch(e){case 0:if(r!==void 0)throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 1:if(typeof r!="boolean")throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 3:if(typeof r!="number")throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 4:if(!(r instanceof Buffer))throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;default:throw new Error(`Invalid Lua Constant Type: ${e}`)}}get label(){switch(this.type){case 0:return"nil";case 1:case 3:return this.value.toString();case 4:return`"${this.value.toString("utf8")}"`;default:throw new Error(`Invalid Lua Constant Type: ${this.type} ${this.value}`)}}},em=class{constructor(e,r){this.locals=[];this.upvals=[];this.instructions=[];this.constants=[];this.inner_functions=[];r&&yV(e,PTe),this.firstline=e.readUInt32LE(),this.lastline=e.readUInt32LE(),this.nparam=e.readUInt8(),this.is_vararg=e.readUInt8()!==0,this.maxstack=e.readUInt8();let n=e.readUInt32LE();for(let f=0;f<n;f++){let h=e.readUInt32LE();this.instructions.push(new EO(h))}let i=e.readUInt32LE();for(let f=0;f<i;f++){let h=e.readUInt8();switch(h){case 0:this.constants.push(new Xp(0));break;case 1:this.constants.push(new Xp(1,e.readUInt8()!==0));break;case 3:this.constants.push(new Xp(3,e.readDoubleLE()));break;case 4:this.constants.push(new Xp(4,Xv(e)));break;default:throw new Error(`Invalid Lua Constant Type: ${h}`)}}let o=e.readUInt32LE();for(let f=0;f<o;f++)this.inner_functions.push(new em(e));let s=e.readUInt32LE();for(let f=0;f<s;f++)this.upvals.push(new DO(e));this.sources=[Xv(e).toString("utf8")];let a=e.readUInt32LE();for(let f=0;f<a;f++)this.instructions[f].line=e.readUInt32LE();let u=e.readUInt32LE();for(let f=0;f<u;f++)this.locals.push(new SO(e));let c=e.readUInt32LE();for(let f=0;f<c;f++)this.upvals[f].name=Xv(e).toString("utf8");if(this.constants.length>1)try{let f=this.constants[this.constants.length-1];if(f.type===4){let h=new qn(f.value);yV(h,FTe);let p=h.readUInt32LE(),g=h.readUInt32LE(),b=h.readUInt32LE(),E=[];for(let B=0;B<b;B++)E[B]=e.readUInt32LE();let R=h.readUInt32LE(),S=[];for(let B=0;B<R;B++)S.push(Xv(h).toString("utf8"));let k=h.readUInt32LE(),D=0,O=0;for(let B=0;B<k;B++){let M=h.readUInt32LE();for(;O<M;O++)this.instructions[O].source_idx=D;D=h.readUInt32LE()}for(;O<this.instructions.length;O++)this.instructions[O].source_idx=D;this.firstcolumn=p,this.lastcolumn=g;for(let B=0;B<b;B++)this.instructions[B].column=E[B];this.sources.push(...S)}}catch{}}get baseAddr(){return this._baseAddr}rebase(e){let r=e;return this._baseAddr=r,r+=this.instructions.length,this.inner_functions.forEach(n=>{r=n.rebase(r)}),r}walk_functions(e){e(this),this.inner_functions.forEach(r=>r.walk_functions(e))}getFunctionAtStartLine(e){if(this.firstline===e)return this;if(this.firstline<e&&(this.lastline===0||this.lastline>e)&&this.inner_functions)for(let r=0;r<this.inner_functions.length;r++){let n=this.inner_functions[r].getFunctionAtStartLine(e);if(n)return n}}getInstructionsAtBase(e,r){if(!(r===0||!this._baseAddr)&&this._baseAddr<=e&&this._baseAddr+this.instructions.length>e){let n=e-this._baseAddr,i=[];n+r>this.instructions.length&&(r=this.instructions.length-n);for(let o=0;o<r;o++)i.push({address:"0x"+(this._baseAddr+n+o).toString(16),instruction:this.getInstructionLabel(o+n),line:this.instructions[o+n].line,instructionBytes:this.instructions[o+n].raw.toString(16).padStart(8,"0"),symbol:o+n===0?this.sources[this.instructions[o+n].source_idx??0]+":"+this.firstline:void 0});return i}}getDisassembledSingleFunction(){let e=this.instructions.map((r,n)=>this.getInstructionLabel(n));return[`function at ${this.sources[0]}:${this.firstline}-${this.lastline}`,`${this.is_vararg?"vararg":`${this.nparam} params`} ${this.upvals.length} upvals ${this.maxstack} maxstack`,`${this.instructions.length} instructions ${this.constants.length} constants ${this.inner_functions.length} functions`,...e].join(`
|
|
29
|
+
`),n=!1,i=!1,o;t.on("response",s=>{let{headers:a}=s;n=a["transfer-encoding"]==="chunked"&&!a["content-length"]}),t.on("socket",s=>{let a=()=>{if(n&&!i){let c=new Error("Premature close");c.code="ERR_STREAM_PREMATURE_CLOSE",e(c)}},u=c=>{i=Jv.Buffer.compare(c.slice(-5),r)===0,!i&&o&&(i=Jv.Buffer.compare(o.slice(-3),r.slice(0,3))===0&&Jv.Buffer.compare(c.slice(-2),r.slice(3))===0),o=c};s.prependListener("close",a),s.on("data",u),t.on("close",()=>{s.removeListener("close",a),s.removeListener("data",u)})})}var uV,cV,Ud,os,Jv,kTe,yO=U(()=>{uV=pe(require("node:http"),1),cV=pe(require("node:https"),1),Ud=pe(require("node:zlib"),1),os=pe(require("node:stream"),1),Jv=require("node:buffer");CH();lw();GH();dw();sV();lO();aV();vO();rw();ow();bO();dO();kTe=new Set(["data:","http:","https:"])});var fV,ha,Jp=U(()=>{fV="Factorio Modding Tool Kit",ha="1.1.31"});var hV=y((fwt,dV)=>{dV.exports=R1("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")});var mV=y((hwt,pV)=>{pV.exports=R1("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YaVS2w6CMAx91sR/IHuaCZDIDxncCi5Ct2yd8fNlA2RGoyS8tT2Xni5zwipDpcYz3AGJS2gUgitj58KclLjlWeNRkNKY8eNhvzOi7jo+z+JoZ6HXBGVEGIGjolfOKWxZnjHUCCzQAOVikEgGTqqpUtGahRIuvq1lbQhsEZxccABrtQ3FyD39i7DKpdqWybzszKZUHz7vuSKas9iMG77ljSw+sqokx1A8fvBHbOanv6MH104vQd5iFvrluknu8Vqj7EAGhwA9AVBLBwgtQTECxgAAAIYCAABQSwMEFAAIAAgAfQisVgAAAAAAAAAAAAAAACYAAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMxL3NldHRpbmdzLmx1YUXMUQrCMBAE0P9C77D0S8FcoOBZwsquUrrGkEzUIr27NRr8mYV5ywiDR31Cg+xefUdUgwhLVDrSkJGmcHFZge0Oh68GvlYVjg6a4SZp9Pv0/wFOKLGx6JmLwd/ZSvUGbHZ7+JNxmLcaqeinX/tu3b8BUEsHCOHbiDpxAAAApAAAAFBLAQItAxQACAAIADSRmlZ82efqYAIAABEIAAAlAAAAAAAAAAAAIAC2gQAAAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMxL2NvbnRyb2wubHVhUEsBAi0DFAAIAAgAlRKsVo56jb0EAQAAEAIAACIAAAAAAAAAAAAgALaBswIAAGRlYnVnYWRhcHRlci10ZXN0c18xLjEuMzEvZGF0YS5sdWFQSwECLQMUAAgACACjpq5WL5qGz4wAAADDAAAAIwAAAAAAAAAAACAAtoEHBAAAZGVidWdhZGFwdGVyLXRlc3RzXzEuMS4zMS9pbmZvLmpzb25QSwECLQMUAAgACAAlra1WUqj09c4AAAAwAQAAMwAAAAAAAAAAACAAtoHkBAAAZGVidWdhZGFwdGVyLXRlc3RzXzEuMS4zMS9zY2VuYXJpb3MvcnVuL2NvbnRyb2wubHVhUEsBAi0DFAAIAAgAaYkwVpSORlA8AAAAPgAAADkAAAAAAAAAAAAgALaBEwYAAGRlYnVnYWRhcHRlci10ZXN0c18xLjEuMzEvc2NlbmFyaW9zL3Rlcm1pbmF0ZS9jb250cm9sLmx1YVBLAQItAxQACAAIABiTmlYtQTECxgAAAIYCAAA1AAAAAAAAAAAAIAC2gbYGAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMxL3NjZW5hcmlvcy90aHJvdy9jb250cm9sLmx1YVBLAQItAxQACAAIAH0IrFbh24g6cQAAAKQAAAAmAAAAAAAAAAAAIAC2gd8HAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMS4xLjMxL3NldHRpbmdzLmx1YVBLBQYAAAAABwAHAHMCAACkCAAAAAA=")});async function xO(t,e){let r=await kl(`https://mods.factorio.com/api/mods/${t}${e?"/full":""}`);if(!r.ok)throw new Error(r.statusText);return await r.json()}var Lo,ru,TTe,nu,mw=U(()=>{"use strict";Lo=pe(require("fs/promises")),ru=pe(require("path"));yO();Jp();TTe={debugadapter:{version:ha,zip:async()=>(await Promise.resolve().then(()=>pe(hV()))).default},["debugadapter-tests"]:{version:ha,zip:async()=>(await Promise.resolve().then(()=>pe(mV()))).default}};nu=class{constructor(e,r){this.modsPath=e;this.playerdataPath=r;this.modList={mods:[]};this.Loaded=this.reload()}async reload(){let e=ru.resolve(this.modsPath,"./mod-list.json");try{this.modList=JSON.parse(await Lo.readFile(e,"utf8"))}catch{this.modList={mods:[]}}}async write(){let e=ru.resolve(this.modsPath,"./mod-list.json");return Lo.writeFile(e,JSON.stringify(this.modList,null,2),"utf8")}async getDownloadCredentials(e){let r=this.playerdataPath??ru.resolve(this.modsPath,"../player-data.json"),n=r?await Lo.readFile(r,"utf8").then(a=>JSON.parse(a)).catch(()=>{}):void 0;if(n?.["service-token"])return{username:n["service-username"],token:n["service-token"]};let i=await e(n?.["service-username"]),o=await kl("https://auth.factorio.com/api-login",{method:"POST",body:new URLSearchParams({username:i.username,password:i.password,api_version:"4",require_game_ownership:"true"})});if(!o.ok)throw new Error(o.statusText);let s=await o.json();return n&&(n["service-username"]=s.username,n["service-token"]=s.token,await Lo.writeFile(r,JSON.stringify(n,void 0,2))),s}async findInstallSource(e,r){if(r.origin!=="portal"){let o=TTe[e];if(o)return o;if(r.origin==="bundle")throw new Error(`No bundled package for ${e}`)}let n=await xO(e),i=n.releases[n.releases.length-1];return{version:i.version,zip:async()=>{let o=await this.getDownloadCredentials(r.credentialPrompt),s=await kl(`https://mods.factorio.com/${i.download_url}?username=${o.username}&token=${o.token}`);if(!s.ok)throw new Error(s.statusText);return s.body}}}async installMod(e,r){let n=await this.findInstallSource(e,r),i=n.version,o=this.modList.mods.find(f=>f.name===e),s=o?.enabled?o.version??!0:o?.enabled;async function a(f){let h=ru.resolve(f,"info.json");try{let p=await Lo.readFile(h,"utf8");if(p){let g=JSON.parse(p);if(g.name===e&&g.version===i)return!0}}catch{}return!1}if(!r.force){if(await a(ru.resolve(this.modsPath,e)))return this.set(e,i),{using:i,from:"folder",previous:s};if(await a(ru.resolve(this.modsPath,`${e}_${i}`)))return this.set(e,i),{using:i,from:"versioned_folder",previous:s};try{return await Lo.access(ru.resolve(this.modsPath,`${e}_${i}.zip`)),this.set(e,i),{using:i,from:"existing",previous:s}}catch{}}let u=Lo.writeFile(ru.resolve(this.modsPath,`${e}_${i}.zip`),await n.zip()),c;if(!r.keepOld){let f=(await Lo.readdir(this.modsPath,"utf8")).filter(h=>h.startsWith(e)&&h.endsWith(".zip")&&h!==`${e}_${i}.zip`);f.length===1&&(await Lo.unlink(ru.resolve(this.modsPath,f[0])),c=f[0].substring(e.length+1,f[0].length-4))}return this.set(e,i),await u,{using:i,from:"installed",previous:s,replaced:c}}set(e,r){let n=!!r,i=typeof r=="string"?r:void 0,o=this.modList.mods.find(s=>s.name===e);o?(o.enabled=n,o.version=i):this.modList.mods.push({name:e,enabled:n,version:i})}disableAll(){this.modList.mods.forEach(e=>e.enabled=!1)}}});function _O(t){if(t.readUInt8()!==0)return"";{let r=t.readPackedUInt_8_32();return t.readString(r)}}var An,gV=U(()=>{"use strict";An=class{constructor(){}static load(e){let r=e.readUInt8();switch(e.readUInt8(),r){case 0:return{type:r};case 1:return{type:r,value:e.readUInt8()!==0};case 2:return{type:r,value:e.readDoubleLE()};case 3:return{type:r,value:_O(e)};case 4:{let n=e.readUInt32LE(),i=[];for(let o=0;o<n;o++){_O(e);let s=An.load(e);i.push(s)}return{type:r,value:i}}case 5:{let n=e.readUInt32LE(),i={};for(let o=0;o<n;o++){let s=_O(e);if(!s)throw new Error("Missing key in PropertyTree Dictionary");let a=An.load(e);i[s]=a}return{type:r,value:i}}case 6:return{type:r,value:e.readBigInt64LE()};case 7:return{type:r,value:e.readBigUInt64LE()};default:throw new Error(`Invalid datatype in PropertyTree ${r}`)}}static saveString(e){if(!e)return Buffer.from([1]);let r=Buffer.from(e,"utf8"),n=Buffer.alloc(1);return r.length<255?n.writeInt8(r.length):(n=Buffer.alloc(5),n.writeInt8(255),n.writeUInt32LE(r.length,1)),Buffer.concat([Buffer.from([0]),n,r])}static typeTag(e){return Buffer.from([e,0])}static save(e){switch(e.type){case 3:return Buffer.concat([An.typeTag(3),An.saveString(e.value)]);case 1:return Buffer.concat([An.typeTag(1),Buffer.from([e.value?1:0])]);case 2:{let r=Buffer.alloc(8);return r.writeDoubleLE(e.value),Buffer.concat([An.typeTag(2),r])}case 6:{let r=Buffer.alloc(8);return r.writeBigInt64LE(e.value),Buffer.concat([An.typeTag(6),r])}case 7:{let r=Buffer.alloc(8);return r.writeBigUInt64LE(e.value),Buffer.concat([An.typeTag(7),r])}case 0:return An.typeTag(0);case 4:{let r=Buffer.alloc(4);return r.writeInt32LE(e.value.length),Buffer.concat([An.typeTag(4),r,Buffer.concat(e.value.map(n=>Buffer.concat([An.saveString(""),An.save(n)])))])}case 5:{let r=[];for(let i in e.value)if(Object.prototype.hasOwnProperty.call(e.value,i)){let o=e.value[i];r.push(Buffer.concat([An.saveString(i),An.save(o)]))}let n=Buffer.alloc(4);return n.writeInt32LE(r.length),Buffer.concat([An.typeTag(5),n,Buffer.concat(r)])}default:throw new Error(`Invalid datatype in PropertyTree ${e.type}`)}}}});var dc,wO=U(()=>{"use strict";dc=class{constructor(e,r,n,i,o){this.main=e;this.major=r;this.minor=n;this.patch=i;this.branch=o}static load(e){let r=e.readUInt16LE(),n=e.readUInt16LE(),i=e.readUInt16LE(),o=e.readUInt16LE(),s=e.readUInt8();return new dc(r,n,i,o,s)}save(){let e=Buffer.alloc(9);return e.writeUInt16LE(this.main,0),e.writeUInt16LE(this.major,2),e.writeUInt16LE(this.minor,4),e.writeUInt16LE(this.patch,6),e.writeInt8(this.branch,8),e}format(){return`${this.main}.${this.major}.${this.minor}-${this.patch}`}isBeyond(e,r,n,i){return this.main<e?!1:r===void 0?!0:this.major<r?!1:n===void 0?!0:this.minor<n?!1:i===void 0?!0:!(this.patch<i)}}});var gw,vV,Os,vw=U(()=>{"use strict";gV();wO();gw=pe(require("assert")),vV=["startup","runtime-global","runtime-per-user"],Os=class{constructor(e){this.version=dc.load(e);let r=An.load(e);(0,gw.default)(r.type===5);let n={startup:{},["runtime-global"]:{},["runtime-per-user"]:{}};for(let i of vV){let o=r.value[i];(0,gw.default)(o.type===5);let s=n[i];for(let a in o.value){let u=o.value[a];(0,gw.default)(u.type===5);let c=u.value.value;switch(c.type){case 3:s[a]={type:"string",value:c.value};break;case 2:s[a]={type:"number",value:c.value};break;case 6:s[a]={type:"int",value:c.value};break;case 1:s[a]={type:"bool",value:c.value};break;case 5:let f=c.value;if("r"in f&&f.r.type===2&&"g"in f&&f.g.type===2&&"b"in f&&f.b.type===2&&"a"in f&&f.a.type===2)s[a]={type:"color",value:{r:f.r.value,g:f.g.value,b:f.b.value,a:f.a.value}};else throw new Error(`Dictionary value in ModSettings Tree does not match any known structure at ${i} ${a}`);break;default:throw new Error(`Unexpected type in ModSettings Tree: ${c.type}`)}}}this._settings=n}get settings(){return this._settings}save(){let e={type:5,value:{}};for(let r of vV){let n=this._settings[r],i={type:5,value:{}};e.value[r]=i;for(let o in n){let s=n[o];switch(s.type){case"string":i.value[o]={type:5,value:{value:{type:3,value:s.value}}};break;case"bool":i.value[o]={type:5,value:{value:{type:1,value:s.value}}};break;case"int":i.value[o]={type:5,value:{value:{type:6,value:s.value}}};break;case"number":i.value[o]={type:5,value:{value:{type:2,value:s.value}}};break;case"color":i.value[o]={type:5,value:{value:{type:5,value:{r:{type:2,value:s.value.r},g:{type:2,value:s.value.g},b:{type:2,value:s.value.b},a:{type:2,value:s.value.a}}}}};break;default:break}}}return Buffer.concat([this.version.save(),An.save(e)])}set(e,r,n){n===void 0?delete this._settings[e][r]:this._settings[e][r]=n}get(e,r){return this._settings[e][r]}*list(){for(let e in this._settings)for(let r in this._settings[e]){let n=this._settings[e][r];yield{scope:e,setting:r,value:n.value}}}}});var bV,qn,Rl=U(()=>{"use strict";bV=require("stream"),qn=class extends bV.Readable{constructor(e){super(),this.push(e),this.push(null)}readUInt8(){return this.read(1).readUInt8()}readUInt16LE(){return this.read(2).readUInt16LE()}readUInt32LE(){return this.read(4).readUInt32LE()}readInt32LE(){return this.read(4).readInt32LE()}readBigInt64LE(){return this.read(8).readBigInt64LE()}readBigUInt64LE(){return this.read(8).readBigUInt64LE()}readDoubleLE(){return this.read(8).readDoubleLE()}readPackedUInt_8_32(){let e=this.readUInt8();return e===255&&(e=this.readUInt32LE()),e}readPackedUInt_16_32(){let e=this.readUInt16LE();return e===65535&&(e=this.readUInt32LE()),e}readString(e){return e===0?"":this.read(e).toString("utf8")}}});function yV(t,e){for(let r=0;r<e.length;r++){let n=t.readUInt8();if(n!==e[r])throw new Error(`Invalid Header at offset ${r}, expected ${e[r]} got ${n}`)}}function Xv(t){let e=t.readBigUInt64LE(),r=e>1?t.read(Number(e)-1):Buffer.alloc(0,0);return e>0&&t.readUInt8(),r}var PTe,FTe,EO,DO,SO,Xp,em,xV=U(()=>{"use strict";Rl();PTe=[27,76,117,97,82,0,1,4,8,4,8,0,25,147,13,10,26,10],FTe=[27,80,104,111,16,66,245,0];EO=class{constructor(e){this.raw=e}get Op(){return this.raw&63}get A(){return this.raw>>6&255}get B(){return this.raw>>23&511}get C(){return this.raw>>14&511}get Ax(){return this.raw>>6&67108863}get Bx(){return this.raw>>14&262143}get sBx(){return this.Bx-131071}get line(){return this._line??1}set line(e){if(this._line===void 0)this._line=e;else throw new Error("LuaInstruction.line can only be set once")}get column(){return this._column??0}set column(e){if(this._column===void 0)this._column=e;else throw new Error("LuaInstruction.column can only be set once")}get source_idx(){return this._source_idx??0}set source_idx(e){if(this._source_idx===void 0)this._source_idx=e;else throw new Error("LuaInstruction.source_idx can only be set once")}},DO=class{constructor(e){this.instack=e.readUInt8()!==0,this.idx=e.readUInt8()}},SO=class{constructor(e){this.name=Xv(e).toString("utf8"),this.start=e.readUInt32LE(),this.end=e.readUInt32LE()}},Xp=class{constructor(e,r){this.type=e;this.value=r;switch(e){case 0:if(r!==void 0)throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 1:if(typeof r!="boolean")throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 3:if(typeof r!="number")throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;case 4:if(!(r instanceof Buffer))throw new Error(`Invalid Lua Constant: ${e} ${r}`);break;default:throw new Error(`Invalid Lua Constant Type: ${e}`)}}get label(){switch(this.type){case 0:return"nil";case 1:case 3:return this.value.toString();case 4:return`"${this.value.toString("utf8")}"`;default:throw new Error(`Invalid Lua Constant Type: ${this.type} ${this.value}`)}}},em=class{constructor(e,r){this.locals=[];this.upvals=[];this.instructions=[];this.constants=[];this.inner_functions=[];r&&yV(e,PTe),this.firstline=e.readUInt32LE(),this.lastline=e.readUInt32LE(),this.nparam=e.readUInt8(),this.is_vararg=e.readUInt8()!==0,this.maxstack=e.readUInt8();let n=e.readUInt32LE();for(let f=0;f<n;f++){let h=e.readUInt32LE();this.instructions.push(new EO(h))}let i=e.readUInt32LE();for(let f=0;f<i;f++){let h=e.readUInt8();switch(h){case 0:this.constants.push(new Xp(0));break;case 1:this.constants.push(new Xp(1,e.readUInt8()!==0));break;case 3:this.constants.push(new Xp(3,e.readDoubleLE()));break;case 4:this.constants.push(new Xp(4,Xv(e)));break;default:throw new Error(`Invalid Lua Constant Type: ${h}`)}}let o=e.readUInt32LE();for(let f=0;f<o;f++)this.inner_functions.push(new em(e));let s=e.readUInt32LE();for(let f=0;f<s;f++)this.upvals.push(new DO(e));this.sources=[Xv(e).toString("utf8")];let a=e.readUInt32LE();for(let f=0;f<a;f++)this.instructions[f].line=e.readUInt32LE();let u=e.readUInt32LE();for(let f=0;f<u;f++)this.locals.push(new SO(e));let c=e.readUInt32LE();for(let f=0;f<c;f++)this.upvals[f].name=Xv(e).toString("utf8");if(this.constants.length>1)try{let f=this.constants[this.constants.length-1];if(f.type===4){let h=new qn(f.value);yV(h,FTe);let p=h.readUInt32LE(),g=h.readUInt32LE(),b=h.readUInt32LE(),E=[];for(let B=0;B<b;B++)E[B]=e.readUInt32LE();let R=h.readUInt32LE(),S=[];for(let B=0;B<R;B++)S.push(Xv(h).toString("utf8"));let k=h.readUInt32LE(),D=0,O=0;for(let B=0;B<k;B++){let M=h.readUInt32LE();for(;O<M;O++)this.instructions[O].source_idx=D;D=h.readUInt32LE()}for(;O<this.instructions.length;O++)this.instructions[O].source_idx=D;this.firstcolumn=p,this.lastcolumn=g;for(let B=0;B<b;B++)this.instructions[B].column=E[B];this.sources.push(...S)}}catch{}}get baseAddr(){return this._baseAddr}rebase(e){let r=e;return this._baseAddr=r,r+=this.instructions.length,this.inner_functions.forEach(n=>{r=n.rebase(r)}),r}walk_functions(e){e(this),this.inner_functions.forEach(r=>r.walk_functions(e))}getFunctionAtStartLine(e){if(this.firstline===e)return this;if(this.firstline<e&&(this.lastline===0||this.lastline>e)&&this.inner_functions)for(let r=0;r<this.inner_functions.length;r++){let n=this.inner_functions[r].getFunctionAtStartLine(e);if(n)return n}}getInstructionsAtBase(e,r){if(!(r===0||!this._baseAddr)&&this._baseAddr<=e&&this._baseAddr+this.instructions.length>e){let n=e-this._baseAddr,i=[];n+r>this.instructions.length&&(r=this.instructions.length-n);for(let o=0;o<r;o++)i.push({address:"0x"+(this._baseAddr+n+o).toString(16),instruction:this.getInstructionLabel(o+n),line:this.instructions[o+n].line,instructionBytes:this.instructions[o+n].raw.toString(16).padStart(8,"0"),symbol:o+n===0?this.sources[this.instructions[o+n].source_idx??0]+":"+this.firstline:void 0});return i}}getDisassembledSingleFunction(){let e=this.instructions.map((r,n)=>this.getInstructionLabel(n));return[`function at ${this.sources[0]}:${this.firstline}-${this.lastline}`,`${this.is_vararg?"vararg":`${this.nparam} params`} ${this.upvals.length} upvals ${this.maxstack} maxstack`,`${this.instructions.length} instructions ${this.constants.length} constants ${this.inner_functions.length} functions`,...e].join(`
|
|
30
30
|
`)}getInstructionLabel(e){let r=this.instructions[e],n=this.instructions[e+1];switch(r.Op){case 1:return`LOADK ${this.getRegisterLabel(e,r.A)} := ${this.constants[r.Bx].label}`;case 2:return`LOADKX ${this.getRegisterLabel(e,r.A)} := ${this.constants[n.Ax].label}`;case 3:return`LOADBOOL ${this.getRegisterLabel(e,r.A)} := ${r.B!==0}${r.C!==0?" pc++":""}`;case 4:return`LOADNIL ${this.getRegisterLabel(e,r.A)}...${this.getRegisterLabel(e,r.A+r.B)})`;case 5:return`GETUPVAL ${this.getRegisterLabel(e,r.A)} := ${this.getUpvalLabel(r.B)}`;case 6:return`GETTABUP ${this.getRegisterLabel(e,r.A)} := ${this.getUpvalLabel(r.B)}[${this.getRegisterOrConstantLabel(e,r.C)}]`;case 7:return`GETTABLE ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.B)}[${this.getRegisterOrConstantLabel(e,r.C)}]`;case 8:return`SETTABUP ${this.getUpvalLabel(r.A)}[${this.getRegisterOrConstantLabel(e,r.B)}] := ${this.getRegisterOrConstantLabel(e,r.C)}`;case 9:return`SETUPVAL ${this.getUpvalLabel(r.B)} := ${this.getRegisterLabel(e,r.A)}`;case 10:return`SETTABLE ${this.getRegisterLabel(e,r.A)}[${this.getRegisterOrConstantLabel(e,r.B)}] := ${this.getRegisterOrConstantLabel(e,r.C)}`;case 11:{let a=r.B,u=this.fb2int(a),c=r.C,f=this.fb2int(c),h=a===u?`${u}`:`${a}->${u}`,p=c===f?`${f}`:`${c}->${f}`;return`NEWTABLE ${this.getRegisterLabel(e,r.A)} := {} size(${h},${p})`}case 12:return`SELF ${this.getRegisterLabel(e,r.A+1)} := ${this.getRegisterLabel(e,r.B)}; ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.B)}[${this.getRegisterOrConstantLabel(e,r.C)}]`;case 13:return`ADD ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} + ${this.getRegisterOrConstantLabel(e,r.C)}`;case 14:return`SUB ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} - ${this.getRegisterOrConstantLabel(e,r.C)}`;case 15:return`MUL ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} * ${this.getRegisterOrConstantLabel(e,r.C)}`;case 16:return`DIV ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} / ${this.getRegisterOrConstantLabel(e,r.C)}`;case 17:return`MOD ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} % ${this.getRegisterOrConstantLabel(e,r.C)}`;case 18:return`POW ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterOrConstantLabel(e,r.B)} ^ ${this.getRegisterOrConstantLabel(e,r.C)}`;case 0:return`MOVE ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.B)}`;case 19:return`UNM ${this.getRegisterLabel(e,r.A)} := -${this.getRegisterLabel(e,r.B)}`;case 20:return`NOT ${this.getRegisterLabel(e,r.A)} := not ${this.getRegisterLabel(e,r.B)}`;case 21:return`LEN ${this.getRegisterLabel(e,r.A)} := length of ${this.getRegisterLabel(e,r.B)}`;case 22:return`CONCAT ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.B)}.. ... ..${this.getRegisterLabel(e,r.C)}`;case 23:return`JMP pc+=${r.sBx}${r.A?`; close >= ${r.A-1}`:""}`;case 24:return`EQ if(${this.getRegisterOrConstantLabel(e,r.B)} ${r.A?"~=":"=="} ${this.getRegisterOrConstantLabel(e,r.B)}) then pc++`;case 25:return`LT if(${this.getRegisterOrConstantLabel(e,r.B)} ${r.A?">=":"<"} ${this.getRegisterOrConstantLabel(e,r.B)}) then pc++`;case 26:return`LE if(${this.getRegisterOrConstantLabel(e,r.B)} ${r.A?">":"<="} ${this.getRegisterOrConstantLabel(e,r.B)}) then pc++`;case 27:return`TEST if ${r.C?"not ":""}${this.getRegisterLabel(e,r.A)} then pc++`;case 28:return`TESTSET if ${r.C?"":"not "}${this.getRegisterLabel(e,r.A)} then ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.B)} else pc++`;case 29:return`CALL ${this.getRegisterLabel(e,r.A)}(${r.B?r.B-1:"var"} args ${r.C?r.C-1:"var"} returns)`;case 30:return`TAILCALL return ${this.getRegisterLabel(e,r.A)}(${r.B?r.B-1:"var"} args)`;case 31:return`RETURN return ${r.B?r.B-1:"var"} results ${r.B>1?`starting at ${this.getRegisterLabel(e,r.A)}`:""}`;case 32:return`FORLOOP ${this.getRegisterLabel(e,r.A)} += ${this.getRegisterLabel(e,r.A+2)}; if ${this.getRegisterLabel(e,r.A)} <= ${this.getRegisterLabel(e,r.A+1)} then { pc+=${r.sBx}; ${this.getRegisterLabel(e,r.A+3)} := ${this.getRegisterLabel(e,r.A)} }`;case 33:return`FORPREP ${this.getRegisterLabel(e,r.A)} -= ${this.getRegisterLabel(e,r.A+2)}; pc += ${r.sBx}`;case 34:return`TFORCALL ${this.getRegisterLabel(e,r.A+3)}...${this.getRegisterLabel(e,r.A+2+r.C)} := ${this.getRegisterLabel(e,r.A)}(${this.getRegisterLabel(e,r.A+1)},${this.getRegisterLabel(e,r.A+2)})`;case 35:return`TFORLOOP if ${this.getRegisterLabel(e,r.A+1)} ~= nil then { ${this.getRegisterLabel(e,r.A)} := ${this.getRegisterLabel(e,r.A+1)}; pc += ${r.sBx} }`;case 36:let i=(r.C?r.C:n.Ax)-1,o=50;return`SETLIST ${this.getRegisterLabel(e,r.A)}[${i*o+1}...${r.B?i*o+r.B:""}] := ${this.getRegisterLabel(e,r.A+1)}...${r.B?this.getRegisterLabel(e,r.A+r.B):"top"}`;case 37:let s=this.inner_functions[r.Bx];return`CLOSURE ${this.getRegisterLabel(e,r.A)} := closure(${s.sources[0]}:${s.firstline}-${s.lastline})`;case 38:return`VARARG ${this.getRegisterLabel(e,r.A)}...${r.B?this.getRegisterLabel(e,r.A+r.B-2):"top"}`;case 39:return"EXTRAARG";default:return`UNKNOWN OP(${r.Op}) A(${r.A}) B(${r.B}) C(${r.C})`}}fb2int(e){let r=e>>3&31;return r===0?e:(e&7)+8<<r-1}getRegisterOrConstantLabel(e,r){return r&256?this.constants[r&255].label:this.getRegisterLabel(e,r)}getUpvalLabel(e){return`Up(${this.upvals[e]?.name??e})`}getRegisterLabel(e,r){let n=0;for(let i=0;i<this.locals.length;i++){let o=this.locals[i];if(o.start<=e+1){if(o.end>=e+1){if(n===r)return`R(${o.name})`;n++}}else break}return`R(${r})`}}});var wV={};rr(wV,{FactorioModDebugSession:()=>tm});var ze,hc,_V,zd,CO,kO,Wd,tm,RO=U(()=>{"use strict";ze=pe(gW()),hc=pe(require("path")),_V=pe(require("fs/promises")),zd=pe(require("os")),CO=pe(X1());uc();uF();DH();mw();vw();xV();Rl();kO=require("stream"),Wd=class extends ze.LoggingDebugSession{constructor(r,n,i){super();this.activeVersion=r;this.fs=n;this.editorInterface=i;this.nextBreakpointID=1;this.breakPoints=new Map;this.breakPointsChanged=new Set;this.exceptionFilters=new Set(["unhandled"]);this._modules=new Map;this._responses=new Map;this._dumps=new Map;this.translations=new Map;this.nextRef=1;this.stdinQueue=[];this.inPrompt=!1;this.pauseRequested=!1;this.workspaceModInfo=[];this.nextdump=1;this.dumps_by_source=new Map;this.dumps_by_address=[];this.lines_by_source=new Map;this.loadedSources=[];this.objectInfoChunks=oF(qv(this.activeVersion.docs.generate_debuginfo()),3500);this.setDebuggerLinesStartAt1(!0),this.setDebuggerColumnsStartAt1(!0),this.setDebuggerPathFormat("uri"),this.configDone=new Promise(o=>{this._configurationDone=o})}initializeRequest(r,n){r.body=r.body||{},r.body.supportsConditionalBreakpoints=!0,r.body.supportsHitConditionalBreakpoints=!0,r.body.supportsEvaluateForHovers=!0,r.body.exceptionBreakpointFilters=[{filter:"pcall",label:"Caught by pcall",default:!1},{filter:"xpcall",label:"Caught by xpcall",default:!1},{filter:"unhandled",label:"Unhandled Exceptions",default:!0}],r.body.supportsSetVariable=!0,r.body.supportsModulesRequest=!0,r.body.supportsLogPoints=!0,r.body.supportsConfigurationDoneRequest=!0,r.body.supportsLoadedSourcesRequest=!0,r.body.supportsBreakpointLocationsRequest=!0,r.body.supportsDisassembleRequest=!0,r.body.supportsSteppingGranularity=!0,r.body.supportsInstructionBreakpoints=!1,this.sendResponse(r)}configurationDoneRequest(r,n){super.configurationDoneRequest(r,n),this._configurationDone?.()}async terminateRequest(r,n){return this.sendResponse(r),this.terminate()}async disconnectRequest(r,n){return this.sendResponse(r),this.terminate()}async checkFactorioArgs(r){let n=r.factorioArgs;if(n){if(n.includes("--config"))return this.sendEvent(new ze.OutputEvent(`Factorio --config option is set by configPath and should not be included in factorioArgs
|
|
31
31
|
`,"console")),!1;if(n.includes("--mod-directory"))return this.sendEvent(new ze.OutputEvent(`Factorio --mod-directory option is set by modsPath and should not be included in factorioArgs
|
|
32
32
|
`,"console")),!1}return!0}async resolveModsPath(r){let n;if(r.modsPath){n="launch";let i=hc.posix.normalize(r.modsPath);i.match(/^~[\\\/]/)&&(i=hc.posix.join(zd.homedir().replace(/\\/g,"/"),i.replace(/^~[\\\/]/,""))),i.match(/[\\\/]$/)&&(i=i.replace(/[\\\/]+$/,""));try{await _V.access(i),r.modsPath=i}catch{return this.sendEvent(new ze.OutputEvent(`modsPath specified in launch configuration does not exist
|
|
@@ -195,8 +195,8 @@ ${e.see_also.map(i=>`- ${this.resolve_internal_reference(i)}`).join(`
|
|
|
195
195
|
</body>\r
|
|
196
196
|
</html>`});function om(t,e){return isNaN(t)?e:isNaN(e)?t:Math.max(t,e)}var lt,NO,Tl,Pw,$O,sm,UO,Fw,NV=U(()=>{"use strict";lt=pe(require("vscode")),NO=require("console");Tl=class{constructor(e=0,r=0){this.timer=e;this.count=r}add(e){return e?new Tl(this.timer+e.timer,this.count+e.count):this}avg(){return this.timer/this.count}},Pw=class{constructor(){this.functions=new Map;this.lines=new Map}add(e){e.functions.forEach((r,n)=>{this.functions.set(n,r.add(this.functions.get(n)))}),e.lines.forEach((r,n)=>{this.lines.set(n,r.add(this.lines.get(n)))})}max(){let e={func:{timer:0,count:0,average:0},line:{timer:0,count:0,average:0}};return this.functions.forEach(r=>{e.func.timer=om(e.func.timer,r.timer),e.func.count=om(e.func.count,r.count),e.func.average=om(e.func.average,r.avg())}),this.lines.forEach(r=>{e.line.timer=om(e.line.timer,r.timer),e.line.count=om(e.line.count,r.count),e.line.average=om(e.line.average,r.avg())}),e}},$O=class{constructor(){this.totalTime=0;this.file=new Map}},sm=class{constructor(e,r,n,i){this.name=e;this.value=r;this.filename=n;this.line=i;this.children=[]}ToStringInner(e){return`${e}${this.name} : ${this.value}
|
|
197
197
|
${this.children.map(r=>r.ToStringInner(e+" ")).join(`
|
|
198
|
-
`)}`}ToString(){return this.ToStringInner("")}AddToChild(e,r,n,i){let o=this.children.find(s=>s.name===e);return o?o.value+=r:(o=new sm(e,r,n,i),this.children.push(o)),o}Merge(e){this.value+=e.value,e.children.forEach(r=>{let n=this.children.find(i=>i.name===r.name);n?n.Merge(r):this.children.push(r)})}},UO=class{constructor(){this.totalTime=0;this.mod=new Map}getMod(e){let r=this.mod.get(e);return r||(r=new $O,this.mod.set(e,r)),r}getFile(e,r){let n=this.getMod(e),i=n.file.get(r);return i||(i=new Pw,n.file.set(r,i)),i}AddModTime(e,r){this.totalTime+=r,this.getMod(e).totalTime+=r}AddLineTime(e,r,n,i,o){let s=this.getFile(e,r),a=new Tl(i,o),u=s.lines.get(n);s.lines.set(n,a.add(u))}AddFuncTime(e,r,n,i,o){let s=this.getFile(e,r),a=new Tl(i,o),u=s.functions.get(n);s.functions.set(n,a.add(u))}Report(e){let r=new Pw;return this.mod.forEach(n=>{let i=n.file.get(e);i&&r.add(i)}),{totalTime:this.totalTime,fileData:r}}},Fw=class{constructor(e,r,n){this.context=r;this.debug=n;this.profileData=new UO;this.profileTreeRoot=new sm("root",0);this.profileOverhead=new Tl(0,0);this._disposables=[];this._disposables.push(lt.debug.onDidReceiveDebugSessionCustomEvent(this.onCustomEvent,this)),this._disposables.push(lt.debug.onDidTerminateDebugSession(this.onTerminate,this)),this.timeDecorationType=lt.window.createTextEditorDecorationType({before:{contentText:"",color:new lt.ThemeColor("factorio.ProfileTimerForeground")}}),this.funcDecorationType=lt.window.createTextEditorDecorationType({after:{contentText:"",color:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),borderColor:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),border:"1px solid",margin:"0 0 0 3ch"}});let i=lt.workspace.getConfiguration().get("factorio.profile.rulers",[]);this.rulerDecorationTypes=i.filter(o=>o.color||o.themeColor).map(o=>{let s=lt.OverviewRulerLane.Right;switch(o.lane){case"Right":s=lt.OverviewRulerLane.Right;break;case"Center":s=lt.OverviewRulerLane.Center;break;case"Left":s=lt.OverviewRulerLane.Left;break;case"Full":s=lt.OverviewRulerLane.Full;break;default:break}return{type:lt.window.createTextEditorDecorationType({overviewRulerColor:o.color??new lt.ThemeColor(o.themeColor),overviewRulerLane:s}),threshold:o.threshold}}),this.statusBar=lt.window.createStatusBarItem(),this._disposables.push(lt.window.onDidChangeActiveTextEditor(o=>{o&&
|
|
199
|
-
`),n,i,o=[new sm("root",0)],s;for(let a of r){let u=a.split(":");switch(u[0]){case"PROFILE":break;case"PMN":{n=u[1].replace(/[\r\n]*/g,"");let c=parseFloat(u[3]);this.profileData.AddModTime(n,c)}break;case"PFN":n&&(i=await this.debug.customRequest("x-Factorio-ConvertPath",{path:u[1].replace(/[\r\n]*/g,"")}));break;case"PLN":if(n&&i){let c=parseInt(u[1]),f=parseFloat(u[3]),h=parseInt(u[4]);this.profileData.AddLineTime(n,i,c,f,h)}break;case"PFT":if(n&&i){let c=parseInt(u[1]),f=parseFloat(u[3]),h=parseInt(u[4]);this.profileData.AddFuncTime(n,i,c,f,h)}break;case"POV":{let c=parseFloat(u[2]);this.profileOverhead=this.profileOverhead.add(new Tl(c,1))}break;case"PROOT":n&&((0,NO.assert)(o.length===1),s=o[0].AddToChild(n,0));break;case"PTREE":if(s){let c=u[1],f=await this.debug.customRequest("x-Factorio-ConvertPath",{path:u[2]}),h=u[3],p=c+":"+f+":"+h,g=parseFloat(u[5]);o.push(s),s=s.AddToChild(p,g,f,parseInt(h))}break;case"PTEND":s&&(o.length===1?s=void 0:s=o.pop());break}}(0,NO.assert)(o.length===1),this.flamePanel&&this.flamePanel.visible&&this.flamePanel.webview.postMessage({command:"merge",data:o[0]}),this.profileTreeRoot.Merge(o[0])}render(e){let r=this.profileData.Report(e.document.uri.toString()),n=r.fileData.max(),i=n.line.timer,o=n.line.average,s=n.line.count,a=new Array,u=new Array,c=this.rulerDecorationTypes.map((M,N)=>({type:M.type,threshold:M.threshold,decs:new Array})),f=lt.workspace.getConfiguration().get("factorio.profile.displayAverageTime"),h=lt.workspace.getConfiguration().get("factorio.profile.colorBy","totaltime"),p=lt.workspace.getConfiguration().get("factorio.profile.timerHighlightColor"),g={count:s,totaltime:i,averagetime:o}[h],b=Math.max(Number.MIN_VALUE,lt.workspace.getConfiguration().get("factorio.profile.colorScaleFactor",1)),E={boost:M=>Math.log1p(M*b)/Math.log1p(g*b),linear:M=>M/g,mute:M=>(Math.pow(1+g,M*b/g)-1)/(g*b)}[lt.workspace.getConfiguration().get("factorio.profile.colorScaleMode","boost")],R=s.toFixed(0).length+1,S=f?6:3,k=i.toFixed(S).length+1,D=R+k+3,O=r.fileData.lines.size>0,B=r.fileData.functions.size>0;for(let M=1;M<=e.document.lineCount;M++){if(O){let N=r.fileData.lines.get(M);if(N){let J=N.timer,V=N.count,le=f?N.avg():J,te=E({count:V,totaltime:J,averagetime:N.avg()}[h]),fe=e.document.validateRange(new lt.Range(M-1,0,M-1,1/0));a.push({range:fe,hoverMessage:f?`total: ${J}`:`avg: ${N.avg()}`,renderOptions:{before:{backgroundColor:`${p}${Math.floor(255*te).toString(16)}`,contentText:`${V.toFixed(0).padStart(R,"\xA0")}${le.toFixed(S).padStart(k,"\xA0")}\xA0ms`,width:`${D+1}ch`}}});let de=c.find(Ce=>te>=Ce.threshold);de&&de.decs.push({range:fe})}else a.push({range:e.document.validateRange(new lt.Range(M-1,0,M-1,1/0)),renderOptions:{before:{width:`${D+1}ch`}}})}if(B){let N=r.fileData.functions.get(M);if(N){let J=N.timer,V=N.count,le=f?N.avg():J,te=e.document.validateRange(new lt.Range(M-1,0,M-1,1/0));u.push({range:te,renderOptions:{after:{contentText:`\xA0${V.toFixed(0)}\xA0|\xA0${le.toFixed(S)}\xA0ms\xA0`,color:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),borderColor:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),margin:"0 0 0 3ch"}}})}}}e.setDecorations(this.timeDecorationType,a),e.setDecorations(this.funcDecorationType,u),c.forEach(M=>{e.setDecorations(M.type,M.decs)}),this.statusBar.text=`Profile Dump Avg ${this.profileOverhead.avg().toFixed(3)} ms`,this.statusBar.show()}clear(){lt.window.visibleTextEditors.forEach(e=>{e.setDecorations(this.timeDecorationType,[]),e.setDecorations(this.funcDecorationType,[]),this.rulerDecorationTypes.forEach(r=>{e.setDecorations(r.type,[])})}),this.statusBar.hide()}}});var $V,Ow,UV=U(()=>{"use strict";$V=pe(require("vscode"));NV();Ow=class{constructor(e){this.context=e;e.subscriptions.push($V.debug.onDidStartDebugSession(this.onDidStartDebugSession,this))}async onDidStartDebugSession(e){e.type==="factoriomod"&&e.configuration.hookMode==="profile"&&new Fw(e.configuration.profileTree??!0,this.context,e)}}});var qs=y(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.asPromise=En.thenable=En.typedArray=En.stringArray=En.array=En.func=En.error=En.number=En.string=En.boolean=void 0;function jTe(t){return t===!0||t===!1}En.boolean=jTe;function WV(t){return typeof t=="string"||t instanceof String}En.string=WV;function NTe(t){return typeof t=="number"||t instanceof Number}En.number=NTe;function $Te(t){return t instanceof Error}En.error=$Te;function zV(t){return typeof t=="function"}En.func=zV;function HV(t){return Array.isArray(t)}En.array=HV;function UTe(t){return HV(t)&&t.every(e=>WV(e))}En.stringArray=UTe;function WTe(t,e){return Array.isArray(t)&&t.every(e)}En.typedArray=WTe;function VV(t){return t&&zV(t.then)}En.thenable=VV;function zTe(t){return t instanceof Promise?t:VV(t)?new Promise((e,r)=>{t.then(n=>e(n),n=>r(n))}):Promise.resolve(t)}En.asPromise=zTe});var am=y(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.stringArray=Zi.array=Zi.func=Zi.error=Zi.number=Zi.string=Zi.boolean=void 0;function HTe(t){return t===!0||t===!1}Zi.boolean=HTe;function GV(t){return typeof t=="string"||t instanceof String}Zi.string=GV;function VTe(t){return typeof t=="number"||t instanceof Number}Zi.number=VTe;function GTe(t){return t instanceof Error}Zi.error=GTe;function KTe(t){return typeof t=="function"}Zi.func=KTe;function KV(t){return Array.isArray(t)}Zi.array=KV;function YTe(t){return KV(t)&&t.every(e=>GV(e))}Zi.stringArray=YTe});var fA=y(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.Message=Je.NotificationType9=Je.NotificationType8=Je.NotificationType7=Je.NotificationType6=Je.NotificationType5=Je.NotificationType4=Je.NotificationType3=Je.NotificationType2=Je.NotificationType1=Je.NotificationType0=Je.NotificationType=Je.RequestType9=Je.RequestType8=Je.RequestType7=Je.RequestType6=Je.RequestType5=Je.RequestType4=Je.RequestType3=Je.RequestType2=Je.RequestType1=Je.RequestType=Je.RequestType0=Je.AbstractMessageSignature=Je.ParameterStructures=Je.ResponseError=Je.ErrorCodes=void 0;var Qd=am(),YV;(function(t){t.ParseError=-32700,t.InvalidRequest=-32600,t.MethodNotFound=-32601,t.InvalidParams=-32602,t.InternalError=-32603,t.jsonrpcReservedErrorRangeStart=-32099,t.serverErrorStart=-32099,t.MessageWriteError=-32099,t.MessageReadError=-32098,t.PendingResponseRejected=-32097,t.ConnectionInactive=-32096,t.ServerNotInitialized=-32002,t.UnknownErrorCode=-32001,t.jsonrpcReservedErrorRangeEnd=-32e3,t.serverErrorEnd=-32e3})(YV=Je.ErrorCodes||(Je.ErrorCodes={}));var rb=class extends Error{constructor(e,r,n){super(r),this.code=Qd.number(e)?e:YV.UnknownErrorCode,this.data=n,Object.setPrototypeOf(this,rb.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};Je.ResponseError=rb;var ui=class{constructor(e){this.kind=e}static is(e){return e===ui.auto||e===ui.byName||e===ui.byPosition}toString(){return this.kind}};Je.ParameterStructures=ui;ui.auto=new ui("auto");ui.byPosition=new ui("byPosition");ui.byName=new ui("byName");var Qr=class{constructor(e,r){this.method=e,this.numberOfParams=r}get parameterStructures(){return ui.auto}};Je.AbstractMessageSignature=Qr;var WO=class extends Qr{constructor(e){super(e,0)}};Je.RequestType0=WO;var zO=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.RequestType=zO;var HO=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.RequestType1=HO;var VO=class extends Qr{constructor(e){super(e,2)}};Je.RequestType2=VO;var GO=class extends Qr{constructor(e){super(e,3)}};Je.RequestType3=GO;var KO=class extends Qr{constructor(e){super(e,4)}};Je.RequestType4=KO;var YO=class extends Qr{constructor(e){super(e,5)}};Je.RequestType5=YO;var QO=class extends Qr{constructor(e){super(e,6)}};Je.RequestType6=QO;var ZO=class extends Qr{constructor(e){super(e,7)}};Je.RequestType7=ZO;var JO=class extends Qr{constructor(e){super(e,8)}};Je.RequestType8=JO;var XO=class extends Qr{constructor(e){super(e,9)}};Je.RequestType9=XO;var eA=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.NotificationType=eA;var tA=class extends Qr{constructor(e){super(e,0)}};Je.NotificationType0=tA;var rA=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.NotificationType1=rA;var nA=class extends Qr{constructor(e){super(e,2)}};Je.NotificationType2=nA;var iA=class extends Qr{constructor(e){super(e,3)}};Je.NotificationType3=iA;var oA=class extends Qr{constructor(e){super(e,4)}};Je.NotificationType4=oA;var sA=class extends Qr{constructor(e){super(e,5)}};Je.NotificationType5=sA;var aA=class extends Qr{constructor(e){super(e,6)}};Je.NotificationType6=aA;var uA=class extends Qr{constructor(e){super(e,7)}};Je.NotificationType7=uA;var cA=class extends Qr{constructor(e){super(e,8)}};Je.NotificationType8=cA;var lA=class extends Qr{constructor(e){super(e,9)}};Je.NotificationType9=lA;var QTe;(function(t){function e(i){let o=i;return o&&Qd.string(o.method)&&(Qd.string(o.id)||Qd.number(o.id))}t.isRequest=e;function r(i){let o=i;return o&&Qd.string(o.method)&&i.id===void 0}t.isNotification=r;function n(i){let o=i;return o&&(o.result!==void 0||!!o.error)&&(Qd.string(o.id)||Qd.number(o.id)||o.id===null)}t.isResponse=n})(QTe=Je.Message||(Je.Message={}))});var hA=y(mc=>{"use strict";var QV;Object.defineProperty(mc,"__esModule",{value:!0});mc.LRUCache=mc.LinkedMap=mc.Touch=void 0;var mo;(function(t){t.None=0,t.First=1,t.AsOld=t.First,t.Last=2,t.AsNew=t.Last})(mo=mc.Touch||(mc.Touch={}));var Aw=class{constructor(){this[QV]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,r=mo.None){let n=this._map.get(e);if(n)return r!==mo.None&&this.touch(n,r),n.value}set(e,r,n=mo.None){let i=this._map.get(e);if(i)i.value=r,n!==mo.None&&this.touch(i,n);else{switch(i={key:e,value:r,next:void 0,previous:void 0},n){case mo.None:this.addItemLast(i);break;case mo.First:this.addItemFirst(i);break;case mo.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let r=this._map.get(e);if(r)return this._map.delete(e),this.removeItem(r),this._size--,r.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,r){let n=this._state,i=this._head;for(;i;){if(r?e.bind(r)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.key,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}values(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.value,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}entries(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:[r.key,r.value],done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}[(QV=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let r=this._head,n=this.size;for(;r&&n>e;)this._map.delete(r.key),r=r.next,n--;this._head=r,this._size=n,r&&(r.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let r=e.next,n=e.previous;if(!r||!n)throw new Error("Invalid list");r.previous=n,n.next=r}e.next=void 0,e.previous=void 0,this._state++}touch(e,r){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(r!==mo.First&&r!==mo.Last)){if(r===mo.First){if(e===this._head)return;let n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(r===mo.Last){if(e===this._tail)return;let n=e.next,i=e.previous;e===this._head?(n.previous=void 0,this._head=n):(n.previous=i,i.next=n),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((r,n)=>{e.push([n,r])}),e}fromJSON(e){this.clear();for(let[r,n]of e)this.set(r,n)}};mc.LinkedMap=Aw;var dA=class extends Aw{constructor(e,r=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,r),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,r=mo.AsNew){return super.get(e,r)}peek(e){return super.get(e,mo.None)}set(e,r){return super.set(e,r,mo.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};mc.LRUCache=dA});var ZV=y(nb=>{"use strict";Object.defineProperty(nb,"__esModule",{value:!0});nb.Disposable=void 0;var ZTe;(function(t){function e(r){return{dispose:r}}t.create=e})(ZTe=nb.Disposable||(nb.Disposable={}))});var Pl=y(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});var pA;function mA(){if(pA===void 0)throw new Error("No runtime abstraction layer installed");return pA}(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");pA=r}t.install=e})(mA||(mA={}));gA.default=mA});var cm=y(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});Zd.Emitter=Zd.Event=void 0;var JTe=Pl(),XTe;(function(t){let e={dispose(){}};t.None=function(){return e}})(XTe=Zd.Event||(Zd.Event={}));var vA=class{add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,r)})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,o=this._callbacks.length;i<o;i++)if(this._callbacks[i]===e)if(this._contexts[i]===r){this._callbacks.splice(i,1),this._contexts.splice(i,1);return}else n=!0;if(n)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];let r=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let o=0,s=n.length;o<s;o++)try{r.push(n[o].apply(i[o],e))}catch(a){(0,JTe.default)().console.error(a)}return r}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},um=class{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,r,n)=>{this._callbacks||(this._callbacks=new vA),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=um._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Zd.Emitter=um;um._noop=function(){}});var Iw=y(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.CancellationTokenSource=Jd.CancellationToken=void 0;var ePe=Pl(),tPe=am(),bA=cm(),yA;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:bA.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:bA.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||tPe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}t.is=e})(yA=Jd.CancellationToken||(Jd.CancellationToken={}));var rPe=Object.freeze(function(t,e){let r=(0,ePe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),qw=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?rPe:(this._emitter||(this._emitter=new bA.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},xA=class{get token(){return this._token||(this._token=new qw),this._token}cancel(){this._token?this._token.cancel():this._token=yA.Cancelled}dispose(){this._token?this._token instanceof qw&&this._token.dispose():this._token=yA.None}};Jd.CancellationTokenSource=xA});var JV=y(lm=>{"use strict";Object.defineProperty(lm,"__esModule",{value:!0});lm.SharedArrayReceiverStrategy=lm.SharedArraySenderStrategy=void 0;var nPe=Iw(),ib;(function(t){t.Continue=0,t.Cancelled=1})(ib||(ib={}));var _A=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let r=new SharedArrayBuffer(4),n=new Int32Array(r,0,1);n[0]=ib.Continue,this.buffers.set(e.id,r),e.$cancellationData=r}async sendCancellation(e,r){let n=this.buffers.get(r);if(n===void 0)return;let i=new Int32Array(n,0,1);Atomics.store(i,0,ib.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};lm.SharedArraySenderStrategy=_A;var wA=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===ib.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},EA=class{constructor(e){this.token=new wA(e)}cancel(){}dispose(){}},DA=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let r=e.$cancellationData;return r===void 0?new nPe.CancellationTokenSource:new EA(r)}};lm.SharedArrayReceiverStrategy=DA});var CA=y(Lw=>{"use strict";Object.defineProperty(Lw,"__esModule",{value:!0});Lw.Semaphore=void 0;var iPe=Pl(),SA=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((r,n)=>{this._waiting.push({thunk:e,resolve:r,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,iPe.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let r=e.thunk();r instanceof Promise?r.then(n=>{this._active--,e.resolve(n),this.runNext()},n=>{this._active--,e.reject(n),this.runNext()}):(this._active--,e.resolve(r),this.runNext())}catch(r){this._active--,e.reject(r),this.runNext()}}};Lw.Semaphore=SA});var XV=y(gc=>{"use strict";Object.defineProperty(gc,"__esModule",{value:!0});gc.ReadableStreamMessageReader=gc.AbstractMessageReader=gc.MessageReader=void 0;var RA=Pl(),fm=am(),kA=cm(),oPe=CA(),sPe;(function(t){function e(r){let n=r;return n&&fm.func(n.listen)&&fm.func(n.dispose)&&fm.func(n.onError)&&fm.func(n.onClose)&&fm.func(n.onPartialMessage)}t.is=e})(sPe=gc.MessageReader||(gc.MessageReader={}));var Mw=class{constructor(){this.errorEmitter=new kA.Emitter,this.closeEmitter=new kA.Emitter,this.partialMessageEmitter=new kA.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${fm.string(e.message)?e.message:"unknown"}`)}};gc.AbstractMessageReader=Mw;var TA;(function(t){function e(r){let n,i,o,s=new Map,a,u=new Map;if(r===void 0||typeof r=="string")n=r??"utf-8";else{if(n=r.charset??"utf-8",r.contentDecoder!==void 0&&(o=r.contentDecoder,s.set(o.name,o)),r.contentDecoders!==void 0)for(let c of r.contentDecoders)s.set(c.name,c);if(r.contentTypeDecoder!==void 0&&(a=r.contentTypeDecoder,u.set(a.name,a)),r.contentTypeDecoders!==void 0)for(let c of r.contentTypeDecoders)u.set(c.name,c)}return a===void 0&&(a=(0,RA.default)().applicationJson.decoder,u.set(a.name,a)),{charset:n,contentDecoder:o,contentDecoders:s,contentTypeDecoder:a,contentTypeDecoders:u}}t.fromOptions=e})(TA||(TA={}));var PA=class extends Mw{constructor(e,r){super(),this.readable=e,this.options=TA.fromOptions(r),this.buffer=(0,RA.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new oPe.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let r=this.readable.onData(n=>{this.onData(n)});return this.readable.onError(n=>this.fireError(n)),this.readable.onClose(()=>this.fireClose()),r}onData(e){for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let n=this.buffer.tryReadHeaders(!0);if(!n)return;let i=n.get("content-length");if(!i){this.fireError(new Error("Header must provide a Content-Length property."));return}let o=parseInt(i);if(isNaN(o)){this.fireError(new Error("Content-Length value must be a number."));return}this.nextMessageLength=o}let r=this.buffer.tryReadBody(this.nextMessageLength);if(r===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let n=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(r):r,i=await this.options.contentTypeDecoder.decode(n,this.options);this.callback(i)}).catch(n=>{this.fireError(n)})}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,RA.default)().timer.setTimeout((e,r)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:r}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};gc.ReadableStreamMessageReader=PA});var nG=y(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.WriteableStreamMessageWriter=vc.AbstractMessageWriter=vc.MessageWriter=void 0;var eG=Pl(),ob=am(),aPe=CA(),tG=cm(),uPe="Content-Length: ",rG=`\r
|
|
198
|
+
`)}`}ToString(){return this.ToStringInner("")}AddToChild(e,r,n,i){let o=this.children.find(s=>s.name===e);return o?o.value+=r:(o=new sm(e,r,n,i),this.children.push(o)),o}Merge(e){this.value+=e.value,e.children.forEach(r=>{let n=this.children.find(i=>i.name===r.name);n?n.Merge(r):this.children.push(r)})}},UO=class{constructor(){this.totalTime=0;this.mod=new Map}getMod(e){let r=this.mod.get(e);return r||(r=new $O,this.mod.set(e,r)),r}getFile(e,r){let n=this.getMod(e),i=n.file.get(r);return i||(i=new Pw,n.file.set(r,i)),i}AddModTime(e,r){this.totalTime+=r,this.getMod(e).totalTime+=r}AddLineTime(e,r,n,i,o){let s=this.getFile(e,r),a=new Tl(i,o),u=s.lines.get(n);s.lines.set(n,a.add(u))}AddFuncTime(e,r,n,i,o){let s=this.getFile(e,r),a=new Tl(i,o),u=s.functions.get(n);s.functions.set(n,a.add(u))}Report(e){let r=new Pw;return this.mod.forEach(n=>{let i=n.file.get(e);i&&r.add(i)}),{totalTime:this.totalTime,fileData:r}}},Fw=class{constructor(e,r,n){this.context=r;this.debug=n;this.profileData=new UO;this.profileTreeRoot=new sm("root",0);this.profileOverhead=new Tl(0,0);this._disposables=[];this._disposables.push(lt.debug.onDidReceiveDebugSessionCustomEvent(this.onCustomEvent,this)),this._disposables.push(lt.debug.onDidTerminateDebugSession(this.onTerminate,this)),this.timeDecorationType=lt.window.createTextEditorDecorationType({before:{contentText:"",color:new lt.ThemeColor("factorio.ProfileTimerForeground")}}),this.funcDecorationType=lt.window.createTextEditorDecorationType({after:{contentText:"",color:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),borderColor:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),border:"1px solid",margin:"0 0 0 3ch"}});let i=lt.workspace.getConfiguration().get("factorio.profile.rulers",[]);this.rulerDecorationTypes=i.filter(o=>o.color||o.themeColor).map(o=>{let s=lt.OverviewRulerLane.Right;switch(o.lane){case"Right":s=lt.OverviewRulerLane.Right;break;case"Center":s=lt.OverviewRulerLane.Center;break;case"Left":s=lt.OverviewRulerLane.Left;break;case"Full":s=lt.OverviewRulerLane.Full;break;default:break}return{type:lt.window.createTextEditorDecorationType({overviewRulerColor:o.color??new lt.ThemeColor(o.themeColor),overviewRulerLane:s}),threshold:o.threshold}}),this.statusBar=lt.window.createStatusBarItem(),this._disposables.push(lt.window.onDidChangeActiveTextEditor(o=>{o&&o.document.uri.scheme==="file"&&this.render(o)})),e&&this.createFlamePanel()}onTerminate(e){e===this.debug&&this.dispose()}dispose(){this._disposables.forEach(e=>e.dispose()),this.timeDecorationType.dispose(),this.funcDecorationType.dispose(),this.rulerDecorationTypes.forEach(e=>{e.type.dispose()}),this.statusBar.dispose(),this.flamePanel&&this.flamePanel.dispose()}async onCustomEvent(e){if(e.session===this.debug&&e.event==="x-Factorio-Profile"){await this.parse(e.body);let r=lt.window.activeTextEditor;r&&r.document.uri.scheme==="file"&&this.render(r)}}async createFlamePanel(){if(this.flamePanel)return;this.flamePanel=lt.window.createWebviewPanel("factorioProfile","Factorio Profile",lt.ViewColumn.Two,{enableScripts:!0,localResourceRoots:[this.context.extensionUri]});let e=this.flamePanel.webview,r=(await Promise.resolve().then(()=>pe(jV()))).default;e.html=r.replace("$Flamegraph.css$",e.asWebviewUri(lt.Uri.joinPath(this.context.extensionUri,"/dist/Flamegraph.css")).toString()).replace("$Flamegraph.js$",e.asWebviewUri(lt.Uri.joinPath(this.context.extensionUri,"/dist/Flamegraph.js")).toString()),e.onDidReceiveMessage(n=>{switch(n.command){case"init":e.postMessage({command:"update",data:this.profileTreeRoot});break;case"click":n.line&&n.line>0&&n.filename&&n.line&<.window.showTextDocument(lt.Uri.parse(n.filename),{selection:new lt.Range(n.line,0,n.line,0),viewColumn:lt.ViewColumn.One});break;default:break}}),this.flamePanel.onDidDispose(()=>this.flamePanel=void 0)}async parse(e){let r=e.split(`
|
|
199
|
+
`),n,i,o=[new sm("root",0)],s;for(let a of r){let u=a.split(":");switch(u[0]){case"PROFILE":break;case"PMN":{n=u[1].replace(/[\r\n]*/g,"");let c=parseFloat(u[3]);this.profileData.AddModTime(n,c)}break;case"PFN":n&&(i=await this.debug.customRequest("x-Factorio-ConvertPath",{path:u[1].replace(/[\r\n]*/g,"")}));break;case"PLN":if(n&&i){let c=parseInt(u[1]),f=parseFloat(u[3]),h=parseInt(u[4]);this.profileData.AddLineTime(n,i,c,f,h)}break;case"PFT":if(n&&i){let c=parseInt(u[1]),f=parseFloat(u[3]),h=parseInt(u[4]);this.profileData.AddFuncTime(n,i,c,f,h)}break;case"POV":{let c=parseFloat(u[2]);this.profileOverhead=this.profileOverhead.add(new Tl(c,1))}break;case"PROOT":n&&((0,NO.assert)(o.length===1),s=o[0].AddToChild(n,0));break;case"PTREE":if(s){let c=u[1],f=await this.debug.customRequest("x-Factorio-ConvertPath",{path:u[2]}),h=u[3],p=c+":"+f+":"+h,g=parseFloat(u[5]);o.push(s),s=s.AddToChild(p,g,f,parseInt(h))}break;case"PTEND":s&&(o.length===1?s=void 0:s=o.pop());break}}(0,NO.assert)(o.length===1),this.flamePanel&&this.flamePanel.visible&&this.flamePanel.webview.postMessage({command:"merge",data:o[0]}),this.profileTreeRoot.Merge(o[0])}render(e){let r=this.profileData.Report(e.document.uri.fsPath),n=r.fileData.max(),i=n.line.timer,o=n.line.average,s=n.line.count,a=new Array,u=new Array,c=this.rulerDecorationTypes.map((M,N)=>({type:M.type,threshold:M.threshold,decs:new Array})),f=lt.workspace.getConfiguration().get("factorio.profile.displayAverageTime"),h=lt.workspace.getConfiguration().get("factorio.profile.colorBy","totaltime"),p=lt.workspace.getConfiguration().get("factorio.profile.timerHighlightColor"),g={count:s,totaltime:i,averagetime:o}[h],b=Math.max(Number.MIN_VALUE,lt.workspace.getConfiguration().get("factorio.profile.colorScaleFactor",1)),E={boost:M=>Math.log1p(M*b)/Math.log1p(g*b),linear:M=>M/g,mute:M=>(Math.pow(1+g,M*b/g)-1)/(g*b)}[lt.workspace.getConfiguration().get("factorio.profile.colorScaleMode","boost")],R=s.toFixed(0).length+1,S=f?6:3,k=i.toFixed(S).length+1,D=R+k+3,O=r.fileData.lines.size>0,B=r.fileData.functions.size>0;for(let M=1;M<=e.document.lineCount;M++){if(O){let N=r.fileData.lines.get(M);if(N){let J=N.timer,V=N.count,le=f?N.avg():J,te=E({count:V,totaltime:J,averagetime:N.avg()}[h]),fe=e.document.validateRange(new lt.Range(M-1,0,M-1,1/0));a.push({range:fe,hoverMessage:f?`total: ${J}`:`avg: ${N.avg()}`,renderOptions:{before:{backgroundColor:`${p}${Math.floor(255*te).toString(16)}`,contentText:`${V.toFixed(0).padStart(R,"\xA0")}${le.toFixed(S).padStart(k,"\xA0")}\xA0ms`,width:`${D+1}ch`}}});let de=c.find(Ce=>te>=Ce.threshold);de&&de.decs.push({range:fe})}else a.push({range:e.document.validateRange(new lt.Range(M-1,0,M-1,1/0)),renderOptions:{before:{width:`${D+1}ch`}}})}if(B){let N=r.fileData.functions.get(M);if(N){let J=N.timer,V=N.count,le=f?N.avg():J,te=e.document.validateRange(new lt.Range(M-1,0,M-1,1/0));u.push({range:te,renderOptions:{after:{contentText:`\xA0${V.toFixed(0)}\xA0|\xA0${le.toFixed(S)}\xA0ms\xA0`,color:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),borderColor:new lt.ThemeColor("factorio.ProfileFunctionTimerForeground"),margin:"0 0 0 3ch"}}})}}}e.setDecorations(this.timeDecorationType,a),e.setDecorations(this.funcDecorationType,u),c.forEach(M=>{e.setDecorations(M.type,M.decs)}),this.statusBar.text=`Profile Dump Avg ${this.profileOverhead.avg().toFixed(3)} ms`,this.statusBar.show()}clear(){lt.window.visibleTextEditors.forEach(e=>{e.setDecorations(this.timeDecorationType,[]),e.setDecorations(this.funcDecorationType,[]),this.rulerDecorationTypes.forEach(r=>{e.setDecorations(r.type,[])})}),this.statusBar.hide()}}});var $V,Ow,UV=U(()=>{"use strict";$V=pe(require("vscode"));NV();Ow=class{constructor(e){this.context=e;e.subscriptions.push($V.debug.onDidStartDebugSession(this.onDidStartDebugSession,this))}async onDidStartDebugSession(e){e.type==="factoriomod"&&e.configuration.hookMode==="profile"&&new Fw(e.configuration.profileTree??!0,this.context,e)}}});var qs=y(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.asPromise=En.thenable=En.typedArray=En.stringArray=En.array=En.func=En.error=En.number=En.string=En.boolean=void 0;function jTe(t){return t===!0||t===!1}En.boolean=jTe;function WV(t){return typeof t=="string"||t instanceof String}En.string=WV;function NTe(t){return typeof t=="number"||t instanceof Number}En.number=NTe;function $Te(t){return t instanceof Error}En.error=$Te;function zV(t){return typeof t=="function"}En.func=zV;function HV(t){return Array.isArray(t)}En.array=HV;function UTe(t){return HV(t)&&t.every(e=>WV(e))}En.stringArray=UTe;function WTe(t,e){return Array.isArray(t)&&t.every(e)}En.typedArray=WTe;function VV(t){return t&&zV(t.then)}En.thenable=VV;function zTe(t){return t instanceof Promise?t:VV(t)?new Promise((e,r)=>{t.then(n=>e(n),n=>r(n))}):Promise.resolve(t)}En.asPromise=zTe});var am=y(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.stringArray=Zi.array=Zi.func=Zi.error=Zi.number=Zi.string=Zi.boolean=void 0;function HTe(t){return t===!0||t===!1}Zi.boolean=HTe;function GV(t){return typeof t=="string"||t instanceof String}Zi.string=GV;function VTe(t){return typeof t=="number"||t instanceof Number}Zi.number=VTe;function GTe(t){return t instanceof Error}Zi.error=GTe;function KTe(t){return typeof t=="function"}Zi.func=KTe;function KV(t){return Array.isArray(t)}Zi.array=KV;function YTe(t){return KV(t)&&t.every(e=>GV(e))}Zi.stringArray=YTe});var fA=y(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.Message=Je.NotificationType9=Je.NotificationType8=Je.NotificationType7=Je.NotificationType6=Je.NotificationType5=Je.NotificationType4=Je.NotificationType3=Je.NotificationType2=Je.NotificationType1=Je.NotificationType0=Je.NotificationType=Je.RequestType9=Je.RequestType8=Je.RequestType7=Je.RequestType6=Je.RequestType5=Je.RequestType4=Je.RequestType3=Je.RequestType2=Je.RequestType1=Je.RequestType=Je.RequestType0=Je.AbstractMessageSignature=Je.ParameterStructures=Je.ResponseError=Je.ErrorCodes=void 0;var Qd=am(),YV;(function(t){t.ParseError=-32700,t.InvalidRequest=-32600,t.MethodNotFound=-32601,t.InvalidParams=-32602,t.InternalError=-32603,t.jsonrpcReservedErrorRangeStart=-32099,t.serverErrorStart=-32099,t.MessageWriteError=-32099,t.MessageReadError=-32098,t.PendingResponseRejected=-32097,t.ConnectionInactive=-32096,t.ServerNotInitialized=-32002,t.UnknownErrorCode=-32001,t.jsonrpcReservedErrorRangeEnd=-32e3,t.serverErrorEnd=-32e3})(YV=Je.ErrorCodes||(Je.ErrorCodes={}));var rb=class extends Error{constructor(e,r,n){super(r),this.code=Qd.number(e)?e:YV.UnknownErrorCode,this.data=n,Object.setPrototypeOf(this,rb.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};Je.ResponseError=rb;var ui=class{constructor(e){this.kind=e}static is(e){return e===ui.auto||e===ui.byName||e===ui.byPosition}toString(){return this.kind}};Je.ParameterStructures=ui;ui.auto=new ui("auto");ui.byPosition=new ui("byPosition");ui.byName=new ui("byName");var Qr=class{constructor(e,r){this.method=e,this.numberOfParams=r}get parameterStructures(){return ui.auto}};Je.AbstractMessageSignature=Qr;var WO=class extends Qr{constructor(e){super(e,0)}};Je.RequestType0=WO;var zO=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.RequestType=zO;var HO=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.RequestType1=HO;var VO=class extends Qr{constructor(e){super(e,2)}};Je.RequestType2=VO;var GO=class extends Qr{constructor(e){super(e,3)}};Je.RequestType3=GO;var KO=class extends Qr{constructor(e){super(e,4)}};Je.RequestType4=KO;var YO=class extends Qr{constructor(e){super(e,5)}};Je.RequestType5=YO;var QO=class extends Qr{constructor(e){super(e,6)}};Je.RequestType6=QO;var ZO=class extends Qr{constructor(e){super(e,7)}};Je.RequestType7=ZO;var JO=class extends Qr{constructor(e){super(e,8)}};Je.RequestType8=JO;var XO=class extends Qr{constructor(e){super(e,9)}};Je.RequestType9=XO;var eA=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.NotificationType=eA;var tA=class extends Qr{constructor(e){super(e,0)}};Je.NotificationType0=tA;var rA=class extends Qr{constructor(e,r=ui.auto){super(e,1),this._parameterStructures=r}get parameterStructures(){return this._parameterStructures}};Je.NotificationType1=rA;var nA=class extends Qr{constructor(e){super(e,2)}};Je.NotificationType2=nA;var iA=class extends Qr{constructor(e){super(e,3)}};Je.NotificationType3=iA;var oA=class extends Qr{constructor(e){super(e,4)}};Je.NotificationType4=oA;var sA=class extends Qr{constructor(e){super(e,5)}};Je.NotificationType5=sA;var aA=class extends Qr{constructor(e){super(e,6)}};Je.NotificationType6=aA;var uA=class extends Qr{constructor(e){super(e,7)}};Je.NotificationType7=uA;var cA=class extends Qr{constructor(e){super(e,8)}};Je.NotificationType8=cA;var lA=class extends Qr{constructor(e){super(e,9)}};Je.NotificationType9=lA;var QTe;(function(t){function e(i){let o=i;return o&&Qd.string(o.method)&&(Qd.string(o.id)||Qd.number(o.id))}t.isRequest=e;function r(i){let o=i;return o&&Qd.string(o.method)&&i.id===void 0}t.isNotification=r;function n(i){let o=i;return o&&(o.result!==void 0||!!o.error)&&(Qd.string(o.id)||Qd.number(o.id)||o.id===null)}t.isResponse=n})(QTe=Je.Message||(Je.Message={}))});var hA=y(mc=>{"use strict";var QV;Object.defineProperty(mc,"__esModule",{value:!0});mc.LRUCache=mc.LinkedMap=mc.Touch=void 0;var mo;(function(t){t.None=0,t.First=1,t.AsOld=t.First,t.Last=2,t.AsNew=t.Last})(mo=mc.Touch||(mc.Touch={}));var Aw=class{constructor(){this[QV]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,r=mo.None){let n=this._map.get(e);if(n)return r!==mo.None&&this.touch(n,r),n.value}set(e,r,n=mo.None){let i=this._map.get(e);if(i)i.value=r,n!==mo.None&&this.touch(i,n);else{switch(i={key:e,value:r,next:void 0,previous:void 0},n){case mo.None:this.addItemLast(i);break;case mo.First:this.addItemFirst(i);break;case mo.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let r=this._map.get(e);if(r)return this._map.delete(e),this.removeItem(r),this._size--,r.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,r){let n=this._state,i=this._head;for(;i;){if(r?e.bind(r)(i.value,i.key,this):e(i.value,i.key,this),this._state!==n)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.key,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}values(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:r.value,done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}entries(){let e=this._state,r=this._head,n={[Symbol.iterator]:()=>n,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(r){let i={value:[r.key,r.value],done:!1};return r=r.next,i}else return{value:void 0,done:!0}}};return n}[(QV=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let r=this._head,n=this.size;for(;r&&n>e;)this._map.delete(r.key),r=r.next,n--;this._head=r,this._size=n,r&&(r.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let r=e.next,n=e.previous;if(!r||!n)throw new Error("Invalid list");r.previous=n,n.next=r}e.next=void 0,e.previous=void 0,this._state++}touch(e,r){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(r!==mo.First&&r!==mo.Last)){if(r===mo.First){if(e===this._head)return;let n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(r===mo.Last){if(e===this._tail)return;let n=e.next,i=e.previous;e===this._head?(n.previous=void 0,this._head=n):(n.previous=i,i.next=n),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((r,n)=>{e.push([n,r])}),e}fromJSON(e){this.clear();for(let[r,n]of e)this.set(r,n)}};mc.LinkedMap=Aw;var dA=class extends Aw{constructor(e,r=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,r),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,r=mo.AsNew){return super.get(e,r)}peek(e){return super.get(e,mo.None)}set(e,r){return super.set(e,r,mo.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};mc.LRUCache=dA});var ZV=y(nb=>{"use strict";Object.defineProperty(nb,"__esModule",{value:!0});nb.Disposable=void 0;var ZTe;(function(t){function e(r){return{dispose:r}}t.create=e})(ZTe=nb.Disposable||(nb.Disposable={}))});var Pl=y(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});var pA;function mA(){if(pA===void 0)throw new Error("No runtime abstraction layer installed");return pA}(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");pA=r}t.install=e})(mA||(mA={}));gA.default=mA});var cm=y(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});Zd.Emitter=Zd.Event=void 0;var JTe=Pl(),XTe;(function(t){let e={dispose(){}};t.None=function(){return e}})(XTe=Zd.Event||(Zd.Event={}));var vA=class{add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,r)})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,o=this._callbacks.length;i<o;i++)if(this._callbacks[i]===e)if(this._contexts[i]===r){this._callbacks.splice(i,1),this._contexts.splice(i,1);return}else n=!0;if(n)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];let r=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let o=0,s=n.length;o<s;o++)try{r.push(n[o].apply(i[o],e))}catch(a){(0,JTe.default)().console.error(a)}return r}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},um=class{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,r,n)=>{this._callbacks||(this._callbacks=new vA),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=um._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Zd.Emitter=um;um._noop=function(){}});var Iw=y(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.CancellationTokenSource=Jd.CancellationToken=void 0;var ePe=Pl(),tPe=am(),bA=cm(),yA;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:bA.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:bA.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||tPe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}t.is=e})(yA=Jd.CancellationToken||(Jd.CancellationToken={}));var rPe=Object.freeze(function(t,e){let r=(0,ePe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),qw=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?rPe:(this._emitter||(this._emitter=new bA.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},xA=class{get token(){return this._token||(this._token=new qw),this._token}cancel(){this._token?this._token.cancel():this._token=yA.Cancelled}dispose(){this._token?this._token instanceof qw&&this._token.dispose():this._token=yA.None}};Jd.CancellationTokenSource=xA});var JV=y(lm=>{"use strict";Object.defineProperty(lm,"__esModule",{value:!0});lm.SharedArrayReceiverStrategy=lm.SharedArraySenderStrategy=void 0;var nPe=Iw(),ib;(function(t){t.Continue=0,t.Cancelled=1})(ib||(ib={}));var _A=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let r=new SharedArrayBuffer(4),n=new Int32Array(r,0,1);n[0]=ib.Continue,this.buffers.set(e.id,r),e.$cancellationData=r}async sendCancellation(e,r){let n=this.buffers.get(r);if(n===void 0)return;let i=new Int32Array(n,0,1);Atomics.store(i,0,ib.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};lm.SharedArraySenderStrategy=_A;var wA=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===ib.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},EA=class{constructor(e){this.token=new wA(e)}cancel(){}dispose(){}},DA=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let r=e.$cancellationData;return r===void 0?new nPe.CancellationTokenSource:new EA(r)}};lm.SharedArrayReceiverStrategy=DA});var CA=y(Lw=>{"use strict";Object.defineProperty(Lw,"__esModule",{value:!0});Lw.Semaphore=void 0;var iPe=Pl(),SA=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((r,n)=>{this._waiting.push({thunk:e,resolve:r,reject:n}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,iPe.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let r=e.thunk();r instanceof Promise?r.then(n=>{this._active--,e.resolve(n),this.runNext()},n=>{this._active--,e.reject(n),this.runNext()}):(this._active--,e.resolve(r),this.runNext())}catch(r){this._active--,e.reject(r),this.runNext()}}};Lw.Semaphore=SA});var XV=y(gc=>{"use strict";Object.defineProperty(gc,"__esModule",{value:!0});gc.ReadableStreamMessageReader=gc.AbstractMessageReader=gc.MessageReader=void 0;var RA=Pl(),fm=am(),kA=cm(),oPe=CA(),sPe;(function(t){function e(r){let n=r;return n&&fm.func(n.listen)&&fm.func(n.dispose)&&fm.func(n.onError)&&fm.func(n.onClose)&&fm.func(n.onPartialMessage)}t.is=e})(sPe=gc.MessageReader||(gc.MessageReader={}));var Mw=class{constructor(){this.errorEmitter=new kA.Emitter,this.closeEmitter=new kA.Emitter,this.partialMessageEmitter=new kA.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${fm.string(e.message)?e.message:"unknown"}`)}};gc.AbstractMessageReader=Mw;var TA;(function(t){function e(r){let n,i,o,s=new Map,a,u=new Map;if(r===void 0||typeof r=="string")n=r??"utf-8";else{if(n=r.charset??"utf-8",r.contentDecoder!==void 0&&(o=r.contentDecoder,s.set(o.name,o)),r.contentDecoders!==void 0)for(let c of r.contentDecoders)s.set(c.name,c);if(r.contentTypeDecoder!==void 0&&(a=r.contentTypeDecoder,u.set(a.name,a)),r.contentTypeDecoders!==void 0)for(let c of r.contentTypeDecoders)u.set(c.name,c)}return a===void 0&&(a=(0,RA.default)().applicationJson.decoder,u.set(a.name,a)),{charset:n,contentDecoder:o,contentDecoders:s,contentTypeDecoder:a,contentTypeDecoders:u}}t.fromOptions=e})(TA||(TA={}));var PA=class extends Mw{constructor(e,r){super(),this.readable=e,this.options=TA.fromOptions(r),this.buffer=(0,RA.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new oPe.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let r=this.readable.onData(n=>{this.onData(n)});return this.readable.onError(n=>this.fireError(n)),this.readable.onClose(()=>this.fireClose()),r}onData(e){for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let n=this.buffer.tryReadHeaders(!0);if(!n)return;let i=n.get("content-length");if(!i){this.fireError(new Error("Header must provide a Content-Length property."));return}let o=parseInt(i);if(isNaN(o)){this.fireError(new Error("Content-Length value must be a number."));return}this.nextMessageLength=o}let r=this.buffer.tryReadBody(this.nextMessageLength);if(r===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let n=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(r):r,i=await this.options.contentTypeDecoder.decode(n,this.options);this.callback(i)}).catch(n=>{this.fireError(n)})}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,RA.default)().timer.setTimeout((e,r)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:r}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};gc.ReadableStreamMessageReader=PA});var nG=y(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.WriteableStreamMessageWriter=vc.AbstractMessageWriter=vc.MessageWriter=void 0;var eG=Pl(),ob=am(),aPe=CA(),tG=cm(),uPe="Content-Length: ",rG=`\r
|
|
200
200
|
`,cPe;(function(t){function e(r){let n=r;return n&&ob.func(n.dispose)&&ob.func(n.onClose)&&ob.func(n.onError)&&ob.func(n.write)}t.is=e})(cPe=vc.MessageWriter||(vc.MessageWriter={}));var Bw=class{constructor(){this.errorEmitter=new tG.Emitter,this.closeEmitter=new tG.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,r,n){this.errorEmitter.fire([this.asError(e),r,n])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${ob.string(e.message)?e.message:"unknown"}`)}};vc.AbstractMessageWriter=Bw;var FA;(function(t){function e(r){return r===void 0||typeof r=="string"?{charset:r??"utf-8",contentTypeEncoder:(0,eG.default)().applicationJson.encoder}:{charset:r.charset??"utf-8",contentEncoder:r.contentEncoder,contentTypeEncoder:r.contentTypeEncoder??(0,eG.default)().applicationJson.encoder}}t.fromOptions=e})(FA||(FA={}));var OA=class extends Bw{constructor(e,r){super(),this.writable=e,this.options=FA.fromOptions(r),this.errorCount=0,this.writeSemaphore=new aPe.Semaphore(1),this.writable.onError(n=>this.fireError(n)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(n=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(n):n).then(n=>{let i=[];return i.push(uPe,n.byteLength.toString(),rG),i.push(rG),this.doWrite(e,i,n)},n=>{throw this.fireError(n),n}))}async doWrite(e,r,n){try{return await this.writable.write(r.join(""),"ascii"),this.writable.write(n)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,r){this.errorCount++,this.fireError(e,r,this.errorCount)}end(){this.writable.end()}};vc.WriteableStreamMessageWriter=OA});var iG=y(jw=>{"use strict";Object.defineProperty(jw,"__esModule",{value:!0});jw.AbstractMessageBuffer=void 0;var lPe=13,fPe=10,dPe=`\r
|
|
201
201
|
`,AA=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let r=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(r),this._totalLength+=r.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let r=0,n=0,i=0,o=0;e:for(;n<this._chunks.length;){let c=this._chunks[n];i=0;t:for(;i<c.length;){switch(c[i]){case lPe:switch(r){case 0:r=1;break;case 2:r=3;break;default:r=0}break;case fPe:switch(r){case 1:r=2;break;case 3:r=4,i++;break e;default:r=0}break;default:r=0}i++}o+=c.byteLength,n++}if(r!==4)return;let s=this._read(o+i),a=new Map,u=this.toString(s,"ascii").split(dPe);if(u.length<2)return a;for(let c=0;c<u.length-2;c++){let f=u[c],h=f.indexOf(":");if(h===-1)throw new Error("Message header must separate key and value using :");let p=f.substr(0,h),g=f.substr(h+1).trim();a.set(e?p.toLowerCase():p,g)}return a}tryReadBody(e){if(!(this._totalLength<e))return this._read(e)}get numberOfBytes(){return this._totalLength}_read(e){if(e===0)return this.emptyBuffer();if(e>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let o=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(o)}if(this._chunks[0].byteLength>e){let o=this._chunks[0],s=this.asNative(o,e);return this._chunks[0]=o.slice(e),this._totalLength-=e,s}let r=this.allocNative(e),n=0,i=0;for(;e>0;){let o=this._chunks[i];if(o.byteLength>e){let s=o.slice(0,e);r.set(s,n),n+=e,this._chunks[i]=o.slice(e),this._totalLength-=e,e-=e}else r.set(o,n),n+=o.byteLength,this._chunks.shift(),this._totalLength-=o.byteLength,e-=o.byteLength}return r}};jw.AbstractMessageBuffer=AA});var fG=y(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});Qe.createMessageConnection=Qe.ConnectionOptions=Qe.MessageStrategy=Qe.CancellationStrategy=Qe.CancellationSenderStrategy=Qe.CancellationReceiverStrategy=Qe.RequestCancellationReceiverStrategy=Qe.IdCancellationReceiverStrategy=Qe.ConnectionStrategy=Qe.ConnectionError=Qe.ConnectionErrors=Qe.LogTraceNotification=Qe.SetTraceNotification=Qe.TraceFormat=Qe.TraceValues=Qe.Trace=Qe.NullLogger=Qe.ProgressType=Qe.ProgressToken=void 0;var oG=Pl(),pn=am(),at=fA(),sG=hA(),sb=cm(),qA=Iw(),ub;(function(t){t.type=new at.NotificationType("$/cancelRequest")})(ub||(ub={}));var aG;(function(t){function e(r){return typeof r=="string"||typeof r=="number"}t.is=e})(aG=Qe.ProgressToken||(Qe.ProgressToken={}));var ab;(function(t){t.type=new at.NotificationType("$/progress")})(ab||(ab={}));var IA=class{constructor(){}};Qe.ProgressType=IA;var LA;(function(t){function e(r){return pn.func(r)}t.is=e})(LA||(LA={}));Qe.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var Cr;(function(t){t[t.Off=0]="Off",t[t.Messages=1]="Messages",t[t.Compact=2]="Compact",t[t.Verbose=3]="Verbose"})(Cr=Qe.Trace||(Qe.Trace={}));var hPe;(function(t){t.Off="off",t.Messages="messages",t.Compact="compact",t.Verbose="verbose"})(hPe=Qe.TraceValues||(Qe.TraceValues={}));(function(t){function e(n){if(!pn.string(n))return t.Off;switch(n=n.toLowerCase(),n){case"off":return t.Off;case"messages":return t.Messages;case"compact":return t.Compact;case"verbose":return t.Verbose;default:return t.Off}}t.fromString=e;function r(n){switch(n){case t.Off:return"off";case t.Messages:return"messages";case t.Compact:return"compact";case t.Verbose:return"verbose";default:return"off"}}t.toString=r})(Cr=Qe.Trace||(Qe.Trace={}));var ga;(function(t){t.Text="text",t.JSON="json"})(ga=Qe.TraceFormat||(Qe.TraceFormat={}));(function(t){function e(r){return pn.string(r)?(r=r.toLowerCase(),r==="json"?t.JSON:t.Text):t.Text}t.fromString=e})(ga=Qe.TraceFormat||(Qe.TraceFormat={}));var uG;(function(t){t.type=new at.NotificationType("$/setTrace")})(uG=Qe.SetTraceNotification||(Qe.SetTraceNotification={}));var MA;(function(t){t.type=new at.NotificationType("$/logTrace")})(MA=Qe.LogTraceNotification||(Qe.LogTraceNotification={}));var Nw;(function(t){t[t.Closed=1]="Closed",t[t.Disposed=2]="Disposed",t[t.AlreadyListening=3]="AlreadyListening"})(Nw=Qe.ConnectionErrors||(Qe.ConnectionErrors={}));var Fl=class extends Error{constructor(e,r){super(r),this.code=e,Object.setPrototypeOf(this,Fl.prototype)}};Qe.ConnectionError=Fl;var cG;(function(t){function e(r){let n=r;return n&&pn.func(n.cancelUndispatched)}t.is=e})(cG=Qe.ConnectionStrategy||(Qe.ConnectionStrategy={}));var NA;(function(t){function e(r){let n=r;return n&&(n.kind===void 0||n.kind==="id")&&pn.func(n.createCancellationTokenSource)&&(n.dispose===void 0||pn.func(n.dispose))}t.is=e})(NA=Qe.IdCancellationReceiverStrategy||(Qe.IdCancellationReceiverStrategy={}));var lG;(function(t){function e(r){let n=r;return n&&n.kind==="request"&&pn.func(n.createCancellationTokenSource)&&(n.dispose===void 0||pn.func(n.dispose))}t.is=e})(lG=Qe.RequestCancellationReceiverStrategy||(Qe.RequestCancellationReceiverStrategy={}));var BA;(function(t){t.Message=Object.freeze({createCancellationTokenSource(r){return new qA.CancellationTokenSource}});function e(r){return NA.is(r)||lG.is(r)}t.is=e})(BA=Qe.CancellationReceiverStrategy||(Qe.CancellationReceiverStrategy={}));var jA;(function(t){t.Message=Object.freeze({sendCancellation(r,n){return r.sendNotification(ub.type,{id:n})},cleanup(r){}});function e(r){let n=r;return n&&pn.func(n.sendCancellation)&&pn.func(n.cleanup)}t.is=e})(jA=Qe.CancellationSenderStrategy||(Qe.CancellationSenderStrategy={}));var $A;(function(t){t.Message=Object.freeze({receiver:BA.Message,sender:jA.Message});function e(r){let n=r;return n&&BA.is(n.receiver)&&jA.is(n.sender)}t.is=e})($A=Qe.CancellationStrategy||(Qe.CancellationStrategy={}));var UA;(function(t){function e(r){let n=r;return n&&pn.func(n.handleMessage)}t.is=e})(UA=Qe.MessageStrategy||(Qe.MessageStrategy={}));var pPe;(function(t){function e(r){let n=r;return n&&($A.is(n.cancellationStrategy)||cG.is(n.connectionStrategy)||UA.is(n.messageStrategy))}t.is=e})(pPe=Qe.ConnectionOptions||(Qe.ConnectionOptions={}));var va;(function(t){t[t.New=1]="New",t[t.Listening=2]="Listening",t[t.Closed=3]="Closed",t[t.Disposed=4]="Disposed"})(va||(va={}));function mPe(t,e,r,n){let i=r!==void 0?r:Qe.NullLogger,o=0,s=0,a=0,u="2.0",c,f=new Map,h,p=new Map,g=new Map,b,E=new sG.LinkedMap,R=new Map,S=new Set,k=new Map,D=Cr.Off,O=ga.Text,B,M=va.New,N=new sb.Emitter,J=new sb.Emitter,V=new sb.Emitter,le=new sb.Emitter,te=new sb.Emitter,fe=n&&n.cancellationStrategy?n.cancellationStrategy:$A.Message;function de(j){if(j===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+j.toString()}function Ce(j){return j===null?"res-unknown-"+(++a).toString():"res-"+j.toString()}function Re(){return"not-"+(++s).toString()}function re(j,ie){at.Message.isRequest(ie)?j.set(de(ie.id),ie):at.Message.isResponse(ie)?j.set(Ce(ie.id),ie):j.set(Re(),ie)}function ee(j){}function oe(){return M===va.Listening}function ue(){return M===va.Closed}function Fe(){return M===va.Disposed}function z(){(M===va.New||M===va.Listening)&&(M=va.Closed,J.fire(void 0))}function $(j){N.fire([j,void 0,void 0])}function cr(j){N.fire(j)}t.onClose(z),t.onError($),e.onClose(z),e.onError(cr);function Xt(){b||E.size===0||(b=(0,oG.default)().timer.setImmediate(()=>{b=void 0,er()}))}function Fr(j){at.Message.isRequest(j)?Lr(j):at.Message.isNotification(j)?mr(j):at.Message.isResponse(j)?Ln(j):Gn(j)}function er(){if(E.size===0)return;let j=E.shift();try{let ie=n?.messageStrategy;UA.is(ie)?ie.handleMessage(j,Fr):Fr(j)}finally{Xt()}}let ht=j=>{try{if(at.Message.isNotification(j)&&j.method===ub.type.method){let ie=j.params.id,ve=de(ie),Te=E.get(ve);if(at.Message.isRequest(Te)){let Q=n?.connectionStrategy,qt=Q&&Q.cancelUndispatched?Q.cancelUndispatched(Te,ee):void 0;if(qt&&(qt.error!==void 0||qt.result!==void 0)){E.delete(ve),k.delete(ie),qt.id=Te.id,Kr(qt,j.method,Date.now()),e.write(qt).catch(()=>i.error("Sending response for canceled message failed."));return}}let st=k.get(ie);if(st!==void 0){st.cancel(),Yr(j);return}else S.add(ie)}re(E,j)}finally{Xt()}};function Lr(j){if(Fe())return;function ie(je,Ut,F){let se={jsonrpc:u,id:j.id};je instanceof at.ResponseError?se.error=je.toJson():se.result=je===void 0?null:je,Kr(se,Ut,F),e.write(se).catch(()=>i.error("Sending response failed."))}function ve(je,Ut,F){let se={jsonrpc:u,id:j.id,error:je.toJson()};Kr(se,Ut,F),e.write(se).catch(()=>i.error("Sending response failed."))}function Te(je,Ut,F){je===void 0&&(je=null);let se={jsonrpc:u,id:j.id,result:je};Kr(se,Ut,F),e.write(se).catch(()=>i.error("Sending response failed."))}Ui(j);let st=f.get(j.method),Q,qt;st&&(Q=st.type,qt=st.handler);let It=Date.now();if(qt||c){let je=j.id??String(Date.now()),Ut=NA.is(fe.receiver)?fe.receiver.createCancellationTokenSource(je):fe.receiver.createCancellationTokenSource(j);j.id!==null&&S.has(j.id)&&Ut.cancel(),j.id!==null&&k.set(je,Ut);try{let F;if(qt)if(j.params===void 0){if(Q!==void 0&&Q.numberOfParams!==0){ve(new at.ResponseError(at.ErrorCodes.InvalidParams,`Request ${j.method} defines ${Q.numberOfParams} params but received none.`),j.method,It);return}F=qt(Ut.token)}else if(Array.isArray(j.params)){if(Q!==void 0&&Q.parameterStructures===at.ParameterStructures.byName){ve(new at.ResponseError(at.ErrorCodes.InvalidParams,`Request ${j.method} defines parameters by name but received parameters by position`),j.method,It);return}F=qt(...j.params,Ut.token)}else{if(Q!==void 0&&Q.parameterStructures===at.ParameterStructures.byPosition){ve(new at.ResponseError(at.ErrorCodes.InvalidParams,`Request ${j.method} defines parameters by position but received parameters by name`),j.method,It);return}F=qt(j.params,Ut.token)}else c&&(F=c(j.method,j.params,Ut.token));let se=F;F?se.then?se.then(Pe=>{k.delete(je),ie(Pe,j.method,It)},Pe=>{k.delete(je),Pe instanceof at.ResponseError?ve(Pe,j.method,It):Pe&&pn.string(Pe.message)?ve(new at.ResponseError(at.ErrorCodes.InternalError,`Request ${j.method} failed with message: ${Pe.message}`),j.method,It):ve(new at.ResponseError(at.ErrorCodes.InternalError,`Request ${j.method} failed unexpectedly without providing any details.`),j.method,It)}):(k.delete(je),ie(F,j.method,It)):(k.delete(je),Te(F,j.method,It))}catch(F){k.delete(je),F instanceof at.ResponseError?ie(F,j.method,It):F&&pn.string(F.message)?ve(new at.ResponseError(at.ErrorCodes.InternalError,`Request ${j.method} failed with message: ${F.message}`),j.method,It):ve(new at.ResponseError(at.ErrorCodes.InternalError,`Request ${j.method} failed unexpectedly without providing any details.`),j.method,It)}}else ve(new at.ResponseError(at.ErrorCodes.MethodNotFound,`Unhandled method ${j.method}`),j.method,It)}function Ln(j){if(!Fe())if(j.id===null)j.error?i.error(`Received response message without id: Error is:
|
|
202
202
|
${JSON.stringify(j.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let ie=j.id,ve=R.get(ie);if(Yn(j,ve),ve!==void 0){R.delete(ie);try{if(j.error){let Te=j.error;ve.reject(new at.ResponseError(Te.code,Te.message,Te.data))}else if(j.result!==void 0)ve.resolve(j.result);else throw new Error("Should never happen.")}catch(Te){Te.message?i.error(`Response handler '${ve.method}' failed with message: ${Te.message}`):i.error(`Response handler '${ve.method}' failed unexpectedly.`)}}}}function mr(j){if(Fe())return;let ie,ve;if(j.method===ub.type.method){let Te=j.params.id;S.delete(Te),Yr(j);return}else{let Te=p.get(j.method);Te&&(ve=Te.handler,ie=Te.type)}if(ve||h)try{if(Yr(j),ve)if(j.params===void 0)ie!==void 0&&ie.numberOfParams!==0&&ie.parameterStructures!==at.ParameterStructures.byName&&i.error(`Notification ${j.method} defines ${ie.numberOfParams} params but received none.`),ve();else if(Array.isArray(j.params)){let Te=j.params;j.method===ab.type.method&&Te.length===2&&aG.is(Te[0])?ve({token:Te[0],value:Te[1]}):(ie!==void 0&&(ie.parameterStructures===at.ParameterStructures.byName&&i.error(`Notification ${j.method} defines parameters by name but received parameters by position`),ie.numberOfParams!==j.params.length&&i.error(`Notification ${j.method} defines ${ie.numberOfParams} params but received ${Te.length} arguments`)),ve(...Te))}else ie!==void 0&&ie.parameterStructures===at.ParameterStructures.byPosition&&i.error(`Notification ${j.method} defines parameters by position but received parameters by name`),ve(j.params);else h&&h(j.method,j.params)}catch(Te){Te.message?i.error(`Notification handler '${j.method}' failed with message: ${Te.message}`):i.error(`Notification handler '${j.method}' failed unexpectedly.`)}else V.fire(j)}function Gn(j){if(!j){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message:
|
|
@@ -2274,7 +2274,7 @@ function OnSetText(uri, text)
|
|
|
2274
2274
|
return diffs
|
|
2275
2275
|
end
|
|
2276
2276
|
`});var M1e={};rr(M1e,{default:()=>Axt,filenames:()=>qxt});var Oxt,Axt,qxt,B1e=U(()=>{y1e();x1e();_1e();w1e();E1e();D1e();S1e();C1e();k1e();R1e();T1e();P1e();F1e();O1e();A1e();q1e();I1e();L1e();Oxt=[XN,e$,t$,r$,n$,i$,o$,s$,a$,u$,c$,l$,f$,d$,h$,p$,m$,g$],Axt=Oxt,qxt=["../sumneko-3rd/factorio/factorio-plugin/command-line.lua","../sumneko-3rd/factorio/factorio-plugin/global.lua","../sumneko-3rd/factorio/factorio-plugin/object-name.lua","../sumneko-3rd/factorio/factorio-plugin/on-event.lua","../sumneko-3rd/factorio/factorio-plugin/remote.lua","../sumneko-3rd/factorio/factorio-plugin/require.lua","../sumneko-3rd/factorio/factorio-plugin/util.lua","../sumneko-3rd/factorio/library/LuaObject.lua","../sumneko-3rd/factorio/library/blueprint.lua","../sumneko-3rd/factorio/library/core/lualib/mod-gui.lua","../sumneko-3rd/factorio/library/core/lualib/util.lua","../sumneko-3rd/factorio/library/data/mods.lua","../sumneko-3rd/factorio/library/debug.lua","../sumneko-3rd/factorio/library/global.lua","../sumneko-3rd/factorio/library/math.lua","../sumneko-3rd/factorio/library/package.lua","../sumneko-3rd/factorio/library/serpent.lua","../sumneko-3rd/factorio/plugin.lua"]});var j1e=y((GBt,Ixt)=>{Ixt.exports={name:"Factorio",files:["control%.lua","data%.lua","data%-updates%.lua","data%-final%-fixes%.lua","settings%.lua","settings%-updates%.lua","settings%-final%-fixes%.lua"],settings:{"Lua.runtime.version":"Lua 5.2","Lua.runtime.path":["?.lua"],"Lua.runtime.special":{__object_name:"type"},"Lua.runtime.builtin":{io:"disable",os:"disable",coroutine:"disable",package:"disable",math:"disable",debug:"disable"},"Lua.diagnostics.globals":["__DebugAdapter","__Profiler"]}}});var N1e={};rr(N1e,{getConfig:()=>Mxt,getLuaFiles:()=>Lxt});async function Lxt(){if(!BT){BT=[];let t=await Promise.resolve().then(()=>(B1e(),M1e)),e=t.default,r=t.filenames;for(let n=0;n<e.length;n++)BT.push({name:r[n].replace("../sumneko-3rd/",""),content:e[n].default})}return BT}async function Mxt(t){return{name:"factorio/config.json",content:JSON.stringify(Object.assign(await Promise.resolve().then(()=>pe(j1e())),{bundleVersion:ha,factorioVersion:t}))}}var BT,$1e=U(()=>{"use strict";Jp()});async function W1e(t,e){let{ApiDocGenerator:r}=await Promise.resolve().then(()=>(Sw(),IO)),n=new r((await nd.readFile(t,"utf8")).toString(),await Yg("docs",{}));return await nd.mkdir(e,{recursive:!0}),n.generate_sumneko_docs(i=>(0,U1e.createWriteStream)(Zg.default.join(e,i))),n.application_version}var nd,Zg,U1e,z1e=U(()=>{"use strict";nd=pe(require("fs/promises")),Zg=pe(require("path"));xo();MT();U1e=require("fs");kr.command("sumneko-3rd [outdir]").description("Generate a library bundle for sumneko.lua LSP").option("-d, --docs <docsjson>","Include runtime docs").action(async(t,e)=>{let r=await Promise.resolve().then(()=>($1e(),N1e));await Promise.all((await r.getLuaFiles()).map(async o=>{let s=Zg.default.join(t??process.cwd(),o.name);return await nd.mkdir(Zg.default.dirname(s),{recursive:!0}),nd.writeFile(s,Buffer.from(o.content))}));let n;e.docs&&(n=await W1e(e.docs,Zg.default.join(t??process.cwd(),"factorio","library")));let i=await r.getConfig(n);await nd.writeFile(Zg.default.join(t??process.cwd(),i.name),Buffer.from(i.content))});kr.command("docs <docjson> <outdir>").description("Generate runtime api docs for sumneko.lua LSP").action(async(t,e)=>{await W1e(t,e)})});function ni(t,e,r){return{start:{line:t,character:e},end:{line:t,character:e+r}}}function rl(t,e,r,n,i){return{type:t,value:e,range:ni(r,n,e.length),selectionRange:ni(r,n,e.length),...i}}function hp(t,e,r){return rl("text",t,e,r)}function Bxt(t,e,r){return(0,H1e.default)(e.sticky),e.lastIndex=r,e.exec(t)}function jT(t,e,r){let n=t.value,i=t.range.start.line,o=t.range.start.character,s=[],a=0,u=-1;do u=n.indexOf(e,u+1),u>=0&&(r?r.find(c=>{let f=Bxt(n,c.pattern,u);if(!f)return!1;let h=c.parse(f,i,o);return h?(a<u-1&&s.push(hp(n.substring(a,u),i,o+a)),s.push(h),a=f.indices[0][1],u=a,!0):!1}):(s.push(hp(n.substring(a,u),i,o+a)),u+=e.length,a=u));while(u>=0);return a<=n.length-1&&s.push(hp(n.substring(a),i,o+a)),s}function jxt(t){return jT(t,"|").map(e=>{let r=e.value.indexOf("="),n=hp(e.value.substring(0,r),e.range.start.line,e.range.start.character),i=hp(e.value.substring(r+1),e.range.start.line,e.range.start.character+r+1);return{type:"plural_option",range:e.range,selectionRange:e.selectionRange,children:[...jT(n,",").map(o=>{if(o.value==="rest")return{type:"plural_match",value:"rest",range:o.range,selectionRange:o.selectionRange};let s=o.value.match(new RegExp("^(ends in )?(\\d+)(?:-(\\d+))?$","d"));return s?{type:"plural_match",value:s[3]?[parseInt(s[2]),parseInt(s[3])]:parseInt(s[2]),ends_in:s[1]?!0:void 0,range:o.range,selectionRange:o.selectionRange}:{type:"error",value:o.value,range:o.range,selectionRange:o.selectionRange}}),...jT(i,"__",V1e)]}})}function v$(t){let e=t.open_comments;t.open_comments=[];let r=e[0],n=e[e.length-1];return{type:"comment_group",range:{start:r.range.start,end:n.range.end},selectionRange:r.selectionRange,children:e}}function G1e(t){let e={root:{type:"root",children:[],range:{start:{line:0,character:0},end:{line:t.lineCount,character:0}},selectionRange:ni(0,0,0)},open_comments:[]};for(let r=0;r<t.lineCount;r++){let n={start:{line:r,character:0},end:{line:r,character:1/0}},i=t.getText(n).replace(/((\r\n)|\r|\n)$/,"");for(let o of Nxt){let s=o.pattern.exec(i);if(s){o.parse(s,r,e);break}}}return e.root}var H1e,ZBt,V1e,Nxt,K1e=U(()=>{"use strict";H1e=pe(require("assert"));ZBt=[{pattern:new RegExp("\\\\n","dy"),parse(t,e,r){return rl("escape",`
|
|
2277
|
-
`,e,r+t.index)}}];V1e=[{pattern:new RegExp("__([0-9]+)__","dy"),parse(t,e,r){return{type:"parameter",value:parseInt(t[1]),range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__plural_for_parameter_([0-9]+)_\\{(.*?)\\}__","dy"),parse(t,e,r){return{type:"plural",value:parseInt(t[1]),children:jxt(hp(t[2],e,r+t.indices[2][0])),range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(CONTROL_(?:MOVE|(?:LEFT|RIGHT)_CLICK|KEY_(?:SHIFT|CTRL)|STYLE_(?:BEGIN|END)))__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(REMARK_COLOR_(?:BEGIN|END))__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(CONTROL(?:_MODIFIER)?|ENTITY|ITEM|TILE|FLUID)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[2][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(ALT_CONTROL)__(.+?)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[2][0]),rl("macro_argument",t[3],e,r+t.indices[3][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(ALT_CONTROL_(?:LEFT|RIGHT)_CLICK)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[1][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}}];Nxt=[{pattern:new RegExp("^[\\r\\t ]*([#;].*)?$","d"),parse(t,e,r){t[1]?r.open_comments.push(rl("comment",t[1],e,t.indices[1][0])):r.open_comments.length>0&&(r.open_section??r.root).children.push(v$(r))}},{pattern:new RegExp("^[\\r\\t ]*\\[(.*?)\\][\\r\\t ]*$","d"),parse(t,e,r){r.open_section=rl("section",t[1],e,t.indices[1][0],{children:[]}),r.open_comments.length>0&&r.open_section.children.push(v$(r)),r.open_section.range.start.character-=1,r.open_section.range.end.character+=1,r.root.children.push(r.open_section)}},{pattern:new RegExp("^[\\r\\t ]*(.*?)=(.*)$","d"),parse(t,e,r){let n=rl("record",t[1],e,t.indices[1][0],{children:[...jT(hp(t[2],e,t.indices[2][0]),"__",V1e)]});r.open_comments.length>0&&n.children.unshift(v$(r)),n.range.end.character=t[0].length,(r.open_section??r.root).children.push(n)}},{pattern:new RegExp("^.*$","d"),parse(t,e,r){r.root.children.push({type:"error",value:t[0],range:ni(e,0,t[0].length),selectionRange:ni(e,0,0)})}}]});function $xt(t){if(b$.has(t))return b$.get(t);if(t.startsWith("#")){let r=t.match(/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?/);if(r)return{red:parseInt(r[1],16)/255,green:parseInt(r[2],16)/255,blue:parseInt(r[3],16)/255,alpha:r[4]?parseInt(r[4],16)/255:1}}let e=t.match(/\s*(\d+(?:\.\d+)?)\s*,?\s*(\d+(?:\.\d+)?)\s*,?\s*(\d+(?:\.\d+)?)(?:\s*,?\s*(\d+(?:\.\d+)?))?\s*/);if(e){let r=parseFloat(e[1]),n=parseFloat(e[2]),i=parseFloat(e[3]),o=e[4]?parseFloat(e[4]):void 0;return(r>1||n>1||i>1||o&&o>1)&&(r=r/255,n=n/255,i=i/255,o&&(o=o/255)),o||(o=1),{red:r,green:n,blue:i,alpha:o}}}function pp(t){let e=Math.floor(t).toString(16);return e.length<2&&(e="0"+e),e}function mp(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}function Uxt(t){let e=[];for(let[r,n]of b$)if(Math.abs(n.red-t.red)<.004&&Math.abs(n.green-t.green)<.004&&Math.abs(n.blue-t.blue)<.004&&Math.abs(n.alpha-t.alpha)<.004){e.push(r);break}return t.alpha>.996?(e.push(`#${pp(t.red*255)}${pp(t.green*255)}${pp(t.blue*255)}`),e.push(`${Math.floor(t.red*255)}, ${Math.floor(t.green*255)}, ${Math.floor(t.blue*255)}`),e.push(`${mp(t.red,3)}, ${mp(t.green,3)}, ${mp(t.blue,3)}`)):(e.push(`#${pp(t.red*255)}${pp(t.green*255)}${pp(t.blue*255)}${pp(t.alpha*255)}`),e.push(`${Math.floor(t.red*255)}, ${Math.floor(t.green*255)}, ${Math.floor(t.blue*255)}, ${Math.floor(t.alpha*255)}`),e.push(`${mp(t.red,3)}, ${mp(t.green,3)}, ${mp(t.blue,3)}, ${mp(t.alpha,3)}`)),e}function Wxt(t,e){let r=[];return wx(t,"record",(n,i)=>{let o=i.length>0?i[i.length-1]:void 0,s=o?.type==="section"?o.value:void 0;r.push({name:s?`${s}.${n.value}`:n.value,link:{targetUri:e,targetRange:n.range,targetSelectionRange:n.selectionRange}})}),r}function Y1e(t){return t!==void 0}function Q1e(t){return{name:t.value,detail:"",kind:ys.SymbolKind.String,range:t.range,selectionRange:t.selectionRange,children:[]}}function zxt(t){return{name:t.value,detail:"",kind:ys.SymbolKind.Namespace,range:t.range,selectionRange:t.selectionRange,children:t.children.map(e=>{switch(e.type){case"record":return Q1e(e);default:return}}).filter(Y1e)}}function Hxt(t){return t.children.map(e=>{switch(e.type){case"section":return zxt(e);case"record":return Q1e(e);default:return}}).filter(Y1e)}var ys,b$,NT,Z1e=U(()=>{"use strict";ys=pe(Hx());lk();K1e();b$=new Map([["default",{red:1,green:.63,blue:.259,alpha:1}],["red",{red:1,green:.166,blue:.141,alpha:1}],["green",{red:.173,green:.824,blue:.25,alpha:1}],["blue",{red:.343,green:.683,blue:1,alpha:1}],["orange",{red:1,green:.63,blue:.259,alpha:1}],["yellow",{red:1,green:.828,blue:.231,alpha:1}],["pink",{red:1,green:.52,blue:.633,alpha:1}],["purple",{red:.821,green:.44,blue:.998,alpha:1}],["white",{red:.9,green:.9,blue:.9,alpha:1}],["black",{red:.5,green:.5,blue:.5,alpha:1}],["gray",{red:.7,green:.7,blue:.7,alpha:1}],["brown",{red:.757,green:.522,blue:.371,alpha:1}],["cyan",{red:.335,green:.918,blue:.866,alpha:1}],["acid",{red:.708,green:.996,blue:.134,alpha:1}]]);NT=class{constructor(){this.hasDiagnosticRelatedInformationCapability=!1;this.definitions=new Map;this.documentTrees=new Map}async validateTextDocument(e){let r=e.getText().split(/\r?\n/),n=[],i=this.onDocumentSymbol(e),o,s=new Map;s.set(void 0,new Set);for(let a=0;a<r.length;a++){let u=r[a];if(!u.match(/^[ \r\t]*[#;]/)){if(u.match(/^[ \r\t]*\[/)){let c=u.match(/^[ \r\t]*\[([^\[]+)\][ \r\t]*$/);if(c)if(o=c[1],s.has(o)){let f=i.filter(g=>g.name===o),h=f.reduce((g,b)=>g.range.start.line<b.range.start.line?g:b),p=f.find(g=>g.range.start.line===a);n.push({message:"Duplicate Section",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:u.indexOf(o)},end:{line:a,character:u.indexOf(o)+o.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0,code:"section.merge",data:{firstsym:h,newsym:p}})}else if(s.get(void 0).has(o)){let h=i.filter(p=>p.name===o).reduce((p,g)=>p.range.start.line<g.range.start.line?p:g);n.push({message:"Section Name conflicts with Key in Root",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:u.indexOf(o)},end:{line:a,character:u.indexOf(o)+o.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0,code:"section.rootconflict"}),s.set(o,new Set)}else s.set(o,new Set);else n.push({message:"Invalid Section Header",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:0},end:{line:a,character:u.length}},code:"section.invalid"})}else if(u.trim().length>0){let c=u.match(/^[ \r\t]*([^=]*)=(.*)$/);if(c){let f=c[1];if(s.get(o).has(f)){let h=i.filter(p=>p.name===o&&p.kind===ys.SymbolKind.Namespace).map(p=>p.children?.filter(g=>g.name===f)??[]).reduce((p,g)=>p.concat(g),i.filter(p=>p.name===f&&p.kind===ys.SymbolKind.String)).reduce((p,g)=>p.range.start.line<g.range.start.line?p:g);n.push({message:"Duplicate Key",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,code:"key.duplicate",range:{start:{line:a,character:u.indexOf(f)},end:{line:a,character:u.indexOf(f)+f.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0})}else s.get(o).add(f)}else n.push({message:"Invalid Key",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,code:"key.invalid",range:{start:{line:a,character:0},end:{line:a,character:u.length}}})}}}return n}loadDocument(e){let r=G1e(e);this.documentTrees.set(e.uri,r),this.definitions.set(e.uri,Wxt(r,e.uri))}clearDocument(e){this.definitions.has(e)&&this.definitions.delete(e),this.documentTrees.has(e)&&this.documentTrees.delete(e)}clearFolder(e){for(let r of this.definitions.keys())r.startsWith(e)&&this.definitions.delete(r);for(let r of this.documentTrees.keys())r.startsWith(e)&&this.documentTrees.delete(r)}onDocumentSymbol(e){this.documentTrees.has(e.uri)||this.loadDocument(e);let r=this.documentTrees.get(e.uri);return r?Hxt(r):[]}findDefinitions(e){let r=[];for(let n of this.definitions.values())r.push(...n.filter(i=>i.name===e).map(i=>i.link));return r}getCompletions(e){let r=[];for(let n of this.definitions.values())e?r.push(n.map(i=>i.name).filter(i=>i.startsWith(e))):r.push(n.map(i=>i.name).map(i=>{let o=i.indexOf(".");return o===-1?i:i.substring(0,o+1)}));return[...new Set(r.flat())]}onCodeAction(e,r,n){return e.languageId==="factorio-locale"?n.diagnostics.filter(i=>!!i.code).map(i=>{switch(i.code){case"section.merge":{let o=i,s=o.data.firstsym.range.end;return{title:"Merge Sections",kind:ys.CodeActionKind.QuickFix+".section.merge",diagnostics:[i],edit:{changes:{[e.uri]:[{range:o.data.newsym.range,newText:""},{range:{start:s,end:s},newText:e.getText({start:{line:o.data.newsym.selectionRange.end.line,character:o.data.newsym.selectionRange.end.character+1},end:o.data.newsym.range.end})}]}}}}default:return}}).filter(i=>!!i):[]}onDocumentColor(e){let r=[];for(let n=0;n<e.lineCount;n++){let i={start:{line:n,character:0},end:{line:n,character:1/0}},o=e.getText(i).replace(/(\r\n)|\r|\n$/,"");i.end.character=o.length;let s=/\[color=([^\]]+)\]/g,a=s.exec(o);for(;a;){{let u=$xt(a[1]);u&&r.push({color:u,range:{start:{line:n,character:a.index+7},end:{line:n,character:a.index+7+a[1].length}}})}a=s.exec(o)}}return r}onColorPresentation(e,r){return Uxt(e).map(n=>({label:n,textEdit:{range:r,newText:n}}))}}});var y$,$T,J1e=U(()=>{"use strict";y$=pe(Hx()),$T=class{constructor(e){this.Locale=e}onDefinition(e,r){let n=r.getText({start:{line:e.position.line,character:0},end:{line:e.position.line,character:Number.MAX_VALUE}});for(let i of n.matchAll(/(['"])((?:[^\\](?<!\1)|\\['"0abfnrtv\\]|\\\d{1,3}|\\x[0-9a-fA-F]{2})*)\1/g))if(i.index&&i.index<=e.position.character&&i.index+i[0].length>=e.position.character){let o=i[2],s={start:{line:e.position.line,character:i.index},end:{line:e.position.line,character:i.index+i[0].length}};return this.Locale.findDefinitions(o).map(u=>Object.assign({originSelectionRange:s},u))}}onCompletion(e,r){let i=r.getText({start:{line:e.position.line,character:0},end:{line:e.position.line,character:e.position.character+1}}).match(/(['"])((?:[^\\](?<!\1)|\\['"0abfnrtv\\]|\\\d{1,3}|\\x[0-9a-fA-F]{2})*)\1$/);if(i){let o=i[2].lastIndexOf("."),s=o!==-1?i[2].substring(0,o+1):"";return this.Locale.getCompletions(s).map(a=>({label:a.endsWith(".")?a.substring(0,a.length-1):a,kind:a.endsWith(".")?y$.CompletionItemKind.Enum:y$.CompletionItemKind.EnumMember,commitCharacters:a.endsWith(".")?["."]:[],textEdit:{newText:a.endsWith(".")?a.substring(0,a.length-1):a,range:{start:{line:e.position.line,character:i.index+1},end:{line:e.position.line,character:e.position.character}}}}))}return[]}}});var twe={};rr(twe,{runLanguageServer:()=>Vxt});async function Vxt(){let t=new Vx,e=new NT,r=new $T(e),n=(0,na.createConnection)(na.ProposedFeatures.all),i=new na.TextDocuments(yg);async function o(c){let f=i.get(c);if(f)return f;let h=nr.parse(c);if(h.scheme==="file"&&h.path.endsWith(".cfg"))return f=yg.create(c,"factorio-locale",1,await X1e.readFile(h.fsPath,"utf8")),f}async function s(c){let f=await o(c);f&&f.languageId==="factorio-locale"&&e.loadDocument(f)}async function a(c){let f=nr.parse(c);if(f.scheme==="file"){let h=(0,ewe.default)(f.fsPath,{pattern:"**/locale/*/*.cfg"});h.on("match",p=>{s(nr.file(p.absolute).toString())}),h.on("error",p=>{throw p}),await new Promise(p=>{h.on("end",()=>{p()})})}}let u=!1;return n.onInitialize(async c=>{let f=c.capabilities;u=!!(f.workspace&&f.workspace.workspaceFolders),e.hasDiagnosticRelatedInformationCapability=!!(f.textDocument&&f.textDocument.publishDiagnostics&&f.textDocument.publishDiagnostics.relatedInformation);let h={capabilities:{textDocumentSync:na.TextDocumentSyncKind.Incremental,documentSymbolProvider:!0,codeActionProvider:!0,colorProvider:!0,definitionProvider:!0,completionProvider:{triggerCharacters:['"',"'","."],allCommitCharacters:["."]}}};return u&&(h.capabilities.workspace={workspaceFolders:{supported:!0,changeNotifications:!0}},c.workspaceFolders&&await Promise.all(c.workspaceFolders.map(p=>a(p.uri)))),h}),n.onInitialized(()=>{u&&n.workspace.onDidChangeWorkspaceFolders(async c=>{for(let f of c.removed)e.clearFolder(f.uri);for(let f of c.added)await a(f.uri)})}),i.onDidClose(c=>{switch(c.document.languageId){case"factorio-locale":n.sendDiagnostics({uri:c.document.uri,diagnostics:[]});break;case"factorio-changelog":n.sendDiagnostics({uri:c.document.uri,diagnostics:[]});break}}),i.onDidChangeContent(async c=>{switch(c.document.languageId){case"factorio-locale":e.loadDocument(c.document),n.sendDiagnostics({uri:c.document.uri,diagnostics:await e.validateTextDocument(c.document)});break;case"factorio-changelog":n.sendDiagnostics({uri:c.document.uri,diagnostics:await t.validateTextDocument(c.document)});break}}),n.onDefinition(async c=>{let f=await o(c.textDocument.uri);return f&&f.languageId==="lua"?r.onDefinition(c,f):null}),n.onCompletion(async c=>{let f=await o(c.textDocument.uri);if(f&&f.languageId==="lua")return{isIncomplete:!0,items:r.onCompletion(c,f)}}),n.onDidChangeWatchedFiles(async c=>{for(let f of c.changes)switch(f.type){case na.FileChangeType.Deleted:e.clearDocument(f.uri);break;case na.FileChangeType.Changed:case na.FileChangeType.Created:let h=await o(f.uri);h&&h.languageId==="factorio-locale"&&e.loadDocument(h);break;default:break}}),n.onDocumentSymbol(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onDocumentSymbol(f);case"factorio-changelog":return t.onDocumentSymbol(f)}return null}),n.onCodeAction(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onCodeAction(f,c.range,c.context);case"factorio-changelog":return t.onCodeAction(f,c.range,c.context)}return null}),n.onDocumentColor(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onDocumentColor(f)}return null}),n.onColorPresentation(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onColorPresentation(c.color,c.range)}return null}),i.listen(n),n.listen(),new Promise(c=>{n.onExit(c)})}var X1e,na,ewe,rwe=U(()=>{"use strict";X1e=pe(require("fs/promises")),na=pe(Hx());KB();bj();Z1e();uc();ewe=pe(qx());J1e()});var nwe=U(()=>{"use strict";xo();kr.command("lsp").description("Run LSP Server for Locale and Changelog features").allowUnknownOption(!0).allowExcessArguments(!0).action(async()=>{let{runLanguageServer:t}=await Promise.resolve().then(()=>(rwe(),twe));await t()})});var iwe,owe,swe,awe=U(()=>{"use strict";iwe=pe(require("os")),owe=pe(require("fs/promises"));xo();swe=pe(qx());uc();BO();MT();kr.command("debug <factorioPath>").description("Launch a DAP debug session").option("-d, --docs <docsPath>","path to runtime-api.json").option("-c, --config <configPath>","path to config.ini").option("-w, --workspace <workspacePath...>","path to workspace folders").option("-n, --nativeDebugger <nativeDebugger>").action(async(t,e)=>{let r={name:"standalone",factorioPath:t,configPath:e.config,docsPath:e.docs,nativeDebugger:e.nativeDebugger},n=sr.joinPath(nr.file(t),r.docsPath?r.docsPath:iwe.platform()==="darwin"?"../../doc-html/runtime-api.json":"../../../doc-html/runtime-api.json"),i=await owe.readFile(n.fsPath,"utf8"),{ApiDocGenerator:o}=await Promise.resolve().then(()=>(Sw(),IO)),s=new Kd(JN,r,new o(i,await Yg("doc",{},!0))),{FactorioModDebugSession:a}=await Promise.resolve().then(()=>(RO(),wV)),u=new a(s,JN,{async findWorkspaceFiles(c){let f=[];for(let h of e.workspace??[process.cwd()]){let p=(0,swe.default)(h,{pattern:c});p.on("match",g=>{f.push(nr.file(g.absolute))}),p.on("error",g=>{throw g}),await new Promise(g=>{p.on("end",()=>{g()})})}return f}});process.on("SIGTERM",()=>{u.shutdown()}),u.start(process.stdin,process.stdout)})});var uwe,cwe=U(()=>{"use strict";uwe=pe(require("fs/promises"));xo();Rl();G8();kr.command("scriptdat <file>").description("Dump script.dat").action(async t=>{let e=new Mm(new qn(await uwe.readFile(t)));console.log(JSON.stringify({version:e.version.format(),data:e.data},void 0,2))})});var Gxt={};var lwe=U(()=>{"use strict";xo();Jp();pde();mde();n1e();i1e();s1e();u1e();f1e();d1e();b1e();z1e();nwe();awe();cwe();if(process.env.FMTK_TEST_ARGV)try{let t=JSON.parse(process.env.FMTK_TEST_ARGV);process.argv.push(...t),delete process.env.FMTK_TEST_ARGV}catch(t){console.log(`Error using extra args from FMTK_TEST_ARGV: ${t}`),process.exit(1)}kr.description(`${fV} ${ha}`).addHelpCommand().showHelpAfterError().showSuggestionAfterError().parseAsync(process.argv,{from:"node"}).catch(t=>{console.error(t),process.exit(1)}).then(()=>{process.send&&process.disconnect()})});var Yxt={};rr(Yxt,{BufferSplitter:()=>oc,EncodingUtil:()=>aF,activate:()=>Kxt});module.exports=Av(Yxt);uF();F1();async function Kxt(t){(await Promise.resolve().then(()=>(pQ(),hQ))).activate(t)}require.main===module&&Promise.resolve().then(()=>(lwe(),Gxt));0&&(module.exports={BufferSplitter,EncodingUtil,activate});
|
|
2277
|
+
`,e,r+t.index)}}];V1e=[{pattern:new RegExp("__([0-9]+)__","dy"),parse(t,e,r){return{type:"parameter",value:parseInt(t[1]),range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__plural_for_parameter_([0-9]+)_\\{(.*?)\\}__","dy"),parse(t,e,r){return{type:"plural",value:parseInt(t[1]),children:jxt(hp(t[2],e,r+t.indices[2][0])),range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(CONTROL_(?:MOVE|(?:LEFT|RIGHT)_CLICK|KEY_(?:SHIFT|CTRL)|STYLE_(?:BEGIN|END)))__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(REMARK_COLOR_(?:BEGIN|END))__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(CONTROL(?:_MODIFIER)?|ENTITY|ITEM|TILE|FLUID)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[2][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(ALT_CONTROL)__(.+?)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[2][0]),rl("macro_argument",t[3],e,r+t.indices[3][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}},{pattern:new RegExp("__(ALT_CONTROL_(?:LEFT|RIGHT)_CLICK)__(.+?)__","dy"),parse(t,e,r){return{type:"macro",name:t[1],children:[rl("macro_argument",t[2],e,r+t.indices[1][0])],range:ni(e,r+t.index,t[0].length),selectionRange:ni(e,r+t.indices[1][0],t[1].length)}}}];Nxt=[{pattern:new RegExp("^[\\r\\t ]*([#;].*)?$","d"),parse(t,e,r){t[1]?r.open_comments.push(rl("comment",t[1],e,t.indices[1][0])):r.open_comments.length>0&&(r.open_section??r.root).children.push(v$(r))}},{pattern:new RegExp("^[\\r\\t ]*\\[(.*?)\\][\\r\\t ]*$","d"),parse(t,e,r){r.open_section=rl("section",t[1],e,t.indices[1][0],{children:[]}),r.open_comments.length>0&&r.open_section.children.push(v$(r)),r.open_section.range.start.character-=1,r.open_section.range.end.character+=1,r.root.children.push(r.open_section)}},{pattern:new RegExp("^[\\r\\t ]*(.*?)=(.*)$","d"),parse(t,e,r){let n=rl("record",t[1],e,t.indices[1][0],{children:[...jT(hp(t[2],e,t.indices[2][0]),"__",V1e)]});r.open_comments.length>0&&n.children.unshift(v$(r)),n.range.end.character=t[0].length,(r.open_section??r.root).children.push(n)}},{pattern:new RegExp("^.*$","d"),parse(t,e,r){r.root.children.push({type:"error",value:t[0],range:ni(e,0,t[0].length),selectionRange:ni(e,0,0)})}}]});function $xt(t){if(b$.has(t))return b$.get(t);if(t.startsWith("#")){let r=t.match(/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?/);if(r)return{red:parseInt(r[1],16)/255,green:parseInt(r[2],16)/255,blue:parseInt(r[3],16)/255,alpha:r[4]?parseInt(r[4],16)/255:1}}let e=t.match(/\s*(\d+(?:\.\d+)?)\s*,?\s*(\d+(?:\.\d+)?)\s*,?\s*(\d+(?:\.\d+)?)(?:\s*,?\s*(\d+(?:\.\d+)?))?\s*/);if(e){let r=parseFloat(e[1]),n=parseFloat(e[2]),i=parseFloat(e[3]),o=e[4]?parseFloat(e[4]):void 0;return(r>1||n>1||i>1||o&&o>1)&&(r=r/255,n=n/255,i=i/255,o&&(o=o/255)),o||(o=1),{red:r,green:n,blue:i,alpha:o}}}function pp(t){let e=Math.floor(t).toString(16);return e.length<2&&(e="0"+e),e}function mp(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}function Uxt(t){let e=[];for(let[r,n]of b$)if(Math.abs(n.red-t.red)<.004&&Math.abs(n.green-t.green)<.004&&Math.abs(n.blue-t.blue)<.004&&Math.abs(n.alpha-t.alpha)<.004){e.push(r);break}return t.alpha>.996?(e.push(`#${pp(t.red*255)}${pp(t.green*255)}${pp(t.blue*255)}`),e.push(`${Math.floor(t.red*255)}, ${Math.floor(t.green*255)}, ${Math.floor(t.blue*255)}`),e.push(`${mp(t.red,3)}, ${mp(t.green,3)}, ${mp(t.blue,3)}`)):(e.push(`#${pp(t.red*255)}${pp(t.green*255)}${pp(t.blue*255)}${pp(t.alpha*255)}`),e.push(`${Math.floor(t.red*255)}, ${Math.floor(t.green*255)}, ${Math.floor(t.blue*255)}, ${Math.floor(t.alpha*255)}`),e.push(`${mp(t.red,3)}, ${mp(t.green,3)}, ${mp(t.blue,3)}, ${mp(t.alpha,3)}`)),e}function Wxt(t,e){let r=[];return wx(t,"record",(n,i)=>{let o=i.length>0?i[i.length-1]:void 0,s=o?.type==="section"?o.value:void 0;r.push({name:s?`${s}.${n.value}`:n.value,link:{targetUri:e,targetRange:n.range,targetSelectionRange:n.selectionRange}})}),r}function Y1e(t){return t!==void 0}function Q1e(t){return{name:t.value,detail:"",kind:ys.SymbolKind.String,range:t.range,selectionRange:t.selectionRange,children:[]}}function zxt(t){return{name:t.value,detail:"",kind:ys.SymbolKind.Namespace,range:t.range,selectionRange:t.selectionRange,children:t.children.map(e=>{switch(e.type){case"record":return Q1e(e);default:return}}).filter(Y1e)}}function Hxt(t){return t.children.map(e=>{switch(e.type){case"section":return zxt(e);case"record":return Q1e(e);default:return}}).filter(Y1e)}var ys,b$,NT,Z1e=U(()=>{"use strict";ys=pe(Hx());lk();K1e();b$=new Map([["default",{red:1,green:.63,blue:.259,alpha:1}],["red",{red:1,green:.166,blue:.141,alpha:1}],["green",{red:.173,green:.824,blue:.25,alpha:1}],["blue",{red:.343,green:.683,blue:1,alpha:1}],["orange",{red:1,green:.63,blue:.259,alpha:1}],["yellow",{red:1,green:.828,blue:.231,alpha:1}],["pink",{red:1,green:.52,blue:.633,alpha:1}],["purple",{red:.821,green:.44,blue:.998,alpha:1}],["white",{red:.9,green:.9,blue:.9,alpha:1}],["black",{red:.5,green:.5,blue:.5,alpha:1}],["gray",{red:.7,green:.7,blue:.7,alpha:1}],["brown",{red:.757,green:.522,blue:.371,alpha:1}],["cyan",{red:.335,green:.918,blue:.866,alpha:1}],["acid",{red:.708,green:.996,blue:.134,alpha:1}]]);NT=class{constructor(){this.hasDiagnosticRelatedInformationCapability=!1;this.definitions=new Map;this.documentTrees=new Map}async validateTextDocument(e){let r=e.getText().split(/\r?\n/),n=[],i=this.onDocumentSymbol(e),o,s=new Map;s.set(void 0,new Set);for(let a=0;a<r.length;a++){let u=r[a];if(!u.match(/^[ \r\t]*[#;]/)){if(u.match(/^[ \r\t]*\[/)){let c=u.match(/^[ \r\t]*\[([^\[]+)\][ \r\t]*$/);if(c)if(o=c[1],s.has(o)){let f=i.filter(g=>g.name===o),h=f.reduce((g,b)=>g.range.start.line<b.range.start.line?g:b),p=f.find(g=>g.range.start.line===a);n.push({message:"Duplicate Section",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:u.indexOf(o)},end:{line:a,character:u.indexOf(o)+o.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0,code:"section.merge",data:{firstsym:h,newsym:p}})}else if(s.get(void 0).has(o)){let h=i.filter(p=>p.name===o).reduce((p,g)=>p.range.start.line<g.range.start.line?p:g);n.push({message:"Section Name conflicts with Key in Root",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:u.indexOf(o)},end:{line:a,character:u.indexOf(o)+o.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0,code:"section.rootconflict"}),s.set(o,new Set)}else s.set(o,new Set);else n.push({message:"Invalid Section Header",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,range:{start:{line:a,character:0},end:{line:a,character:u.length}},code:"section.invalid"})}else if(u.trim().length>0){let c=u.match(/^[ \r\t]*([^=]*)=(.*)$/);if(c){let f=c[1];if(s.get(o).has(f)){let h=i.filter(p=>p.name===o&&p.kind===ys.SymbolKind.Namespace).map(p=>p.children?.filter(g=>g.name===f)??[]).reduce((p,g)=>p.concat(g),i.filter(p=>p.name===f&&p.kind===ys.SymbolKind.String)).reduce((p,g)=>p.range.start.line<g.range.start.line?p:g);n.push({message:"Duplicate Key",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,code:"key.duplicate",range:{start:{line:a,character:u.indexOf(f)},end:{line:a,character:u.indexOf(f)+f.length}},relatedInformation:this.hasDiagnosticRelatedInformationCapability?[{location:{uri:e.uri,range:h.range},message:"First defined here"}]:void 0})}else s.get(o).add(f)}else n.push({message:"Invalid Key",source:"factorio-locale",severity:ys.DiagnosticSeverity.Error,code:"key.invalid",range:{start:{line:a,character:0},end:{line:a,character:u.length}}})}}}return n}loadDocument(e){let r=G1e(e);this.documentTrees.set(e.uri,r),this.definitions.set(e.uri,Wxt(r,e.uri))}clearDocument(e){this.definitions.has(e)&&this.definitions.delete(e),this.documentTrees.has(e)&&this.documentTrees.delete(e)}clearFolder(e){for(let r of this.definitions.keys())r.startsWith(e)&&this.definitions.delete(r);for(let r of this.documentTrees.keys())r.startsWith(e)&&this.documentTrees.delete(r)}onDocumentSymbol(e){this.documentTrees.has(e.uri)||this.loadDocument(e);let r=this.documentTrees.get(e.uri);return r?Hxt(r):[]}findDefinitions(e){let r=[];for(let n of this.definitions.values())r.push(...n.filter(i=>i.name===e).map(i=>i.link));return r}getCompletions(e){let r=[];for(let n of this.definitions.values())e?r.push(n.map(i=>i.name).filter(i=>i.startsWith(e))):r.push(n.map(i=>i.name).map(i=>{let o=i.indexOf(".");return o===-1?i:i.substring(0,o+1)}));return[...new Set(r.flat())]}onCodeAction(e,r,n){return e.languageId==="factorio-locale"?n.diagnostics.filter(i=>!!i.code).map(i=>{switch(i.code){case"section.merge":{let o=i,s=o.data.firstsym.range.end;return{title:"Merge Sections",kind:ys.CodeActionKind.QuickFix+".section.merge",diagnostics:[i],edit:{changes:{[e.uri]:[{range:o.data.newsym.range,newText:""},{range:{start:s,end:s},newText:e.getText({start:{line:o.data.newsym.selectionRange.end.line,character:o.data.newsym.selectionRange.end.character+1},end:o.data.newsym.range.end})}]}}}}default:return}}).filter(i=>!!i):[]}onDocumentColor(e){let r=[];for(let n=0;n<e.lineCount;n++){let i={start:{line:n,character:0},end:{line:n,character:1/0}},o=e.getText(i).replace(/(\r\n)|\r|\n$/,"");i.end.character=o.length;let s=/\[color=([^\]]+)\]/g,a=s.exec(o);for(;a;){{let u=$xt(a[1]);u&&r.push({color:u,range:{start:{line:n,character:a.index+7},end:{line:n,character:a.index+7+a[1].length}}})}a=s.exec(o)}}return r}onColorPresentation(e,r){return Uxt(e).map(n=>({label:n,textEdit:{range:r,newText:n}}))}}});var y$,$T,J1e=U(()=>{"use strict";y$=pe(Hx()),$T=class{constructor(e){this.Locale=e}onDefinition(e,r){let n=r.getText({start:{line:e.position.line,character:0},end:{line:e.position.line,character:Number.MAX_VALUE}});for(let i of n.matchAll(/(['"])((?:[^\\](?<!\1)|\\['"0abfnrtv\\]|\\\d{1,3}|\\x[0-9a-fA-F]{2})*)\1/g))if(i.index&&i.index<=e.position.character&&i.index+i[0].length>=e.position.character){let o=i[2],s={start:{line:e.position.line,character:i.index},end:{line:e.position.line,character:i.index+i[0].length}};return this.Locale.findDefinitions(o).map(u=>Object.assign({originSelectionRange:s},u))}}onCompletion(e,r){let i=r.getText({start:{line:e.position.line,character:0},end:{line:e.position.line,character:e.position.character+1}}).match(/(['"])((?:[^\\](?<!\1)|\\['"0abfnrtv\\]|\\\d{1,3}|\\x[0-9a-fA-F]{2})*)\1$/);if(i){let o=i[2].lastIndexOf("."),s=o!==-1?i[2].substring(0,o+1):"";return this.Locale.getCompletions(s).map(a=>({label:a.endsWith(".")?a.substring(0,a.length-1):a,kind:a.endsWith(".")?y$.CompletionItemKind.Enum:y$.CompletionItemKind.EnumMember,commitCharacters:a.endsWith(".")?["."]:[],textEdit:{newText:a.endsWith(".")?a.substring(0,a.length-1):a,range:{start:{line:e.position.line,character:i.index+1},end:{line:e.position.line,character:e.position.character}}}}))}return[]}}});var twe={};rr(twe,{runLanguageServer:()=>Vxt});async function Vxt(){let t=new Vx,e=new NT,r=new $T(e),n=(0,na.createConnection)(na.ProposedFeatures.all),i=new na.TextDocuments(yg);async function o(c){let f=i.get(c);if(f)return f;let h=nr.parse(c);if(h.scheme==="file"&&h.path.endsWith(".cfg"))return f=yg.create(c,"factorio-locale",1,await X1e.readFile(h.fsPath,"utf8")),f}async function s(c){let f=await o(c);f&&f.languageId==="factorio-locale"&&e.loadDocument(f)}async function a(c){let f=nr.parse(c);if(f.scheme==="file"){let h=(0,ewe.default)(f.fsPath,{pattern:"**/locale/*/*.cfg"});h.on("match",p=>{s(nr.file(p.absolute).toString())}),h.on("error",p=>{throw p}),await new Promise(p=>{h.on("end",()=>{p()})})}}let u=!1;return n.onInitialize(async c=>{let f=c.capabilities;u=!!(f.workspace&&f.workspace.workspaceFolders),e.hasDiagnosticRelatedInformationCapability=!!(f.textDocument&&f.textDocument.publishDiagnostics&&f.textDocument.publishDiagnostics.relatedInformation);let h={capabilities:{textDocumentSync:na.TextDocumentSyncKind.Incremental,documentSymbolProvider:!0,codeActionProvider:!0,colorProvider:!0,definitionProvider:!0,completionProvider:{triggerCharacters:['"',"'","."],allCommitCharacters:["."]}}};return u&&(h.capabilities.workspace={workspaceFolders:{supported:!0,changeNotifications:!0}},c.workspaceFolders&&await Promise.all(c.workspaceFolders.map(p=>a(p.uri)))),h}),n.onInitialized(()=>{u&&n.workspace.onDidChangeWorkspaceFolders(async c=>{for(let f of c.removed)e.clearFolder(f.uri);for(let f of c.added)await a(f.uri)})}),i.onDidClose(c=>{switch(c.document.languageId){case"factorio-locale":n.sendDiagnostics({uri:c.document.uri,diagnostics:[]});break;case"factorio-changelog":n.sendDiagnostics({uri:c.document.uri,diagnostics:[]});break}}),i.onDidChangeContent(async c=>{switch(c.document.languageId){case"factorio-locale":e.loadDocument(c.document),n.sendDiagnostics({uri:c.document.uri,diagnostics:await e.validateTextDocument(c.document)});break;case"factorio-changelog":n.sendDiagnostics({uri:c.document.uri,diagnostics:await t.validateTextDocument(c.document)});break}}),n.onDefinition(async c=>{let f=await o(c.textDocument.uri);return f&&f.languageId==="lua"?r.onDefinition(c,f):null}),n.onCompletion(async c=>{let f=await o(c.textDocument.uri);if(f&&f.languageId==="lua")return{isIncomplete:!0,items:r.onCompletion(c,f)}}),n.onDidChangeWatchedFiles(async c=>{for(let f of c.changes)switch(f.type){case na.FileChangeType.Deleted:e.clearDocument(f.uri);break;case na.FileChangeType.Changed:case na.FileChangeType.Created:let h=await o(f.uri);h&&h.languageId==="factorio-locale"&&e.loadDocument(h);break;default:break}}),n.onDocumentSymbol(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onDocumentSymbol(f);case"factorio-changelog":return t.onDocumentSymbol(f)}return null}),n.onCodeAction(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onCodeAction(f,c.range,c.context);case"factorio-changelog":return t.onCodeAction(f,c.range,c.context)}return null}),n.onDocumentColor(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onDocumentColor(f)}return null}),n.onColorPresentation(c=>{let f=i.get(c.textDocument.uri);if(f)switch(f.languageId){case"factorio-locale":return e.onColorPresentation(c.color,c.range)}return null}),i.listen(n),n.listen(),new Promise(c=>{n.onExit(c)})}var X1e,na,ewe,rwe=U(()=>{"use strict";X1e=pe(require("fs/promises")),na=pe(Hx());KB();bj();Z1e();uc();ewe=pe(qx());J1e()});var nwe=U(()=>{"use strict";xo();kr.command("lsp").description("Run LSP Server for Locale and Changelog features").allowUnknownOption(!0).allowExcessArguments(!0).action(async()=>{let{runLanguageServer:t}=await Promise.resolve().then(()=>(rwe(),twe));await t()})});var iwe,owe,swe,awe=U(()=>{"use strict";iwe=pe(require("os")),owe=pe(require("fs/promises"));xo();swe=pe(qx());uc();BO();MT();kr.command("debug <factorioPath>").description("Launch a DAP debug session").option("-d, --docs <docsPath>","path to runtime-api.json").option("-c, --config <configPath>","path to config.ini").option("-w, --workspace <workspacePath...>","path to workspace folders").option("-n, --nativeDebugger <nativeDebugger>").action(async(t,e)=>{let r={name:"standalone",factorioPath:t,configPath:e.config,docsPath:e.docs,nativeDebugger:e.nativeDebugger},n=sr.joinPath(nr.file(t),r.docsPath?r.docsPath:iwe.platform()==="darwin"?"../../doc-html/runtime-api.json":"../../../doc-html/runtime-api.json"),i=await owe.readFile(n.fsPath,"utf8"),{ApiDocGenerator:o}=await Promise.resolve().then(()=>(Sw(),IO)),s=new Kd(JN,r,new o(i,await Yg("doc",{},!0))),{FactorioModDebugSession:a}=await Promise.resolve().then(()=>(RO(),wV)),u=new a(s,JN,{async findWorkspaceFiles(c){let f=[];for(let h of e.workspace??[process.cwd()]){let p=(0,swe.default)(h,{pattern:c});p.on("match",g=>{f.push(nr.file(g.absolute))}),p.on("error",g=>{throw g}),await new Promise(g=>{p.on("end",()=>{g()})})}return f}});process.on("SIGTERM",()=>{u.shutdown()}),u.start(process.stdin,process.stdout)})});var uwe,cwe=U(()=>{"use strict";uwe=pe(require("fs/promises"));xo();Rl();G8();kr.command("scriptdat <file>").description("Dump script.dat").action(async t=>{let e=new Mm(new qn(await uwe.readFile(t)));console.log(JSON.stringify({version:e.version.format(),data:e.data},void 0,2))})});var Gxt={};var lwe=U(()=>{"use strict";xo();Jp();pde();mde();n1e();i1e();s1e();u1e();f1e();d1e();b1e();z1e();nwe();awe();cwe();if(process.env.FMTK_TEST_ARGV)try{let t=JSON.parse(process.env.FMTK_TEST_ARGV);process.argv.push(...t),delete process.env.FMTK_TEST_ARGV}catch(t){console.log(`Error using extra args from FMTK_TEST_ARGV: ${t}`),process.exit(1)}kr.description(`${fV} ${ha}`).addHelpCommand().showHelpAfterError().showSuggestionAfterError().parseAsync(process.argv,{from:"node"}).catch(t=>{console.error(t),process.exit(1)}).then(()=>{process.send&&process.disconnect()})});var Yxt={};rr(Yxt,{BufferSplitter:()=>oc,EncodingUtil:()=>aF,activate:()=>Kxt});module.exports=Av(Yxt);uF();F1();async function Kxt(t){(await Promise.resolve().then(()=>(pQ(),hQ))).activate(t)}(require.main===module||require.main===void 0)&&Promise.resolve().then(()=>(lwe(),Gxt));0&&(module.exports={BufferSplitter,EncodingUtil,activate});
|
|
2278
2278
|
/*! Bundled license information:
|
|
2279
2279
|
|
|
2280
2280
|
fetch-blob/index.js:
|