factoriomod-debug 1.1.40 → 1.1.41
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 +6 -0
- package/dist/fmtk.js +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
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.41
|
|
6
|
+
* Sumneko library package:
|
|
7
|
+
* correctly resolve `data-lifecycle` link in docs
|
|
8
|
+
* Omit `MapGenPresets` from `AnyPrototype`, to reduce incorrect type deduction on data:extend's argument
|
|
9
|
+
* Don't use `AnyPrototype` on versions that don't have it defined yet
|
|
10
|
+
|
|
5
11
|
## 1.1.40
|
|
6
12
|
* Sumneko library package:
|
|
7
13
|
* Generate even if some doc links are broken
|
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"),Cl=(t,e,r)=>{if(e.length<r)throw new TypeError(`Failed to execute '${t}' on 'FormData': ${r} arguments required, but only ${e.length} present.`)},ji=class{#e=[];constructor(...e){if(e.length)throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.")}get[cg](){return"FormData"}[VDe](){return this.entries()}static[GDe](e){return e&&typeof e=="object"&&e[cg]==="FormData"&&!KDe.some(r=>typeof e[r]!="function")}append(...e){Cl("append",arguments,2),this.#e.push(A$(...e))}delete(e){Cl("delete",arguments,1),e+="",this.#e=this.#e.filter(([r])=>r!==e)}get(e){Cl("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 Cl("getAll",arguments,1),r=[],e+="",this.#e.forEach(n=>n[0]===e&&r.push(n[1])),r}has(e){return Cl("has",arguments,1),e+="",this.#e.some(r=>r[0]===e)}forEach(e,r){Cl("forEach",arguments,1);for(var[n,i]of this)e.call(r,i,n,this)}set(...e){Cl("set",arguments,2);var r=[],n=!0;e=A$(...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 Sa,ox=I(()=>{Sa=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 wi,LP=I(()=>{ox();wi=class extends Sa{constructor(e,r,n){super(e,r),n&&(this.code=this.errno=n.code,this.erroredSysCall=n.syscall)}}});var sx,MP,lg,I$,L$,M$,ax=I(()=>{sx=Symbol.toStringTag,MP=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[sx]==="URLSearchParams",lg=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[sx]),I$=t=>typeof t=="object"&&(t[sx]==="AbortSignal"||t[sx]==="EventTarget"),L$=(t,e)=>{let r=new URL(e).hostname,n=new URL(t).hostname;return r===n||r.endsWith(`.${n}`)},M$=(t,e)=>{let r=new URL(e).protocol,n=new URL(t).protocol;return r===n}});var B$=g((fyt,j$)=>{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)}j$.exports=globalThis.DOMException});var fg,N$,YDe,ux,jP=I(()=>{fg=require("node:fs"),N$=re(B$(),1);qP();ug();({stat:YDe}=fg.promises),ux=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 ux({path:this.#e,lastModified:this.lastModified,size:r-e,start:this.#t+e})}async*stream(){let{mtimeMs:e}=await YDe(this.#e);if(e>this.lastModified)throw new N$.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,fg.createReadStream)(this.#e,{start:this.#t,end:this.#t+this.size-1})}get[Symbol.toStringTag](){return"Blob"}}});var U$={};pt(U$,{toFormData:()=>rEe});function tEe(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 rEe(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 BP(r[1]||r[2]),i,o,s,a,u,c,l=[],f=new ji,d=x=>{s+=D.decode(x,{stream:!0})},h=x=>{l.push(x)},m=()=>{let x=new kd(l,c,{type:u});f.append(a,x)},v=()=>{f.append(a,s)},D=new TextDecoder("utf-8");D.decode(),n.onPartBegin=function(){n.onPartData=d,n.onPartEnd=v,i="",o="",s="",a="",u="",c=null,l.length=0},n.onHeaderField=function(x){i+=D.decode(x,{stream:!0})},n.onHeaderValue=function(x){o+=D.decode(x,{stream:!0})},n.onHeaderEnd=function(){if(o+=D.decode(),i=i.toLowerCase(),i==="content-disposition"){let x=o.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);x&&(a=x[2]||x[3]||""),c=tEe(o),c&&(n.onPartData=h,n.onPartEnd=m)}else i==="content-type"&&(u=o);o="",i=""};for await(let x of t)n.write(x);return n.end(),f}var Rs,rr,$$,Ou,cx,lx,QDe,dg,ZDe,JDe,XDe,eEe,kl,BP,W$=I(()=>{jP();ix();Rs=0,rr={START_BOUNDARY:Rs++,HEADER_FIELD_START:Rs++,HEADER_FIELD:Rs++,HEADER_VALUE_START:Rs++,HEADER_VALUE:Rs++,HEADER_VALUE_ALMOST_DONE:Rs++,HEADERS_ALMOST_DONE:Rs++,PART_DATA_START:Rs++,PART_DATA:Rs++,END:Rs++},$$=1,Ou={PART_BOUNDARY:$$,LAST_BOUNDARY:$$*=2},cx=10,lx=13,QDe=32,dg=45,ZDe=58,JDe=97,XDe=122,eEe=t=>t|32,kl=()=>{},BP=class{constructor(e){this.index=0,this.flags=0,this.onHeaderEnd=kl,this.onHeaderField=kl,this.onHeadersEnd=kl,this.onHeaderValue=kl,this.onPartBegin=kl,this.onPartData=kl,this.onPartEnd=kl,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=rr.START_BOUNDARY}write(e){let r=0,n=e.length,i=this.index,{lookbehind:o,boundary:s,boundaryChars:a,index:u,state:c,flags:l}=this,f=this.boundary.length,d=f-1,h=e.length,m,v,D=k=>{this[k+"Mark"]=r},x=k=>{delete this[k+"Mark"]},y=(k,A,R,F)=>{(A===void 0||A!==R)&&this[k](F&&F.subarray(A,R))},E=(k,A)=>{let R=k+"Mark";R in this&&(A?(y(k,this[R],r,e),delete this[R]):(y(k,this[R],e.length,e),this[R]=0))};for(r=0;r<n;r++)switch(m=e[r],c){case rr.START_BOUNDARY:if(u===s.length-2){if(m===dg)l|=Ou.LAST_BOUNDARY;else if(m!==lx)return;u++;break}else if(u-1===s.length-2){if(l&Ou.LAST_BOUNDARY&&m===dg)c=rr.END,l=0;else if(!(l&Ou.LAST_BOUNDARY)&&m===cx)u=0,y("onPartBegin"),c=rr.HEADER_FIELD_START;else return;break}m!==s[u+2]&&(u=-2),m===s[u+2]&&u++;break;case rr.HEADER_FIELD_START:c=rr.HEADER_FIELD,D("onHeaderField"),u=0;case rr.HEADER_FIELD:if(m===lx){x("onHeaderField"),c=rr.HEADERS_ALMOST_DONE;break}if(u++,m===dg)break;if(m===ZDe){if(u===1)return;E("onHeaderField",!0),c=rr.HEADER_VALUE_START;break}if(v=eEe(m),v<JDe||v>XDe)return;break;case rr.HEADER_VALUE_START:if(m===QDe)break;D("onHeaderValue"),c=rr.HEADER_VALUE;case rr.HEADER_VALUE:m===lx&&(E("onHeaderValue",!0),y("onHeaderEnd"),c=rr.HEADER_VALUE_ALMOST_DONE);break;case rr.HEADER_VALUE_ALMOST_DONE:if(m!==cx)return;c=rr.HEADER_FIELD_START;break;case rr.HEADERS_ALMOST_DONE:if(m!==cx)return;y("onHeadersEnd"),c=rr.PART_DATA_START;break;case rr.PART_DATA_START:c=rr.PART_DATA,D("onPartData");case rr.PART_DATA:if(i=u,u===0){for(r+=d;r<h&&!(e[r]in a);)r+=f;r-=d,m=e[r]}if(u<s.length)s[u]===m?(u===0&&E("onPartData",!0),u++):u=0;else if(u===s.length)u++,m===lx?l|=Ou.PART_BOUNDARY:m===dg?l|=Ou.LAST_BOUNDARY:u=0;else if(u-1===s.length)if(l&Ou.PART_BOUNDARY){if(u=0,m===cx){l&=~Ou.PART_BOUNDARY,y("onPartEnd"),y("onPartBegin"),c=rr.HEADER_FIELD_START;break}}else l&Ou.LAST_BOUNDARY&&m===dg?(y("onPartEnd"),c=rr.END,l=0):u=0;if(u>0)o[u-1]=m;else if(i>0){let k=new Uint8Array(o.buffer,o.byteOffset,o.byteLength);y("onPartData",0,i,k),i=0,D("onPartData"),r--}break;case rr.END:break;default:throw new Error(`Unexpected state entered: ${c}`)}E("onHeaderField"),E("onHeaderValue"),E("onPartData"),this.index=u,this.state=c,this.flags=l}end(){if(this.state===rr.HEADER_FIELD_START&&this.index===0||this.state===rr.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==rr.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}});async function NP(t){if(t[Di].disturbed)throw new TypeError(`body used already for: ${t.url}`);if(t[Di].disturbed=!0,t[Di].error)throw t[Di].error;let{body:e}=t;if(e===null)return Bi.Buffer.alloc(0);if(!(e instanceof go.default))return Bi.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 wi(`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 Sa?i:new wi(`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")?Bi.Buffer.from(r.join("")):Bi.Buffer.concat(r,n)}catch(i){throw new wi(`Could not create Buffer from response body for ${t.url}: ${i.message}`,"system",i)}else throw new wi(`Premature close of server response while trying to fetch ${t.url}`)}var go,Ca,Bi,nEe,Di,Ts,Pd,iEe,fx,z$,H$,dx=I(()=>{go=re(require("node:stream"),1),Ca=require("node:util"),Bi=require("node:buffer");ug();ix();LP();ox();ax();nEe=(0,Ca.promisify)(go.default.pipeline),Di=Symbol("Body internals"),Ts=class{constructor(e,{size:r=0}={}){let n=null;e===null?e=null:MP(e)?e=Bi.Buffer.from(e.toString()):lg(e)||Bi.Buffer.isBuffer(e)||(Ca.types.isAnyArrayBuffer(e)?e=Bi.Buffer.from(e):ArrayBuffer.isView(e)?e=Bi.Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof go.default||(e instanceof ji?(e=q$(e),n=e.type.split("=")[1]):e=Bi.Buffer.from(String(e))));let i=e;Bi.Buffer.isBuffer(e)?i=go.default.Readable.from(e):lg(e)&&(i=go.default.Readable.from(e.stream())),this[Di]={body:e,stream:i,boundary:n,disturbed:!1,error:null},this.size=r,e instanceof go.default&&e.on("error",o=>{let s=o instanceof Sa?o:new wi(`Invalid response body while trying to fetch ${this.url}: ${o.message}`,"system",o);this[Di].error=s})}get body(){return this[Di].stream}get bodyUsed(){return this[Di].disturbed}async arrayBuffer(){let{buffer:e,byteOffset:r,byteLength:n}=await NP(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 ji,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(()=>(W$(),U$));return r(this.body,e)}async blob(){let e=this.headers&&this.headers.get("content-type")||this[Di].body&&this[Di].body.type||"",r=await this.arrayBuffer();return new mo([r],{type:e})}async json(){let e=await this.text();return JSON.parse(e)}async text(){let e=await NP(this);return new TextDecoder().decode(e)}buffer(){return NP(this)}};Ts.prototype.buffer=(0,Ca.deprecate)(Ts.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Ts.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:(0,Ca.deprecate)(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});Pd=(t,e)=>{let r,n,{body:i}=t[Di];if(t.bodyUsed)throw new Error("cannot clone body after it is used");return i instanceof go.default&&typeof i.getBoundary!="function"&&(r=new go.PassThrough({highWaterMark:e}),n=new go.PassThrough({highWaterMark:e}),i.pipe(r),i.pipe(n),t[Di].stream=r,i=n),i},iEe=(0,Ca.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"),fx=(t,e)=>t===null?null:typeof t=="string"?"text/plain;charset=UTF-8":MP(t)?"application/x-www-form-urlencoded;charset=UTF-8":lg(t)?t.type||null:Bi.Buffer.isBuffer(t)||Ca.types.isAnyArrayBuffer(t)||ArrayBuffer.isView(t)?null:t instanceof ji?`multipart/form-data; boundary=${e[Di].boundary}`:t&&typeof t.getBoundary=="function"?`multipart/form-data;boundary=${iEe(t)}`:t instanceof go.default?null:"text/plain;charset=UTF-8",z$=t=>{let{body:e}=t[Di];return e===null?0:lg(e)?e.size:Bi.Buffer.isBuffer(e)?e.length:e&&typeof e.getLengthSync=="function"&&e.hasKnownLength&&e.hasKnownLength()?e.getLengthSync():null},H$=async(t,{body:e})=>{e===null?t.end():await nEe(e,t)}});function V$(t=[]){return new wn(t.reduce((e,r,n,i)=>(n%2===0&&e.push(i.slice(n,n+2)),e),[]).filter(([e,r])=>{try{return px(e),UP(e,String(r)),!0}catch{return!1}}))}var $P,pg,px,UP,wn,hx=I(()=>{$P=require("node:util"),pg=re(require("node:http"),1),px=typeof pg.default.validateHeaderName=="function"?pg.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}},UP=typeof pg.default.validateHeaderValue=="function"?pg.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}},wn=class extends URLSearchParams{constructor(e){let r=[];if(e instanceof wn){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"&&!$P.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"||$P.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])=>(px(n),UP(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)=>(px(s),UP(s,String(a)),URLSearchParams.prototype[i].call(n,String(s).toLowerCase(),String(a)));case"delete":case"has":case"getAll":return s=>(px(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(wn.prototype,["get","entries","forEach","values"].reduce((t,e)=>(t[e]={enumerable:!0},t),{}))});var oEe,mx,WP=I(()=>{oEe=new Set([301,302,303,307,308]),mx=t=>oEe.has(t)});var Xo,Dn,G$=I(()=>{hx();dx();WP();Xo=Symbol("Response internals"),Dn=class extends Ts{constructor(e=null,r={}){super(e,r);let n=r.status!=null?r.status:200,i=new wn(r.headers);if(e!==null&&!i.has("Content-Type")){let o=fx(e,this);o&&i.append("Content-Type",o)}this[Xo]={type:"default",url:r.url,status:n,statusText:r.statusText||"",headers:i,counter:r.counter,highWaterMark:r.highWaterMark}}get type(){return this[Xo].type}get url(){return this[Xo].url||""}get status(){return this[Xo].status}get ok(){return this[Xo].status>=200&&this[Xo].status<300}get redirected(){return this[Xo].counter>0}get statusText(){return this[Xo].statusText}get headers(){return this[Xo].headers}get highWaterMark(){return this[Xo].highWaterMark}clone(){return new Dn(Pd(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(!mx(r))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new Dn(null,{headers:{location:new URL(e).toString()},status:r})}static error(){let e=new Dn(null,{status:0,statusText:""});return e[Xo].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 wn(r&&r.headers);return i.has("content-type")||i.set("content-type","application/json"),new Dn(n,{...r,headers:i})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(Dn.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 K$,Y$=I(()=>{K$=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 Q$(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 eU(t){if(!J$.has(t))throw new TypeError(`Invalid referrerPolicy: ${t}`);return t}function sEe(t){if(/^(http|ws)s:$/.test(t.protocol))return!0;let e=t.host.replace(/(^\[)|(]$)/g,""),r=(0,Z$.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 Rd(t){return/^about:(blank|srcdoc)$/.test(t)||t.protocol==="data:"||/^(blob|filesystem):$/.test(t.protocol)?!0:sEe(t)}function tU(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=Q$(i),s=Q$(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 Rd(o)&&!Rd(a)?"no-referrer":s.toString();case"strict-origin-when-cross-origin":return o.origin===a.origin?o:Rd(o)&&!Rd(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 Rd(o)&&!Rd(a)?"no-referrer":o;default:throw new TypeError(`Invalid referrerPolicy: ${n}`)}}function rU(t){let e=(t.get("referrer-policy")||"").split(/[,\s]+/),r="";for(let n of e)n&&J$.has(n)&&(r=n);return r}var Z$,J$,X$,zP=I(()=>{Z$=require("node:net");J$=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),X$="strict-origin-when-cross-origin"});var nU,iU,ln,hg,aEe,ka,oU,sU=I(()=>{nU=require("node:url"),iU=require("node:util");hx();dx();ax();Y$();zP();ln=Symbol("Request internals"),hg=t=>typeof t=="object"&&typeof t[ln]=="object",aEe=(0,iU.deprecate)(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),ka=class extends Ts{constructor(e,r={}){let n;if(hg(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()),!hg(r)&&"data"in r&&aEe(),(r.body!=null||hg(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:hg(e)&&e.body!==null?Pd(e):null;super(o,{size:r.size||e.size||0});let s=new wn(r.headers||e.headers||{});if(o!==null&&!s.has("Content-Type")){let c=fx(o,this);c&&s.set("Content-Type",c)}let a=hg(e)?e.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!I$(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[ln]={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[ln].method}get url(){return(0,nU.format)(this[ln].parsedURL)}get headers(){return this[ln].headers}get redirect(){return this[ln].redirect}get signal(){return this[ln].signal}get referrer(){if(this[ln].referrer==="no-referrer")return"";if(this[ln].referrer==="client")return"about:client";if(this[ln].referrer)return this[ln].referrer.toString()}get referrerPolicy(){return this[ln].referrerPolicy}set referrerPolicy(e){this[ln].referrerPolicy=eU(e)}clone(){return new ka(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(ka.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}});oU=t=>{let{parsedURL:e}=t[ln],r=new wn(t[ln].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=z$(t);typeof a=="number"&&!Number.isNaN(a)&&(n=String(a))}n&&r.set("Content-Length",n),t.referrerPolicy===""&&(t.referrerPolicy=X$),t.referrer&&t.referrer!=="no-referrer"?t[ln].referrer=tU(t):t[ln].referrer="no-referrer",t[ln].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));let o=K$(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 gx,aU=I(()=>{ox();gx=class extends Sa{constructor(e,r="aborted"){super(e,r)}}});async function Au(t,e){return new Promise((r,n)=>{let i=new ka(t,e),{parsedURL:o,options:s}=oU(i);if(!uEe.has(o.protocol))throw new TypeError(`node-fetch cannot load ${t}. URL scheme "${o.protocol.replace(/:$/,"")}" is not supported.`);if(o.protocol==="data:"){let m=S$(i.url),v=new Dn(m,{headers:{"Content-Type":m.typeFull}});r(v);return}let a=(o.protocol==="https:"?cU.default:uU.default).request,{signal:u}=i,c=null,l=()=>{let m=new gx("The operation was aborted.");n(m),i.body&&i.body instanceof Ni.default.Readable&&i.body.destroy(m),!(!c||!c.body)&&c.body.emit("error",m)};if(u&&u.aborted){l();return}let f=()=>{l(),h()},d=a(o.toString(),s);u&&u.addEventListener("abort",f);let h=()=>{d.abort(),u&&u.removeEventListener("abort",f)};d.on("error",m=>{n(new wi(`request to ${i.url} failed, reason: ${m.message}`,"system",m)),h()}),cEe(d,m=>{c&&c.body&&c.body.destroy(m)}),process.version<"v14"&&d.on("socket",m=>{let v;m.prependListener("end",()=>{v=m._eventsCount}),m.prependListener("close",D=>{if(c&&v<m._eventsCount&&!D){let x=new Error("Premature close");x.code="ERR_STREAM_PREMATURE_CLOSE",c.body.emit("error",x)}})}),d.on("response",m=>{d.setTimeout(0);let v=V$(m.rawHeaders);if(mx(m.statusCode)){let k=v.get("Location"),A=null;try{A=k===null?null:new URL(k,i.url)}catch{if(i.redirect!=="manual"){n(new wi(`uri requested responds with an invalid redirect URL: ${k}`,"invalid-redirect")),h();return}}switch(i.redirect){case"error":n(new wi(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),h();return;case"manual":break;case"follow":{if(A===null)break;if(i.counter>=i.follow){n(new wi(`maximum redirect reached at: ${i.url}`,"max-redirect")),h();return}let R={headers:new wn(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:Pd(i),signal:i.signal,size:i.size,referrer:i.referrer,referrerPolicy:i.referrerPolicy};if(!L$(i.url,A)||!M$(i.url,A))for(let z of["authorization","www-authenticate","cookie","cookie2"])R.headers.delete(z);if(m.statusCode!==303&&i.body&&e.body instanceof Ni.default.Readable){n(new wi("Cannot follow redirect with body being a readable stream","unsupported-redirect")),h();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&i.method==="POST")&&(R.method="GET",R.body=void 0,R.headers.delete("content-length"));let F=rU(v);F&&(R.referrerPolicy=F),r(Au(new ka(A,R))),h();return}default:return n(new TypeError(`Redirect option '${i.redirect}' is not a valid value of RequestRedirect`))}}u&&m.once("end",()=>{u.removeEventListener("abort",f)});let D=(0,Ni.pipeline)(m,new Ni.PassThrough,k=>{k&&n(k)});process.version<"v12.10"&&m.on("aborted",f);let x={url:i.url,status:m.statusCode,statusText:m.statusMessage,headers:v,size:i.size,counter:i.counter,highWaterMark:i.highWaterMark},y=v.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||y===null||m.statusCode===204||m.statusCode===304){c=new Dn(D,x),r(c);return}let E={flush:Pl.default.Z_SYNC_FLUSH,finishFlush:Pl.default.Z_SYNC_FLUSH};if(y==="gzip"||y==="x-gzip"){D=(0,Ni.pipeline)(D,Pl.default.createGunzip(E),k=>{k&&n(k)}),c=new Dn(D,x),r(c);return}if(y==="deflate"||y==="x-deflate"){let k=(0,Ni.pipeline)(m,new Ni.PassThrough,A=>{A&&n(A)});k.once("data",A=>{(A[0]&15)===8?D=(0,Ni.pipeline)(D,Pl.default.createInflate(),R=>{R&&n(R)}):D=(0,Ni.pipeline)(D,Pl.default.createInflateRaw(),R=>{R&&n(R)}),c=new Dn(D,x),r(c)}),k.once("end",()=>{c||(c=new Dn(D,x),r(c))});return}if(y==="br"){D=(0,Ni.pipeline)(D,Pl.default.createBrotliDecompress(),k=>{k&&n(k)}),c=new Dn(D,x),r(c);return}c=new Dn(D,x),r(c)}),H$(d,i).catch(n)})}function cEe(t,e){let r=mg.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=mg.Buffer.compare(c.slice(-5),r)===0,!i&&o&&(i=mg.Buffer.compare(o.slice(-3),r.slice(0,3))===0&&mg.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 uU,cU,Pl,Ni,mg,uEe,HP=I(()=>{uU=re(require("node:http"),1),cU=re(require("node:https"),1),Pl=re(require("node:zlib"),1),Ni=re(require("node:stream"),1),mg=require("node:buffer");C$();dx();G$();hx();sU();LP();aU();WP();ix();ax();zP();jP();uEe=new Set(["data:","http:","https:"])});var fU,$i,Rl=I(()=>{fU="Factorio Modding Tool Kit",$i="1.1.40"});var pU=g((nxt,dU)=>{dU.exports=Ty("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")});var mU=g((oxt,hU)=>{hU.exports=Ty("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")});async function VP(t,e){let r=await Au(`https://mods.factorio.com/api/mods/${t}${e?"/full":""}`);if(!r.ok)throw new Error(r.statusText);return await r.json()}var Ei,Fs,lEe,Os,bx=I(()=>{"use strict";Ei=re(require("fs/promises")),Fs=re(require("path"));HP();Rl();lEe={debugadapter:{version:$i,zip:async()=>(await Promise.resolve().then(()=>re(pU()))).default},["debugadapter-tests"]:{version:$i,zip:async()=>(await Promise.resolve().then(()=>re(mU()))).default}};Os=class{constructor(e,r){this.modsPath=e;this.playerdataPath=r;this.modList={mods:[]};this.Loaded=this.reload()}async reload(){let e=Fs.resolve(this.modsPath,"./mod-list.json");try{this.modList=JSON.parse(await Ei.readFile(e,"utf8"))}catch{this.modList={mods:[]}}}async write(){let e=Fs.resolve(this.modsPath,"./mod-list.json");return Ei.writeFile(e,JSON.stringify(this.modList,null,2),"utf8")}async getDownloadCredentials(e){let r=this.playerdataPath??Fs.resolve(this.modsPath,"../player-data.json"),n=r?await Ei.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 Au("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 Ei.writeFile(r,JSON.stringify(n,void 0,2))),s}async findInstallSource(e,r){if(r.origin!=="portal"){let o=lEe[e];if(o)return o;if(r.origin==="bundle")throw new Error(`No bundled package for ${e}`)}let n=await VP(e),i=n.releases[n.releases.length-1];return{version:i.version,zip:async()=>{let o=await this.getDownloadCredentials(r.credentialPrompt),s=await Au(`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(l=>l.name===e),s=o?.enabled?o.version??!0:o?.enabled;async function a(l){let f=Fs.resolve(l,"info.json");try{let d=await Ei.readFile(f,"utf8");if(d){let h=JSON.parse(d);if(h.name===e&&h.version===i)return!0}}catch{}return!1}if(!r.force){if(await a(Fs.resolve(this.modsPath,e)))return this.set(e,i),{using:i,from:"folder",previous:s};if(await a(Fs.resolve(this.modsPath,`${e}_${i}`)))return this.set(e,i),{using:i,from:"versioned_folder",previous:s};try{return await Ei.access(Fs.resolve(this.modsPath,`${e}_${i}.zip`)),this.set(e,i),{using:i,from:"existing",previous:s}}catch{}}let u=Ei.writeFile(Fs.resolve(this.modsPath,`${e}_${i}.zip`),await n.zip()),c;if(!r.keepOld){let l=(await Ei.readdir(this.modsPath,"utf8")).filter(f=>f.startsWith(e)&&f.endsWith(".zip")&&f!==`${e}_${i}.zip`);l.length===1&&(await Ei.unlink(Fs.resolve(this.modsPath,l[0])),c=l[0].substring(e.length+1,l[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 GP(t){if(t.readUInt8()!==0)return"";{let r=t.readPackedUInt_8_32();return t.readString(r)}}var Br,gU=I(()=>{"use strict";Br=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:GP(e)};case 4:{let n=e.readUInt32LE(),i=[];for(let o=0;o<n;o++){GP(e);let s=Br.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=GP(e);if(!s)throw new Error("Missing key in PropertyTree Dictionary");let a=Br.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([Br.typeTag(3),Br.saveString(e.value)]);case 1:return Buffer.concat([Br.typeTag(1),Buffer.from([e.value?1:0])]);case 2:{let r=Buffer.alloc(8);return r.writeDoubleLE(e.value),Buffer.concat([Br.typeTag(2),r])}case 6:{let r=Buffer.alloc(8);return r.writeBigInt64LE(e.value),Buffer.concat([Br.typeTag(6),r])}case 7:{let r=Buffer.alloc(8);return r.writeBigUInt64LE(e.value),Buffer.concat([Br.typeTag(7),r])}case 0:return Br.typeTag(0);case 4:{let r=Buffer.alloc(4);return r.writeInt32LE(e.value.length),Buffer.concat([Br.typeTag(4),r,Buffer.concat(e.value.map(n=>Buffer.concat([Br.saveString(""),Br.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([Br.saveString(i),Br.save(o)]))}let n=Buffer.alloc(4);return n.writeInt32LE(r.length),Buffer.concat([Br.typeTag(5),n,Buffer.concat(r)])}default:throw new Error(`Invalid datatype in PropertyTree ${e.type}`)}}}});var Pa,KP=I(()=>{"use strict";Pa=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 Pa(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 vx,bU,bo,yx=I(()=>{"use strict";gU();KP();vx=re(require("assert")),bU=["startup","runtime-global","runtime-per-user"],bo=class{constructor(e){this.version=Pa.load(e);let r=Br.load(e);(0,vx.default)(r.type===5);let n={startup:{},["runtime-global"]:{},["runtime-per-user"]:{}};for(let i of bU){let o=r.value[i];(0,vx.default)(o.type===5);let s=n[i];for(let a in o.value){let u=o.value[a];(0,vx.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 l=c.value;if("r"in l&&l.r.type===2&&"g"in l&&l.g.type===2&&"b"in l&&l.b.type===2&&"a"in l&&l.a.type===2)s[a]={type:"color",value:{r:l.r.value,g:l.g.value,b:l.b.value,a:l.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 bU){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(),Br.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 vU,Nr,qu=I(()=>{"use strict";vU=require("stream"),Nr=class extends vU.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 yU(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 gg(t){let e=t.readBigUInt64LE(),r=e>1?t.read(Number(e)-1):Buffer.alloc(0,0);return e>0&&t.readUInt8(),r}var fEe,dEe,YP,QP,ZP,Td,Fd,xU=I(()=>{"use strict";qu();fEe=[27,76,117,97,82,0,1,4,8,4,8,0,25,147,13,10,26,10],dEe=[27,80,104,111,16,66,245,0];YP=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")}},QP=class{constructor(e){this.instack=e.readUInt8()!==0,this.idx=e.readUInt8()}},ZP=class{constructor(e){this.name=gg(e).toString("utf8"),this.start=e.readUInt32LE(),this.end=e.readUInt32LE()}},Td=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}`)}}},Fd=class{constructor(e,r){this.locals=[];this.upvals=[];this.instructions=[];this.constants=[];this.inner_functions=[];r&&yU(e,fEe),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 l=0;l<n;l++){let f=e.readUInt32LE();this.instructions.push(new YP(f))}let i=e.readUInt32LE();for(let l=0;l<i;l++){let f=e.readUInt8();switch(f){case 0:this.constants.push(new Td(0));break;case 1:this.constants.push(new Td(1,e.readUInt8()!==0));break;case 3:this.constants.push(new Td(3,e.readDoubleLE()));break;case 4:this.constants.push(new Td(4,gg(e)));break;default:throw new Error(`Invalid Lua Constant Type: ${f}`)}}let o=e.readUInt32LE();for(let l=0;l<o;l++)this.inner_functions.push(new Fd(e));let s=e.readUInt32LE();for(let l=0;l<s;l++)this.upvals.push(new QP(e));this.sources=[gg(e).toString("utf8")];let a=e.readUInt32LE();for(let l=0;l<a;l++)this.instructions[l].line=e.readUInt32LE();let u=e.readUInt32LE();for(let l=0;l<u;l++)this.locals.push(new ZP(e));let c=e.readUInt32LE();for(let l=0;l<c;l++)this.upvals[l].name=gg(e).toString("utf8");if(this.constants.length>1)try{let l=this.constants[this.constants.length-1];if(l.type===4){let f=new Nr(l.value);yU(f,dEe);let d=f.readUInt32LE(),h=f.readUInt32LE(),m=f.readUInt32LE(),v=[];for(let A=0;A<m;A++)v[A]=e.readUInt32LE();let D=f.readUInt32LE(),x=[];for(let A=0;A<D;A++)x.push(gg(f).toString("utf8"));let y=f.readUInt32LE(),E=0,k=0;for(let A=0;A<y;A++){let R=f.readUInt32LE();for(;k<R;k++)this.instructions[k].source_idx=E;E=f.readUInt32LE()}for(;k<this.instructions.length;k++)this.instructions[k].source_idx=E;this.firstcolumn=d,this.lastcolumn=h;for(let A=0;A<m;A++)this.instructions[A].column=v[A];this.sources.push(...x)}}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=mg.Buffer.compare(c.slice(-5),r)===0,!i&&o&&(i=mg.Buffer.compare(o.slice(-3),r.slice(0,3))===0&&mg.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 uU,cU,Pl,Ni,mg,uEe,HP=I(()=>{uU=re(require("node:http"),1),cU=re(require("node:https"),1),Pl=re(require("node:zlib"),1),Ni=re(require("node:stream"),1),mg=require("node:buffer");C$();dx();G$();hx();sU();LP();aU();WP();ix();ax();zP();jP();uEe=new Set(["data:","http:","https:"])});var fU,$i,Rl=I(()=>{fU="Factorio Modding Tool Kit",$i="1.1.41"});var pU=g((nxt,dU)=>{dU.exports=Ty("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")});var mU=g((oxt,hU)=>{hU.exports=Ty("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")});async function VP(t,e){let r=await Au(`https://mods.factorio.com/api/mods/${t}${e?"/full":""}`);if(!r.ok)throw new Error(r.statusText);return await r.json()}var Ei,Fs,lEe,Os,bx=I(()=>{"use strict";Ei=re(require("fs/promises")),Fs=re(require("path"));HP();Rl();lEe={debugadapter:{version:$i,zip:async()=>(await Promise.resolve().then(()=>re(pU()))).default},["debugadapter-tests"]:{version:$i,zip:async()=>(await Promise.resolve().then(()=>re(mU()))).default}};Os=class{constructor(e,r){this.modsPath=e;this.playerdataPath=r;this.modList={mods:[]};this.Loaded=this.reload()}async reload(){let e=Fs.resolve(this.modsPath,"./mod-list.json");try{this.modList=JSON.parse(await Ei.readFile(e,"utf8"))}catch{this.modList={mods:[]}}}async write(){let e=Fs.resolve(this.modsPath,"./mod-list.json");return Ei.writeFile(e,JSON.stringify(this.modList,null,2),"utf8")}async getDownloadCredentials(e){let r=this.playerdataPath??Fs.resolve(this.modsPath,"../player-data.json"),n=r?await Ei.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 Au("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 Ei.writeFile(r,JSON.stringify(n,void 0,2))),s}async findInstallSource(e,r){if(r.origin!=="portal"){let o=lEe[e];if(o)return o;if(r.origin==="bundle")throw new Error(`No bundled package for ${e}`)}let n=await VP(e),i=n.releases[n.releases.length-1];return{version:i.version,zip:async()=>{let o=await this.getDownloadCredentials(r.credentialPrompt),s=await Au(`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(l=>l.name===e),s=o?.enabled?o.version??!0:o?.enabled;async function a(l){let f=Fs.resolve(l,"info.json");try{let d=await Ei.readFile(f,"utf8");if(d){let h=JSON.parse(d);if(h.name===e&&h.version===i)return!0}}catch{}return!1}if(!r.force){if(await a(Fs.resolve(this.modsPath,e)))return this.set(e,i),{using:i,from:"folder",previous:s};if(await a(Fs.resolve(this.modsPath,`${e}_${i}`)))return this.set(e,i),{using:i,from:"versioned_folder",previous:s};try{return await Ei.access(Fs.resolve(this.modsPath,`${e}_${i}.zip`)),this.set(e,i),{using:i,from:"existing",previous:s}}catch{}}let u=Ei.writeFile(Fs.resolve(this.modsPath,`${e}_${i}.zip`),await n.zip()),c;if(!r.keepOld){let l=(await Ei.readdir(this.modsPath,"utf8")).filter(f=>f.startsWith(e)&&f.endsWith(".zip")&&f!==`${e}_${i}.zip`);l.length===1&&(await Ei.unlink(Fs.resolve(this.modsPath,l[0])),c=l[0].substring(e.length+1,l[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 GP(t){if(t.readUInt8()!==0)return"";{let r=t.readPackedUInt_8_32();return t.readString(r)}}var Br,gU=I(()=>{"use strict";Br=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:GP(e)};case 4:{let n=e.readUInt32LE(),i=[];for(let o=0;o<n;o++){GP(e);let s=Br.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=GP(e);if(!s)throw new Error("Missing key in PropertyTree Dictionary");let a=Br.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([Br.typeTag(3),Br.saveString(e.value)]);case 1:return Buffer.concat([Br.typeTag(1),Buffer.from([e.value?1:0])]);case 2:{let r=Buffer.alloc(8);return r.writeDoubleLE(e.value),Buffer.concat([Br.typeTag(2),r])}case 6:{let r=Buffer.alloc(8);return r.writeBigInt64LE(e.value),Buffer.concat([Br.typeTag(6),r])}case 7:{let r=Buffer.alloc(8);return r.writeBigUInt64LE(e.value),Buffer.concat([Br.typeTag(7),r])}case 0:return Br.typeTag(0);case 4:{let r=Buffer.alloc(4);return r.writeInt32LE(e.value.length),Buffer.concat([Br.typeTag(4),r,Buffer.concat(e.value.map(n=>Buffer.concat([Br.saveString(""),Br.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([Br.saveString(i),Br.save(o)]))}let n=Buffer.alloc(4);return n.writeInt32LE(r.length),Buffer.concat([Br.typeTag(5),n,Buffer.concat(r)])}default:throw new Error(`Invalid datatype in PropertyTree ${e.type}`)}}}});var Pa,KP=I(()=>{"use strict";Pa=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 Pa(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 vx,bU,bo,yx=I(()=>{"use strict";gU();KP();vx=re(require("assert")),bU=["startup","runtime-global","runtime-per-user"],bo=class{constructor(e){this.version=Pa.load(e);let r=Br.load(e);(0,vx.default)(r.type===5);let n={startup:{},["runtime-global"]:{},["runtime-per-user"]:{}};for(let i of bU){let o=r.value[i];(0,vx.default)(o.type===5);let s=n[i];for(let a in o.value){let u=o.value[a];(0,vx.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 l=c.value;if("r"in l&&l.r.type===2&&"g"in l&&l.g.type===2&&"b"in l&&l.b.type===2&&"a"in l&&l.a.type===2)s[a]={type:"color",value:{r:l.r.value,g:l.g.value,b:l.b.value,a:l.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 bU){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(),Br.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 vU,Nr,qu=I(()=>{"use strict";vU=require("stream"),Nr=class extends vU.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 yU(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 gg(t){let e=t.readBigUInt64LE(),r=e>1?t.read(Number(e)-1):Buffer.alloc(0,0);return e>0&&t.readUInt8(),r}var fEe,dEe,YP,QP,ZP,Td,Fd,xU=I(()=>{"use strict";qu();fEe=[27,76,117,97,82,0,1,4,8,4,8,0,25,147,13,10,26,10],dEe=[27,80,104,111,16,66,245,0];YP=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")}},QP=class{constructor(e){this.instack=e.readUInt8()!==0,this.idx=e.readUInt8()}},ZP=class{constructor(e){this.name=gg(e).toString("utf8"),this.start=e.readUInt32LE(),this.end=e.readUInt32LE()}},Td=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}`)}}},Fd=class{constructor(e,r){this.locals=[];this.upvals=[];this.instructions=[];this.constants=[];this.inner_functions=[];r&&yU(e,fEe),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 l=0;l<n;l++){let f=e.readUInt32LE();this.instructions.push(new YP(f))}let i=e.readUInt32LE();for(let l=0;l<i;l++){let f=e.readUInt8();switch(f){case 0:this.constants.push(new Td(0));break;case 1:this.constants.push(new Td(1,e.readUInt8()!==0));break;case 3:this.constants.push(new Td(3,e.readDoubleLE()));break;case 4:this.constants.push(new Td(4,gg(e)));break;default:throw new Error(`Invalid Lua Constant Type: ${f}`)}}let o=e.readUInt32LE();for(let l=0;l<o;l++)this.inner_functions.push(new Fd(e));let s=e.readUInt32LE();for(let l=0;l<s;l++)this.upvals.push(new QP(e));this.sources=[gg(e).toString("utf8")];let a=e.readUInt32LE();for(let l=0;l<a;l++)this.instructions[l].line=e.readUInt32LE();let u=e.readUInt32LE();for(let l=0;l<u;l++)this.locals.push(new ZP(e));let c=e.readUInt32LE();for(let l=0;l<c;l++)this.upvals[l].name=gg(e).toString("utf8");if(this.constants.length>1)try{let l=this.constants[this.constants.length-1];if(l.type===4){let f=new Nr(l.value);yU(f,dEe);let d=f.readUInt32LE(),h=f.readUInt32LE(),m=f.readUInt32LE(),v=[];for(let A=0;A<m;A++)v[A]=e.readUInt32LE();let D=f.readUInt32LE(),x=[];for(let A=0;A<D;A++)x.push(gg(f).toString("utf8"));let y=f.readUInt32LE(),E=0,k=0;for(let A=0;A<y;A++){let R=f.readUInt32LE();for(;k<R;k++)this.instructions[k].source_idx=E;E=f.readUInt32LE()}for(;k<this.instructions.length;k++)this.instructions[k].source_idx=E;this.firstcolumn=d,this.lastcolumn=h;for(let A=0;A<m;A++)this.instructions[A].column=v[A];this.sources.push(...x)}}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,l=this.fb2int(c),f=a===u?`${u}`:`${a}->${u}`,d=c===l?`${l}`:`${c}->${l}`;return`NEWTABLE ${this.getRegisterLabel(e,r.A)} := {} size(${f},${d})`}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 wU={};pt(wU,{FactorioModDebugSession:()=>Od});var Ee,Ra,_U,Fl,JP,XP,Tl,Od,eR=I(()=>{"use strict";Ee=re(m9()),Ra=re(require("path")),_U=re(require("fs/promises")),Fl=re(require("os")),JP=re(tx());Ea();q6();E$();bx();yx();xU();qu();XP=require("stream"),Tl=class extends Ee.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.buffers=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=F6(Zm(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 Ee.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 Ee.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=Ra.posix.normalize(r.modsPath);i.match(/^~[\\\/]/)&&(i=Ra.posix.join(Fl.homedir().replace(/\\/g,"/"),i.replace(/^~[\\\/]/,""))),i.match(/[\\\/]$/)&&(i=i.replace(/[\\\/]+$/,""));try{await _U.access(i),r.modsPath=i}catch{return this.sendEvent(new Ee.OutputEvent(`modsPath specified in launch configuration does not exist
|
|
@@ -105,7 +105,7 @@ end
|
|
|
105
105
|
`),this.overloads)for(let r of this.overloads)await r.write(e);e.write(`${this.name} = function(`),this.params&&e.write(this.params.map(r=>r.name).join(", ")),e.write(`) end;
|
|
106
106
|
`)}format(){if((!this.params||this.params.length===0)&&!this.returns)return"function";let e="";this.params&&(e=this.params.map(n=>`${n.name}:${n.type.format()}`).join(", "));let r="";return this.returns&&(r=`:${this.returns.map(n=>n.type.format()).join(", ")}`),`fun(${e})${r}`}},vo=class{constructor(e,r,n,i){this.name=e;this.type=r;this.description=n;this.optional=i}async write(e){e.write(`---@param ${this.name}${this.optional?"?":""} ${this.type.format()} ${await this.description??""}
|
|
107
107
|
`)}},Rx=class{constructor(e,r,n,i){this.type=e;this.name=r;this.description=n;this.optional=i}async write(e){e.write(`---@return ${this.type.format()}${this.optional?"?":""} ${this.name??""}`);let r=await this.description;r&&e.write(` #${r}`),e.write(`
|
|
108
|
-
`)}}});var FU={};pt(FU,{ApiDocGenerator:()=>ql});function uR(t,e){return t.order-e.order}var ql,Fx=I(()=>{"use strict";TU();aR();ql=class{constructor(e,r){if(this.docs=JSON.parse(e),this.docs.application!=="factorio")throw`Unknown application: ${this.docs.application}`;if(!(this.docs.api_version===3||this.docs.api_version===4))throw`Unsupported JSON Version ${this.docs.api_version}`;if(this.docs.stage!=="runtime")throw`Wrong stage: ${this.docs.stage}`;this.classes=new Map(this.docs.classes.map(i=>[i.name,i])),this.events=new Map(this.docs.events.map(i=>[i.name,i])),this.concepts=new Map(this.docs.concepts.map(i=>[i.name,i])),this.builtins=new Map(this.docs.builtin_types.map(i=>[i.name,i])),this.globals=new Map(this.docs.global_objects.map(i=>[i.type,i]));let n=(i,o)=>{let s=`${o}${i.name}`;this.defines.add(s);let a=`${s}.`;i.values&&i.values.forEach(u=>{this.defines.add(`${a}${u.name}`)}),i.subkeys&&i.subkeys.forEach(u=>n(u,a))};this.defines=new Set,this.defines.add("defines"),this.docs.defines.forEach(i=>n(i,"defines."))}get api_version(){return this.docs.api_version}get stage(){return this.docs.stage}get application(){return this.docs.application}get application_version(){return this.docs.application_version}resolve_link(e,r){if(r=r?`#${r}`:"",["classes","events","concepts","defines"].includes(e))return`/${e}.html${r}`;if(e==="builtin_types")return`/builtin-types.html${r}`;if(["libraries","global","migrations"].includes(e))return`/auxiliary/${e}.html${r}`;if(this.concepts.has(e))return`/concepts.html#${e}`;if(this.classes.has(e))return`/classes/${e}.html${r}`;if(this.events.has(e))return`/events.html#${e}`;if(this.builtins.has(e))return`/builtin-types.html#${e}`;if(this.defines.has(e))return`/defines.html#${e}`;console.warn(`Invalid Link: runtime:${e}${r}`)}with_base_classes(e,r){let n=r(e),i=e.base_classes?.map(o=>this.classes.get(o)).filter(o=>!!o).map(r)??[];return[n,...i].flat()}generate_debuginfo(){let e={eventlike:{__index:{},__newindex:{}},alwaysValid:{},expandKeys:{}};return this.classes.forEach(r=>{if(["LuaCustomTable"].includes(r.name))return;let n={},i=!1;e.expandKeys[r.name]=n;for(let o of this.with_base_classes(r,s=>s.attributes))if(o.name==="valid")i=!0;else if(o.name!=="object_name"){if(o.read){n[o.name]={},o.write||(n[o.name].readOnly=!0);let s=o.type;typeof s=="string"&&s.startsWith("defines.")&&(n[o.name].enumFrom=s)}"raises"in o&&o?.raises?.find(s=>s.timeframe==="instantly")&&(e.eventlike.__newindex[r.name]=e.eventlike.__newindex[r.name]??{},e.eventlike.__newindex[r.name][o.name]=!0)}i||(e.alwaysValid[r.name]=!0);for(let o of r.operators)switch(o.name){case"index":n["[]"]={readOnly:!o.write,thisAsTable:!0,iterMode:"count"};break;case"length":default:break}for(let o of this.with_base_classes(r,s=>s.methods))"raises"in o&&o.raises?.find(s=>s.timeframe==="instantly")&&(e.eventlike.__index[r.name]=e.eventlike.__index[r.name]??{},e.eventlike.__index[r.name][o.name]=!0),!["help","generate_event_name"].includes(o.name)&&(o.parameters.length>0||o.return_values.length!==0&&(o.raises||(n[o.name]={readOnly:!0,fetchable:!0})))}),e}async generate_LuaLS_docs(e){return Promise.all([...await this.generate_LuaLS_classes(e),this.generate_LuaLS_concepts(e),this.generate_LuaLS_defines(e),this.generate_LuaLS_events(e),this.generate_LuaLS_LuaObjectNames(),this.generate_LuaLS_global_functions(e)])}async generate_LuaLS_classes(e){let r=[];for(let n of this.docs.classes)r.push(await this.generate_LuaLS_class(n,e));return r}async generate_LuaLS_class(e,r){let n=new Ui(`runtime-api/${e.name}`,this.docs.application_version),i=new En(e.name),o=this.globals.get(e.name);o&&(i.global_name=o.name),i.description=r(this.collect_description(e,{scope:"runtime",member:e.name})),i.parents=(e.base_classes??["LuaObject"]).map(a=>new _t(a)),i.generic_args=Iu.adjust.class[e.name]?.generic_params,Iu.adjust.class[e.name]?.generic_parent&&i.parents.push(await this.LuaLS_type(Iu.adjust.class[e.name]?.generic_parent));for(let a of e.attributes)i.add(new Hr(a.name,await this.LuaLS_type(a.type,{file:n,table_class_name:`${e.name}.${a.name}`,format_description:r}),r(this.collect_description(a,{scope:"runtime",member:e.name,part:a.name})),a.optional));for(let a of e.operators)switch(a.name){case"call":{let u=new yg;u.description=r(this.collect_description(a,{scope:"runtime",member:e.name,part:"call_operator"})),u.params=await this.LuaLS_params(a.parameters,r),u.returns=await this.LuaLS_returns(a.return_values,r),i.add(u);break}case"length":{let u=new vg("len",await this.LuaLS_type(a.type));u.description=r(this.collect_description(a,{scope:"runtime",member:e.name,part:"length_operator"})),i.add(u);break}case"index":{if(Iu.adjust.class[e.name]?.no_index)break;i.add(new Hr(await this.LuaLS_type(Iu.adjust.class[e.name]?.index_key??"uint"),await this.LuaLS_type(a.type),r(this.collect_description(a,{scope:"runtime",member:e.name,part:"index_operator"}))));break}default:throw`Unkown operator: ${a.name}`}let s=i;Iu.adjust.class[e.name]?.split_funcs&&(s=new En(`${e.name}_funcs`),n.add(s),i.parents.push(new _t(`${e.name}_funcs`)));for(let a of e.methods)s.add(await this.LuaLS_function(a,n,r,e.name));return n.add(i),n}async generate_LuaLS_concepts(e){let r=new Ui("runtime-api/concepts",this.docs.application_version);for(let n of this.docs.concepts){let i=e(this.collect_description(n,{scope:"runtime",member:n.name}));if(typeof n.type=="string")r.add(new Ta(n.name,await this.LuaLS_type(n.type),i));else switch(n.type.complex_type){case"dictionary":let o=n.type.key,s=n.type.value;if(typeof s=="object"&&s.complex_type==="literal"&&s.value===!0&&typeof o=="object"&&o.complex_type==="union"){let a=new En(n.name);a.description=i;for(let u of o.options)a.add(new Hr(await this.LuaLS_type(u),await this.LuaLS_type(s)));r.add(a);break}case"union":case"array":case"table":case"tuple":case"struct":case"LuaStruct":{let a=await this.LuaLS_type(n.type,{file:r,table_class_name:n.name,format_description:e});a instanceof _t&&a.name===n.name||r.add(new Ta(n.name,a,i));break}default:break}}return r}async generate_LuaLS_defines(e){let r=new Ui("runtime-api/defines",this.docs.application_version),n=new En("defines");n.global_name="defines",n.description=e(void 0,{scope:"runtime",member:"defines"}),r.add(n);let i=async(o,s)=>{let a=`${s}${o.name}`,u=e(this.collect_description(o,{scope:"runtime",member:a}));if(o.values)r.add(new kx(a,o.values.map(c=>new Px(c.name,c.description)),u));else{let c=new En(a);c.global_name=a,c.description=u;let l=Iu.adjust.define[a];if(l?.subkeys&&(c.parents=[l.subkeys.map(f=>new _t(f)).reduceRight((f,d)=>new Lu(d,f),new Is(0))]),r.add(c),o.subkeys){let f=`${a}.`;for(let d of o.subkeys)await i(d,f)}}};for(let o of this.docs.defines)await i(o,"defines.");return r}async generate_LuaLS_events(e){let r=new Ui("runtime-api/events",this.docs.application_version),n=new En("event_handler.events");for(let[o,s]of this.events){let a=new Ls("handler",[new vo("event",new _t(`EventData.${s.name}`))]);n.add(new Hr(new _t(s.name==="CustomInputEvent"?"string":`defines.events.${s.name}`),a));let u=new En(`EventData.${s.name}`);u.parents=[new _t("EventData")],u.description=e(this.collect_description(s,{scope:"runtime",member:s.name}));for(let c of s.data)u.add(new Hr(c.name,await this.LuaLS_type(c.type),e(this.collect_description(c,{scope:"runtime",member:s.name,part:c.name})),c.optional));r.add(u)}let i=new Ls("handler",[new vo("event",new _t("EventData"))]);return n.add(new Hr(new _t("uint"),i)),r.add(n),r}async generate_LuaLS_LuaObjectNames(){let e=new Ui("runtime-api/LuaObjectNames",this.docs.application_version);return e.add(new Ta("LuaObject.object_name",new Mu(this.docs.classes.filter(r=>!r.abstract).map(r=>new Is(r.name))))),e}async generate_LuaLS_global_functions(e){let r=new Ui("runtime-api/global_functions",this.docs.application_version);for(let n of this.docs.global_functions)r.add(await this.LuaLS_function(n,r,e));return r}async LuaLS_params(e,r){return Promise.all(e.sort(uR).map(async n=>new vo(Tx(n.name),await this.LuaLS_type(n.type),r(this.collect_description(n)),n.optional)))}async LuaLS_returns(e,r){return Promise.all(e.sort(uR).map(async n=>new Rx(await this.LuaLS_type(n.type),void 0,r(this.collect_description(n)),n.optional)))}async LuaLS_function(e,r,n,i){let o=e.takes_table?[new vo("param",await this.LuaLS_table_type(e,r,`${i??""}${i?".":""}${e.name}_param`,n),void 0,e.table_is_optional)]:await this.LuaLS_params(e.parameters,n);return e.variadic_type&&o.push(new vo("...",await this.LuaLS_type(e.variadic_type),n(e.variadic_description))),new Ls(e.name,o,await this.LuaLS_returns(e.return_values,n),n(e.description,{scope:"runtime",member:i??"libraries",part:i?e.name:"new-functions"}))}async LuaLS_table_type(e,r,n,i,o){let s=new En(n);s.parents=o,r.add(s);let a=1;for(let u of e.parameters.sort(uR)){let c="complex_type"in e&&e.complex_type==="tuple";s.add(new Hr(c?new Is(a++):u.name,await this.LuaLS_type(u.type),i(this.collect_description(u)),u.optional))}if(e.variant_parameter_groups){let u=[],c=new Ta(s.name,new Mu(u));r.add(c),s.name+=".base";for(let l of e.variant_parameter_groups){let f=await this.LuaLS_table_type(l,r,`${n}.${Tx(l.name)}`,i,[new _t(s.name)]);u.push(f)}return new _t(c.name)}return new _t(s.name)}async LuaLS_type(e,r){if(!e)return new _t("any");if(typeof e=="string")return new _t(e);let n=i=>r&&{file:r.file,table_class_name:`${r.table_class_name}.${i}`,format_description:r.format_description};switch(e.complex_type){case"array":return new Al(await this.LuaLS_type(e.value,n("member")));case"dictionary":return new Lu(await this.LuaLS_type(e.key,n("key")),await this.LuaLS_type(e.value,n("value")));case"union":return new Mu(await Promise.all(e.options.map((i,o)=>this.LuaLS_type(i,n(`${o}`)))));case"LuaLazyLoadedValue":return new _t("LuaLazyLoadedValue",[await this.LuaLS_type(e.value,n("value"))]);case"LuaCustomTable":return new _t("LuaCustomTable",await Promise.all([this.LuaLS_type(e.key,n("key")),this.LuaLS_type(e.value,n("value"))]));case"literal":return new Is(e.value);case"function":return new Ls(void 0,await Promise.all(e.parameters.map(async(i,o,s)=>new vo(`p${o+1}`,await this.LuaLS_type(i,n(`param${s.length>1?o:""}`))))));case"type":return this.LuaLS_type(e.value,r);case"table":case"tuple":if(!r)throw new Error(`${e.complex_type} without parent`);return this.LuaLS_table_type(e,r.file,r.table_class_name,r.format_description);case"struct":case"LuaStruct":{if(!r)throw new Error(`${e.complex_type} without parent`);let i=new En(r.table_class_name);for(let o of e.attributes)i.add(new Hr(o.name,await this.LuaLS_type(o.type,{file:r.file,table_class_name:`${r.table_class_name}.${o.name}`,format_description:r.format_description}),r.format_description(this.collect_description(o)),o.optional));return r.file.add(i),new _t(r.table_class_name)}}throw new Error("Invalid Type")}collect_description(e,r,n){return n||(n=e.description),"read"in e&&(n=`[${e.read?"R":""}${e.write?"W":""}] ${n??""}`),[n,e.notes?.map(i=>`**Note:** ${i}`)?.join(`
|
|
108
|
+
`)}}});var FU={};pt(FU,{ApiDocGenerator:()=>ql});function uR(t,e){return t.order-e.order}var ql,Fx=I(()=>{"use strict";TU();aR();ql=class{constructor(e,r){if(this.docs=JSON.parse(e),this.docs.application!=="factorio")throw`Unknown application: ${this.docs.application}`;if(!(this.docs.api_version===3||this.docs.api_version===4))throw`Unsupported JSON Version ${this.docs.api_version}`;if(this.docs.stage!=="runtime")throw`Wrong stage: ${this.docs.stage}`;this.classes=new Map(this.docs.classes.map(i=>[i.name,i])),this.events=new Map(this.docs.events.map(i=>[i.name,i])),this.concepts=new Map(this.docs.concepts.map(i=>[i.name,i])),this.builtins=new Map(this.docs.builtin_types.map(i=>[i.name,i])),this.globals=new Map(this.docs.global_objects.map(i=>[i.type,i]));let n=(i,o)=>{let s=`${o}${i.name}`;this.defines.add(s);let a=`${s}.`;i.values&&i.values.forEach(u=>{this.defines.add(`${a}${u.name}`)}),i.subkeys&&i.subkeys.forEach(u=>n(u,a))};this.defines=new Set,this.defines.add("defines"),this.docs.defines.forEach(i=>n(i,"defines."))}get api_version(){return this.docs.api_version}get stage(){return this.docs.stage}get application(){return this.docs.application}get application_version(){return this.docs.application_version}resolve_link(e,r){if(r=r?`#${r}`:"",["classes","events","concepts","defines"].includes(e))return`/${e}.html${r}`;if(e==="builtin_types")return`/builtin-types.html${r}`;if(["libraries","global","migrations","data-lifecycle"].includes(e))return`/auxiliary/${e}.html${r}`;if(this.concepts.has(e))return`/concepts.html#${e}`;if(this.classes.has(e))return`/classes/${e}.html${r}`;if(this.events.has(e))return`/events.html#${e}`;if(this.builtins.has(e))return`/builtin-types.html#${e}`;if(this.defines.has(e))return`/defines.html#${e}`;console.warn(`Invalid Link: runtime:${e}${r}`)}with_base_classes(e,r){let n=r(e),i=e.base_classes?.map(o=>this.classes.get(o)).filter(o=>!!o).map(r)??[];return[n,...i].flat()}generate_debuginfo(){let e={eventlike:{__index:{},__newindex:{}},alwaysValid:{},expandKeys:{}};return this.classes.forEach(r=>{if(["LuaCustomTable"].includes(r.name))return;let n={},i=!1;e.expandKeys[r.name]=n;for(let o of this.with_base_classes(r,s=>s.attributes))if(o.name==="valid")i=!0;else if(o.name!=="object_name"){if(o.read){n[o.name]={},o.write||(n[o.name].readOnly=!0);let s=o.type;typeof s=="string"&&s.startsWith("defines.")&&(n[o.name].enumFrom=s)}"raises"in o&&o?.raises?.find(s=>s.timeframe==="instantly")&&(e.eventlike.__newindex[r.name]=e.eventlike.__newindex[r.name]??{},e.eventlike.__newindex[r.name][o.name]=!0)}i||(e.alwaysValid[r.name]=!0);for(let o of r.operators)switch(o.name){case"index":n["[]"]={readOnly:!o.write,thisAsTable:!0,iterMode:"count"};break;case"length":default:break}for(let o of this.with_base_classes(r,s=>s.methods))"raises"in o&&o.raises?.find(s=>s.timeframe==="instantly")&&(e.eventlike.__index[r.name]=e.eventlike.__index[r.name]??{},e.eventlike.__index[r.name][o.name]=!0),!["help","generate_event_name"].includes(o.name)&&(o.parameters.length>0||o.return_values.length!==0&&(o.raises||(n[o.name]={readOnly:!0,fetchable:!0})))}),e}async generate_LuaLS_docs(e){return Promise.all([...await this.generate_LuaLS_classes(e),this.generate_LuaLS_concepts(e),this.generate_LuaLS_defines(e),this.generate_LuaLS_events(e),this.generate_LuaLS_LuaObjectNames(),this.generate_LuaLS_global_functions(e)])}async generate_LuaLS_classes(e){let r=[];for(let n of this.docs.classes)r.push(await this.generate_LuaLS_class(n,e));return r}async generate_LuaLS_class(e,r){let n=new Ui(`runtime-api/${e.name}`,this.docs.application_version),i=new En(e.name),o=this.globals.get(e.name);o&&(i.global_name=o.name),i.description=r(this.collect_description(e,{scope:"runtime",member:e.name})),i.parents=(e.base_classes??["LuaObject"]).map(a=>new _t(a)),i.generic_args=Iu.adjust.class[e.name]?.generic_params,Iu.adjust.class[e.name]?.generic_parent&&i.parents.push(await this.LuaLS_type(Iu.adjust.class[e.name]?.generic_parent));for(let a of e.attributes)i.add(new Hr(a.name,await this.LuaLS_type(a.type,{file:n,table_class_name:`${e.name}.${a.name}`,format_description:r}),r(this.collect_description(a,{scope:"runtime",member:e.name,part:a.name})),a.optional));for(let a of e.operators)switch(a.name){case"call":{let u=new yg;u.description=r(this.collect_description(a,{scope:"runtime",member:e.name,part:"call_operator"})),u.params=await this.LuaLS_params(a.parameters,r),u.returns=await this.LuaLS_returns(a.return_values,r),i.add(u);break}case"length":{let u=new vg("len",await this.LuaLS_type(a.type));u.description=r(this.collect_description(a,{scope:"runtime",member:e.name,part:"length_operator"})),i.add(u);break}case"index":{if(Iu.adjust.class[e.name]?.no_index)break;i.add(new Hr(await this.LuaLS_type(Iu.adjust.class[e.name]?.index_key??"uint"),await this.LuaLS_type(a.type),r(this.collect_description(a,{scope:"runtime",member:e.name,part:"index_operator"}))));break}default:throw`Unkown operator: ${a.name}`}let s=i;Iu.adjust.class[e.name]?.split_funcs&&(s=new En(`${e.name}_funcs`),n.add(s),i.parents.push(new _t(`${e.name}_funcs`)));for(let a of e.methods)s.add(await this.LuaLS_function(a,n,r,e.name));return n.add(i),n}async generate_LuaLS_concepts(e){let r=new Ui("runtime-api/concepts",this.docs.application_version);for(let n of this.docs.concepts){let i=e(this.collect_description(n,{scope:"runtime",member:n.name}));if(typeof n.type=="string")r.add(new Ta(n.name,await this.LuaLS_type(n.type),i));else switch(n.type.complex_type){case"dictionary":let o=n.type.key,s=n.type.value;if(typeof s=="object"&&s.complex_type==="literal"&&s.value===!0&&typeof o=="object"&&o.complex_type==="union"){let a=new En(n.name);a.description=i;for(let u of o.options)a.add(new Hr(await this.LuaLS_type(u),await this.LuaLS_type(s)));r.add(a);break}case"union":case"array":case"table":case"tuple":case"struct":case"LuaStruct":{let a=await this.LuaLS_type(n.type,{file:r,table_class_name:n.name,format_description:e});a instanceof _t&&a.name===n.name||r.add(new Ta(n.name,a,i));break}default:break}}return r}async generate_LuaLS_defines(e){let r=new Ui("runtime-api/defines",this.docs.application_version),n=new En("defines");n.global_name="defines",n.description=e(void 0,{scope:"runtime",member:"defines"}),r.add(n);let i=async(o,s)=>{let a=`${s}${o.name}`,u=e(this.collect_description(o,{scope:"runtime",member:a}));if(o.values)r.add(new kx(a,o.values.map(c=>new Px(c.name,c.description)),u));else{let c=new En(a);c.global_name=a,c.description=u;let l=Iu.adjust.define[a];if(l?.subkeys&&(c.parents=[l.subkeys.map(f=>new _t(f)).reduceRight((f,d)=>new Lu(d,f),new Is(0))]),r.add(c),o.subkeys){let f=`${a}.`;for(let d of o.subkeys)await i(d,f)}}};for(let o of this.docs.defines)await i(o,"defines.");return r}async generate_LuaLS_events(e){let r=new Ui("runtime-api/events",this.docs.application_version),n=new En("event_handler.events");for(let[o,s]of this.events){let a=new Ls("handler",[new vo("event",new _t(`EventData.${s.name}`))]);n.add(new Hr(new _t(s.name==="CustomInputEvent"?"string":`defines.events.${s.name}`),a));let u=new En(`EventData.${s.name}`);u.parents=[new _t("EventData")],u.description=e(this.collect_description(s,{scope:"runtime",member:s.name}));for(let c of s.data)u.add(new Hr(c.name,await this.LuaLS_type(c.type),e(this.collect_description(c,{scope:"runtime",member:s.name,part:c.name})),c.optional));r.add(u)}let i=new Ls("handler",[new vo("event",new _t("EventData"))]);return n.add(new Hr(new _t("uint"),i)),r.add(n),r}async generate_LuaLS_LuaObjectNames(){let e=new Ui("runtime-api/LuaObjectNames",this.docs.application_version);return e.add(new Ta("LuaObject.object_name",new Mu(this.docs.classes.filter(r=>!r.abstract).map(r=>new Is(r.name))))),e}async generate_LuaLS_global_functions(e){let r=new Ui("runtime-api/global_functions",this.docs.application_version);for(let n of this.docs.global_functions)r.add(await this.LuaLS_function(n,r,e));return r}async LuaLS_params(e,r){return Promise.all(e.sort(uR).map(async n=>new vo(Tx(n.name),await this.LuaLS_type(n.type),r(this.collect_description(n)),n.optional)))}async LuaLS_returns(e,r){return Promise.all(e.sort(uR).map(async n=>new Rx(await this.LuaLS_type(n.type),void 0,r(this.collect_description(n)),n.optional)))}async LuaLS_function(e,r,n,i){let o=e.takes_table?[new vo("param",await this.LuaLS_table_type(e,r,`${i??""}${i?".":""}${e.name}_param`,n),void 0,e.table_is_optional)]:await this.LuaLS_params(e.parameters,n);return e.variadic_type&&o.push(new vo("...",await this.LuaLS_type(e.variadic_type),n(e.variadic_description))),new Ls(e.name,o,await this.LuaLS_returns(e.return_values,n),n(e.description,{scope:"runtime",member:i??"libraries",part:i?e.name:"new-functions"}))}async LuaLS_table_type(e,r,n,i,o){let s=new En(n);s.parents=o,r.add(s);let a=1;for(let u of e.parameters.sort(uR)){let c="complex_type"in e&&e.complex_type==="tuple";s.add(new Hr(c?new Is(a++):u.name,await this.LuaLS_type(u.type),i(this.collect_description(u)),u.optional))}if(e.variant_parameter_groups){let u=[],c=new Ta(s.name,new Mu(u));r.add(c),s.name+=".base";for(let l of e.variant_parameter_groups){let f=await this.LuaLS_table_type(l,r,`${n}.${Tx(l.name)}`,i,[new _t(s.name)]);u.push(f)}return new _t(c.name)}return new _t(s.name)}async LuaLS_type(e,r){if(!e)return new _t("any");if(typeof e=="string")return new _t(e);let n=i=>r&&{file:r.file,table_class_name:`${r.table_class_name}.${i}`,format_description:r.format_description};switch(e.complex_type){case"array":return new Al(await this.LuaLS_type(e.value,n("member")));case"dictionary":return new Lu(await this.LuaLS_type(e.key,n("key")),await this.LuaLS_type(e.value,n("value")));case"union":return new Mu(await Promise.all(e.options.map((i,o)=>this.LuaLS_type(i,n(`${o}`)))));case"LuaLazyLoadedValue":return new _t("LuaLazyLoadedValue",[await this.LuaLS_type(e.value,n("value"))]);case"LuaCustomTable":return new _t("LuaCustomTable",await Promise.all([this.LuaLS_type(e.key,n("key")),this.LuaLS_type(e.value,n("value"))]));case"literal":return new Is(e.value);case"function":return new Ls(void 0,await Promise.all(e.parameters.map(async(i,o,s)=>new vo(`p${o+1}`,await this.LuaLS_type(i,n(`param${s.length>1?o:""}`))))));case"type":return this.LuaLS_type(e.value,r);case"table":case"tuple":if(!r)throw new Error(`${e.complex_type} without parent`);return this.LuaLS_table_type(e,r.file,r.table_class_name,r.format_description);case"struct":case"LuaStruct":{if(!r)throw new Error(`${e.complex_type} without parent`);let i=new En(r.table_class_name);for(let o of e.attributes)i.add(new Hr(o.name,await this.LuaLS_type(o.type,{file:r.file,table_class_name:`${r.table_class_name}.${o.name}`,format_description:r.format_description}),r.format_description(this.collect_description(o)),o.optional));return r.file.add(i),new _t(r.table_class_name)}}throw new Error("Invalid Type")}collect_description(e,r,n){return n||(n=e.description),"read"in e&&(n=`[${e.read?"R":""}${e.write?"W":""}] ${n??""}`),[n,e.notes?.map(i=>`**Note:** ${i}`)?.join(`
|
|
109
109
|
|
|
110
110
|
`),e.raises&&`**Events:**
|
|
111
111
|
${e.raises?.map(i=>` * ${i.optional?"May":"Will"} raise [${i.name}](runtime:events::${i.name}) ${{instantly:"instantly",current_tick:"later in the current tick",future_tick:"in a future tick"}[i.timeframe]}.${i.description?`
|
|
@@ -122,7 +122,7 @@ ${i}`)?.join(`
|
|
|
122
122
|
disable-mouse-auto-capture=true
|
|
123
123
|
`+r.slice(n.index+n[0].length);else{let i=r.match(/^\[other\]$/m);r=r.slice(0,i.index+i[0].length)+`
|
|
124
124
|
disable-mouse-auto-capture=true
|
|
125
|
-
`+r.slice(i.index+i[0].length)}await this.fs.writeFile(e,Buffer.from(r)),this.iniData=xg.parse(r)}async defaultModsPath(){let e=(await this.configIni())?.path?.["write-data"];if(!e)throw"path.write-data missing in config.ini";return Ht.posix.normalize(Ht.resolve(this.translatePath(e),"mods"))}async dataPath(){let e=(await this.configIni().catch(()=>({path:{["read-data"]:"__PATH__executable__/../../data"}}))).path?.["read-data"];if(!e)throw"path.read-data missing in config.ini";return Ht.posix.normalize(this.translatePath(e))}async lualibPath(){return Ht.posix.normalize(Ht.resolve(await this.dataPath(),"core","lualib"))}async writeDataPath(){let e=(await this.configIni()).path?.["write-data"];if(!e)throw"path.write-data missing in config.ini";return Ht.posix.normalize(this.translatePath(e))}translatePath(e){if(e.startsWith("__PATH__executable__"))return Ht.join(Ht.dirname(this.factorioPath),e.replace("__PATH__executable__",""));if(e.startsWith("__PATH__system-write-data__")){let r=Wi.platform()==="win32"?Ht.resolve(process.env.APPDATA,"Factorio"):Wi.platform()==="linux"?Ht.resolve(Wi.homedir(),".factorio"):Wi.platform()==="darwin"?Ht.resolve(Wi.homedir(),"Library/Application Support/factorio"):"??";return Ht.join(r,e.replace("__PATH__system-write-data__",""))}if(e.startsWith("__PATH__system-read-data__")){let r=Wi.platform()==="linux"?"/usr/share/factorio":Wi.platform()==="darwin"?Ht.resolve(Ht.dirname(this.factorioPath),"../data"):Ht.resolve(Ht.dirname(this.factorioPath),"../../data");return Ht.join(r,e.replace("__PATH__system-read-data__",""))}return e}is(e){let r=this.fv;return r.name===e.name&&r.factorioPath===e.factorioPath&&r.nativeDebugger===e.nativeDebugger&&r.docsPath===e.docsPath&&r.protosPath===e.protosPath&&r.configPath===e.configPath}}});var Ne,dR,MU,Fa,yEe,qx,jU=I(()=>{"use strict";Ne=re(require("vscode")),dR=re(require("os")),MU=re(require("path"));Ea();Fx();fR();sR();Rl();Fa=Ne.workspace.fs,yEe=[{name:"Steam",factorioPath:"C:\\Program Files (x86)\\Steam\\steamapps\\common\\Factorio\\bin\\x64\\factorio.exe"},{name:"System",factorioPath:"C:\\Program Files\\Factorio\\bin\\x64\\factorio.exe"},{name:"Steam",factorioPath:"~/Library/Application Support/Steam/steamapps/common/Factorio/factorio.app/Contents/MacOS/factorio"},{name:"System",factorioPath:"/Applications/factorio.app/Contents/MacOS/factorio"},{name:"Home",factorioPath:"~/.factorio/bin/x64/factorio"}],qx=class{constructor(e,r){this.context=e;this.output=r;this.bar=Ne.window.createStatusBarItem("factorio-version",Ne.StatusBarAlignment.Left,10),this.bar.name="Factorio Version Selector",this.bar.text="Factorio (unselected)",this.bar.command="factorio.selectVersion",this.bar.show(),e.subscriptions.push(this.bar),e.subscriptions.push(Ne.commands.registerCommand("factorio.selectVersion",this.selectVersionCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.checkConfig",this.checkConfigCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.disablePrototypeCache",this.disablePrototypeCacheCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.disableMouseAutoCapture",this.disableMouseAutoCaptureCommand,this)),this.loadActiveVersion(),e.subscriptions.push(Ne.workspace.onDidChangeConfiguration(n=>{n.affectsConfiguration("factorio.versions")&&this.loadActiveVersion()}))}async loadActiveVersion(){let e=Ne.workspace.getConfiguration("factorio"),r=e.get("versions",[]),n=r.find(o=>o.active);if(!n||this._active_version&&this._active_version.is(n))return;let i=await this.tryJsonDocs(n);if(!i){delete n.active,e.update("versions",r);return}this.bar.text=`Factorio ${i.application_version} (${n.name})`,this._active_version=new Il(Ne.workspace.fs,n,i,Ne.workspace.workspaceFolders),this.output.info(`Active Factorio version: ${n.name} (${i.application_version})`),this.checkDocs()}async checkConfigCommand(){this.output.info("Check Config:"),this.output.show();let e=await this.getActiveVersion();if(!e){this.output.error("No Active Factorio Version");return}this.output.info(`Active Factorio Version: ${e.docs.application_version}`),await e.isPrototypeCacheEnabled()&&this.output.warn("Prototype Cache is enabled!"),await e.isMouseAutoCaptureDisabled()&&this.output.info("Mouse Auto Capture is disabled");let r=this.context.storageUri;if(!r){this.output.error("No Workspace");return}try{let l=(await Fa.readFile(yt.joinPath(r,"sumneko-3rd/factorio/config.json"))).toString(),f=JSON.parse(l);this.output.info(`Library bundle OK in ${r.fsPath}, generated from Factorio ${f.factorioVersion} with FMTK ${f.bundleVersion}`)}catch{this.output.error("Missing or damaged library bundle")}let n=Ne.extensions.getExtension("sumneko.lua");if(!n){this.output.warn("LuaLS (sumneko.lua) not present!");return}this.output.info(`LuaLS ${n.packageJSON.version} ${n.isActive?"Activated":"Not Yet Activated"}`);let i=Ne.workspace.getConfiguration("Lua"),o=i.get("workspace.userThirdParty");if(!o)this.output.warn("Lua.workspace.userThirdParty not present!");else{let l=yt.joinPath(r,"sumneko-3rd").fsPath;o.includes(l)?this.output.info(`Lua.workspace.userThirdParty: workspace link OK (${l})`):this.output.warn(`Lua.workspace.userThirdParty: workspace link missing! (${l})`);let f=o.filter(d=>d!==l);for(let d of f)d.match(/justarandomgeek\.factoriomod\-debug[\\\/]sumneko\-3rd$/)?this.output.warn(`Lua.workspace.userThirdParty: stale workspace link? (${d})`):this.output.info(`Lua.workspace.userThirdParty: other library (${d})`)}let s=i.get("workspace.checkThirdParty"),a=s==="ApplyInMemory";s===!1||s==="Disable"?this.output.warn(`Lua.workspace.checkThirdParty = ${s}`):this.output.info(`Lua.workspace.checkThirdParty = ${s}`);let u=i.get("workspace.library");if(!u)this.output.warn("Lua.workspace.library not present!");else{let l=ct.file(await e.dataPath()).fsPath;u.includes(l)?this.output.info(`Lua.workspace.library: /data link OK (${l})`):this.output.warn(`Lua.workspace.library: /data link missing! (${l})`);let f=yt.joinPath(r,"sumneko-3rd/factorio/library").fsPath,d=u.find(m=>ct.file(m).fsPath===f);d?this.output.info(`Lua.workspace.library: workspace library link OK (${d})`):a||this.output.warn(`Lua.workspace.library: workspace library link missing! (${f})`);let h=u.filter(m=>![l,d].includes(m));for(let m of h)m.match(/justarandomgeek\.factoriomod\-debug[\\\/]sumneko\-3rd[\\\/]factorio[\\\/]library$/)?this.output.warn(`Lua.workspace.library: stale workspace link? (${m})`):m.endsWith("data")?this.output.warn(`Lua.workspace.library: stale data link? (${m})`):this.output.info(`Lua.workspace.library: other library (${m})`)}let c=i.get("runtime.plugin");if(!c)a||this.output.warn("Lua.runtime.plugin not present!");else{let l=yt.joinPath(r,"sumneko-3rd/factorio/plugin.lua").fsPath.replace(/[\\]/g,"/");c===l?this.output.info(`Lua.runtime.plugin: OK (${c})`):this.output.warn(`Lua.runtime.plugin: wrong plugin? (${c})`)}}async disablePrototypeCacheCommand(){return(await this.getActiveVersion())?.disablePrototypeCache()}async disableMouseAutoCaptureCommand(){return(await this.getActiveVersion())?.disableMouseAutoCapture()}async selectVersionCommand(){if(Ne.debug.activeDebugSession?.type==="factoriomod"){Ne.window.showInformationMessage("Cannot select Factorio version while debugging.");return}let e=Ne.workspace.getConfiguration("factorio"),r=e.get("versions",[]),n=r.map(c=>c.factorioPath),i=(await Promise.all(yEe.filter(c=>!n.includes(c.factorioPath)).map(async c=>{try{return(await Fa.stat(ct.file(Bu(c.factorioPath,Ne.workspace.workspaceFolders)))).type&Ne.FileType.File?c:void 0}catch{return}}))).filter(c=>!!c),o=await Ne.window.showQuickPick(Promise.all([...r.map(async c=>({fv:c,label:c.name,description:(await this.tryJsonDocs(c))?.application_version,detail:c.factorioPath,picked:c.active})),...i.map(async c=>({fv:c,label:`${c.name} (autodetected)`,description:(await this.tryJsonDocs(c))?.application_version,detail:c.factorioPath})),{fv:void 0,label:"Select other version..."}]),{title:"Select Factorio Version"});if(!o)return;let s=o.fv;if(s){let c=!1;try{(await Fa.stat(ct.file(Bu(s.factorioPath,Ne.workspace.workspaceFolders)))).type&Ne.FileType.File&&(c=!0)}catch{}if(!c)switch(await Ne.window.showErrorMessage("The selected factorio version is no longer present at the specified location","Remove from settings","Cancel")){case"Remove from settings":e.update("versions",r.filter(f=>f!==s));return;default:return}}if(!s){let c=await Ne.window.showOpenDialog({canSelectFiles:!0,canSelectFolders:!1,openLabel:"Select Factorio binary",filters:dR.platform()==="win32"?{"":["exe"]}:void 0});if(!c)return;let l=await Ne.window.showInputBox({prompt:"Display Name for this version",placeHolder:"Enter a display name to be used in the Version Selector for this version"});if(!l)return;s={name:l,factorioPath:c[0].fsPath}}let a;try{a=await this.tryJsonDocs(s,!0)}catch(c){if(await Ne.window.showErrorMessage(`Unable to read JSON docs: ${c}`,"Select alternate location","Cancel")!=="Select alternate location")return;let l=await Ne.window.showOpenDialog({canSelectFiles:!0,canSelectFolders:!1,openLabel:"Select Runtime JSON Docs",title:"Select Runtime JSON Docs",filters:{"JSON Docs":["json"]}});if(!l)return;s.docsPath=MU.relative(Bu(s.factorioPath,Ne.workspace.workspaceFolders),l[0].fsPath);try{a=await this.tryJsonDocs(s,!0)}catch(f){Ne.window.showErrorMessage(`Unable to read JSON docs: ${f}`);return}}r.includes(s)||r.push(s),r.forEach(c=>delete c.active),s.active=!0,e.update("versions",r),this.bar.text=`Factorio ${a.application_version} (${s.name})`;let u=this._active_version;this._active_version=new Il(Ne.workspace.fs,s,a,Ne.workspace.workspaceFolders),this.output.info(`Active Factorio version: ${s.name} (${a.application_version})`),await this.generateDocs(u)}async getActiveVersion(){return this._active_version||await this.selectVersionCommand(),this._active_version}async tryJsonDocs(e,r){let n=yt.joinPath(ct.file(Bu(e.factorioPath,Ne.workspace.workspaceFolders)),e.docsPath?e.docsPath:dR.platform()==="darwin"?"../../doc-html/runtime-api.json":"../../../doc-html/runtime-api.json"),i=await Ne.workspace.getConfiguration("factorio").get("docs",{});try{return new ql((await Fa.readFile(n)).toString(),i)}catch(o){if(!r)return;throw o}}async checkDocs(){let e=await this.getActiveVersion();if(!e)return;let r=this.context.storageUri;if(r)try{let n=(await Fa.readFile(yt.joinPath(r,"sumneko-3rd/factorio/config.json"))).toString(),i=JSON.parse(n);if(i.factorioVersion!==e.docs.application_version||i.bundleVersion!==$i){this.generateDocs();return}}catch{this.generateDocs();return}}async generateDocs(e){if(!Ne.workspace.getConfiguration("factorio").get("docs.generateDocs",!0))return;let r=await this.getActiveVersion();if(!r)return;let n=this.context.storageUri;if(!n){Ne.window.showErrorMessage("Unable to generate docs: cannot locate workspace library");return}let i=yt.joinPath(n,"sumneko-3rd");await Fa.createDirectory(i);try{await Promise.allSettled([Fa.delete(yt.joinPath(i,"factorio","library"),{recursive:!0}),Fa.delete(yt.joinPath(i,"factorio","factorio-plugin"),{recursive:!0})])}catch{}let o=["sumneko-3rd","-d",r.docsPath];r.docs.api_version===4&&o.push("-p",r.protosPath),await As({close(){},write(D){}},this.context.asAbsolutePath("./dist/fmtk.js"),o,i.fsPath);let s=Ne.workspace.getConfiguration("Lua"),a=s.get("workspace.library",[]),u=(D,...x)=>{if(D){let y=yt.joinPath(D,...x),E=a.indexOf(y.fsPath);E!==-1&&a.splice(E,1)}},c=async(D,...x)=>{try{let y=yt.joinPath(D,...x);!a.includes(y.fsPath)&&(await Fa.stat(y)).type&Ne.FileType.Directory&&a.push(y.fsPath)}catch{}},l=Ne.workspace.getConfiguration("factorio");if(e&&l.get("workspace.manageLibraryDataLinks",!0)){let D=ct.file(await e.dataPath());u(D)}if(await s.update("workspace.library",a),l.get("workspace.manageLibraryDataLinks",!0)){let D=ct.file(await r.dataPath());await c(D)}await s.update("workspace.library",a);let f=s.get("workspace.userThirdParty",[]),d=!1,h=yt.joinPath(n,"sumneko-3rd").fsPath;f.includes(h)||(f.push(h),d=!0),await s.update("workspace.checkThirdParty","ApplyInMemory"),await s.update("workspace.userThirdParty",f);let m=s.get("workspace.checkThirdParty");m&&["Ask","Apply","ApplyInMemory"].includes(m)||await s.update("workspace.checkThirdParty","ApplyInMemory");let v=Ne.extensions.getExtension("sumneko.lua");v&&(v.isActive?d&&await Ne.window.showInformationMessage("Lua Language Server is already running and may not notice the newly-installed library bundle. Reload VSCode to force it to re-check.","Reload Now","Reload Later")==="Reload Now"&&Ne.commands.executeCommand("workbench.action.reloadWindow"):await v.activate())}}});var BU=g((Qxt,xEe)=>{xEe.exports=`<!DOCTYPE html>\r
|
|
125
|
+
`+r.slice(i.index+i[0].length)}await this.fs.writeFile(e,Buffer.from(r)),this.iniData=xg.parse(r)}async defaultModsPath(){let e=(await this.configIni())?.path?.["write-data"];if(!e)throw"path.write-data missing in config.ini";return Ht.posix.normalize(Ht.resolve(this.translatePath(e),"mods"))}async dataPath(){let e=(await this.configIni().catch(()=>({path:{["read-data"]:"__PATH__executable__/../../data"}}))).path?.["read-data"];if(!e)throw"path.read-data missing in config.ini";return Ht.posix.normalize(this.translatePath(e))}async lualibPath(){return Ht.posix.normalize(Ht.resolve(await this.dataPath(),"core","lualib"))}async writeDataPath(){let e=(await this.configIni()).path?.["write-data"];if(!e)throw"path.write-data missing in config.ini";return Ht.posix.normalize(this.translatePath(e))}translatePath(e){if(e.startsWith("__PATH__executable__"))return Ht.join(Ht.dirname(this.factorioPath),e.replace("__PATH__executable__",""));if(e.startsWith("__PATH__system-write-data__")){let r=Wi.platform()==="win32"?Ht.resolve(process.env.APPDATA,"Factorio"):Wi.platform()==="linux"?Ht.resolve(Wi.homedir(),".factorio"):Wi.platform()==="darwin"?Ht.resolve(Wi.homedir(),"Library/Application Support/factorio"):"??";return Ht.join(r,e.replace("__PATH__system-write-data__",""))}if(e.startsWith("__PATH__system-read-data__")){let r=Wi.platform()==="linux"?"/usr/share/factorio":Wi.platform()==="darwin"?Ht.resolve(Ht.dirname(this.factorioPath),"../data"):Ht.resolve(Ht.dirname(this.factorioPath),"../../data");return Ht.join(r,e.replace("__PATH__system-read-data__",""))}return e}is(e){let r=this.fv;return r.name===e.name&&r.factorioPath===e.factorioPath&&r.nativeDebugger===e.nativeDebugger&&r.docsPath===e.docsPath&&r.protosPath===e.protosPath&&r.configPath===e.configPath}}});var Ne,dR,MU,Fa,yEe,qx,jU=I(()=>{"use strict";Ne=re(require("vscode")),dR=re(require("os")),MU=re(require("path"));Ea();Fx();fR();sR();Rl();Fa=Ne.workspace.fs,yEe=[{name:"Steam",factorioPath:"C:\\Program Files (x86)\\Steam\\steamapps\\common\\Factorio\\bin\\x64\\factorio.exe"},{name:"System",factorioPath:"C:\\Program Files\\Factorio\\bin\\x64\\factorio.exe"},{name:"Steam",factorioPath:"~/Library/Application Support/Steam/steamapps/common/Factorio/factorio.app/Contents/MacOS/factorio"},{name:"System",factorioPath:"/Applications/factorio.app/Contents/MacOS/factorio"},{name:"Home",factorioPath:"~/.factorio/bin/x64/factorio"}],qx=class{constructor(e,r){this.context=e;this.output=r;this.bar=Ne.window.createStatusBarItem("factorio-version",Ne.StatusBarAlignment.Left,10),this.bar.name="Factorio Version Selector",this.bar.text="Factorio (unselected)",this.bar.command="factorio.selectVersion",this.bar.show(),e.subscriptions.push(this.bar),e.subscriptions.push(Ne.commands.registerCommand("factorio.selectVersion",this.selectVersionCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.checkConfig",this.checkConfigCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.disablePrototypeCache",this.disablePrototypeCacheCommand,this)),e.subscriptions.push(Ne.commands.registerCommand("factorio.disableMouseAutoCapture",this.disableMouseAutoCaptureCommand,this)),this.loadActiveVersion(),e.subscriptions.push(Ne.workspace.onDidChangeConfiguration(n=>{n.affectsConfiguration("factorio.versions")&&this.loadActiveVersion()}))}async loadActiveVersion(){let e=Ne.workspace.getConfiguration("factorio"),r=e.get("versions",[]),n=r.find(o=>o.active);if(!n||this._active_version&&this._active_version.is(n))return;let i=await this.tryJsonDocs(n);if(!i){delete n.active,e.update("versions",r);return}this.bar.text=`Factorio ${i.application_version} (${n.name})`,this._active_version=new Il(Ne.workspace.fs,n,i,Ne.workspace.workspaceFolders),this.output.info(`Active Factorio version: ${n.name} (${i.application_version})`),this.checkDocs()}async checkConfigCommand(){this.output.info("Check Config:"),this.output.show();let e=await this.getActiveVersion();if(!e){this.output.error("No Active Factorio Version");return}this.output.info(`Active Factorio Version: ${e.docs.application_version}`),await e.isPrototypeCacheEnabled()&&this.output.warn("Prototype Cache is enabled!"),await e.isMouseAutoCaptureDisabled()&&this.output.info("Mouse Auto Capture is disabled");let r=this.context.storageUri;if(!r){this.output.error("No Workspace");return}try{let l=(await Fa.readFile(yt.joinPath(r,"sumneko-3rd/factorio/config.json"))).toString(),f=JSON.parse(l);this.output.info(`Library bundle OK in ${r.fsPath}, generated from Factorio ${f.factorioVersion} with FMTK ${f.bundleVersion}`)}catch{this.output.error("Missing or damaged library bundle")}let n=Ne.extensions.getExtension("sumneko.lua");if(!n){this.output.warn("LuaLS (sumneko.lua) not present!");return}this.output.info(`LuaLS ${n.packageJSON.version} ${n.isActive?"Activated":"Not Yet Activated"}`);let i=Ne.workspace.getConfiguration("Lua"),o=i.get("workspace.userThirdParty");if(!o)this.output.warn("Lua.workspace.userThirdParty not present!");else{let l=yt.joinPath(r,"sumneko-3rd").fsPath;o.includes(l)?this.output.info(`Lua.workspace.userThirdParty: workspace link OK (${l})`):this.output.warn(`Lua.workspace.userThirdParty: workspace link missing! (${l})`);let f=o.filter(d=>d!==l);for(let d of f)d.match(/justarandomgeek\.factoriomod\-debug[\\\/]sumneko\-3rd$/)?this.output.warn(`Lua.workspace.userThirdParty: stale workspace link? (${d})`):this.output.info(`Lua.workspace.userThirdParty: other library (${d})`)}let s=i.get("workspace.checkThirdParty"),a=s==="ApplyInMemory";s===!1||s==="Disable"?this.output.warn(`Lua.workspace.checkThirdParty = ${s}`):this.output.info(`Lua.workspace.checkThirdParty = ${s}`);let u=i.get("workspace.library");if(!u)this.output.warn("Lua.workspace.library not present!");else{let l=ct.file(await e.dataPath()).fsPath;u.includes(l)?this.output.info(`Lua.workspace.library: /data link OK (${l})`):this.output.warn(`Lua.workspace.library: /data link missing! (${l})`);let f=yt.joinPath(r,"sumneko-3rd/factorio/library").fsPath,d=u.find(m=>ct.file(m).fsPath===f);d?this.output.info(`Lua.workspace.library: workspace library link OK (${d})`):a||this.output.warn(`Lua.workspace.library: workspace library link missing! (${f})`);let h=u.filter(m=>![l,d].includes(m));for(let m of h)m.match(/justarandomgeek\.factoriomod\-debug[\\\/]sumneko\-3rd[\\\/]factorio[\\\/]library$/)?this.output.warn(`Lua.workspace.library: stale workspace link? (${m})`):m.endsWith("data")?this.output.warn(`Lua.workspace.library: stale data link? (${m})`):this.output.info(`Lua.workspace.library: other library (${m})`)}let c=i.get("runtime.plugin");if(!c)a||this.output.warn("Lua.runtime.plugin not present!");else{let l=yt.joinPath(r,"sumneko-3rd/factorio/plugin.lua").fsPath.replace(/[\\]/g,"/");c===l?this.output.info(`Lua.runtime.plugin: OK (${c})`):this.output.warn(`Lua.runtime.plugin: wrong plugin? (${c})`)}}async disablePrototypeCacheCommand(){return(await this.getActiveVersion())?.disablePrototypeCache()}async disableMouseAutoCaptureCommand(){return(await this.getActiveVersion())?.disableMouseAutoCapture()}async selectVersionCommand(){if(Ne.debug.activeDebugSession?.type==="factoriomod"){Ne.window.showInformationMessage("Cannot select Factorio version while debugging.");return}let e=Ne.workspace.getConfiguration("factorio"),r=e.get("versions",[]),n=r.map(c=>c.factorioPath),i=(await Promise.all(yEe.filter(c=>!n.includes(c.factorioPath)).map(async c=>{try{return(await Fa.stat(ct.file(Bu(c.factorioPath,Ne.workspace.workspaceFolders)))).type&Ne.FileType.File?c:void 0}catch{return}}))).filter(c=>!!c),o=await Ne.window.showQuickPick(Promise.all([...r.map(async c=>({fv:c,label:c.name,description:(await this.tryJsonDocs(c))?.application_version,detail:c.factorioPath,picked:c.active})),...i.map(async c=>({fv:c,label:`${c.name} (autodetected)`,description:(await this.tryJsonDocs(c))?.application_version,detail:c.factorioPath})),{fv:void 0,label:"Select other version..."}]),{title:"Select Factorio Version"});if(!o)return;let s=o.fv;if(s){let c=!1;try{(await Fa.stat(ct.file(Bu(s.factorioPath,Ne.workspace.workspaceFolders)))).type&Ne.FileType.File&&(c=!0)}catch{}if(!c)switch(await Ne.window.showErrorMessage("The selected factorio version is no longer present at the specified location","Remove from settings","Cancel")){case"Remove from settings":e.update("versions",r.filter(f=>f!==s));return;default:return}}if(!s){let c=await Ne.window.showOpenDialog({canSelectFiles:!0,canSelectFolders:!1,openLabel:"Select Factorio binary",filters:dR.platform()==="win32"?{"":["exe"]}:void 0});if(!c)return;let l=await Ne.window.showInputBox({prompt:"Display Name for this version",placeHolder:"Enter a display name to be used in the Version Selector for this version"});if(!l)return;s={name:l,factorioPath:c[0].fsPath}}let a;try{a=await this.tryJsonDocs(s,!0)}catch(c){if(await Ne.window.showErrorMessage(`Unable to read JSON docs: ${c}`,"Select alternate location","Cancel")!=="Select alternate location")return;let l=await Ne.window.showOpenDialog({canSelectFiles:!0,canSelectFolders:!1,openLabel:"Select Runtime JSON Docs",title:"Select Runtime JSON Docs",filters:{"JSON Docs":["json"]}});if(!l)return;s.docsPath=MU.relative(Bu(s.factorioPath,Ne.workspace.workspaceFolders),l[0].fsPath);try{a=await this.tryJsonDocs(s,!0)}catch(f){Ne.window.showErrorMessage(`Unable to read JSON docs: ${f}`);return}}r.includes(s)||r.push(s),r.forEach(c=>delete c.active),s.active=!0,e.update("versions",r),this.bar.text=`Factorio ${a.application_version} (${s.name})`;let u=this._active_version;this._active_version=new Il(Ne.workspace.fs,s,a,Ne.workspace.workspaceFolders),this.output.info(`Active Factorio version: ${s.name} (${a.application_version})`),await this.generateDocs(u)}async getActiveVersion(){return this._active_version||await this.selectVersionCommand(),this._active_version}async tryJsonDocs(e,r){let n=yt.joinPath(ct.file(Bu(e.factorioPath,Ne.workspace.workspaceFolders)),e.docsPath?e.docsPath:dR.platform()==="darwin"?"../../doc-html/runtime-api.json":"../../../doc-html/runtime-api.json"),i=await Ne.workspace.getConfiguration("factorio").get("docs",{});try{return new ql((await Fa.readFile(n)).toString(),i)}catch(o){if(!r)return;throw o}}async checkDocs(){let e=await this.getActiveVersion();if(!e)return;let r=this.context.storageUri;if(r)try{let n=(await Fa.readFile(yt.joinPath(r,"sumneko-3rd/factorio/config.json"))).toString(),i=JSON.parse(n);if(i.factorioVersion!==e.docs.application_version||i.bundleVersion!==$i){this.generateDocs();return}}catch{this.generateDocs();return}}async generateDocs(e){if(!Ne.workspace.getConfiguration("factorio").get("docs.generateDocs",!0))return;let r=await this.getActiveVersion();if(!r)return;let n=this.context.storageUri;if(!n){Ne.window.showErrorMessage("Unable to generate docs: cannot locate workspace library");return}let i=yt.joinPath(n,"sumneko-3rd");await Fa.createDirectory(i);try{await Promise.allSettled([Fa.delete(yt.joinPath(i,"factorio","library"),{recursive:!0}),Fa.delete(yt.joinPath(i,"factorio","factorio-plugin"),{recursive:!0})])}catch{}let o=["sumneko-3rd","-d",r.docsPath];r.docs.api_version===4&&o.push("-p",r.protosPath),await As({close(){},write(D){}},this.context.asAbsolutePath("./dist/fmtk.js"),o,i.fsPath);let s=Ne.workspace.getConfiguration("Lua"),a=s.get("workspace.library",[]),u=(D,...x)=>{if(D){let y=yt.joinPath(D,...x),E=a.indexOf(y.fsPath);E!==-1&&a.splice(E,1)}},c=async(D,...x)=>{try{let y=yt.joinPath(D,...x);!a.includes(y.fsPath)&&(await Fa.stat(y)).type&Ne.FileType.Directory&&a.push(y.fsPath)}catch{}},l=Ne.workspace.getConfiguration("factorio");if(e&&l.get("workspace.manageLibraryDataLinks",!0)){let D=ct.file(await e.dataPath());u(D)}if(await s.update("workspace.library",a),l.get("workspace.manageLibraryDataLinks",!0)){let D=ct.file(await r.dataPath());await c(D)}await s.update("workspace.library",a);let f=s.get("workspace.userThirdParty",[]),d=!1,h=yt.joinPath(n,"sumneko-3rd").fsPath;f.includes(h)||(f.push(h),d=!0),await s.update("workspace.userThirdParty",f);let m=s.get("workspace.checkThirdParty");m&&["Ask","Apply","ApplyInMemory"].includes(m)||await s.update("workspace.checkThirdParty","ApplyInMemory");let v=Ne.extensions.getExtension("sumneko.lua");v&&(v.isActive?d&&await Ne.window.showInformationMessage("Lua Language Server is already running and may not notice the newly-installed library bundle. Reload VSCode to force it to re-check.","Reload Now","Reload Later")==="Reload Now"&&Ne.commands.executeCommand("workbench.action.reloadWindow"):await v.activate())}}});var BU=g((Qxt,xEe)=>{xEe.exports=`<!DOCTYPE html>\r
|
|
126
126
|
<html lang="en">\r
|
|
127
127
|
<head>\r
|
|
128
128
|
<link rel="stylesheet" type="text/css" href="$Flamegraph.css$">\r
|
|
@@ -473,7 +473,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);if(!(this instanceof sn))r
|
|
|
473
473
|
Date: ${m}`,offset:c.offsetAt(d.selectionRange.end),length:0},s=i(s,[v]),la.writeFile("changelog.txt",s),console.log(`Changelog section ${t.version} stamped ${m}`)}else console.log(`No Changelog section for ${t.version}`)}if(t.package?.scripts?.datestamp){let a=await fa("datestamp",t);a!==0&&process.exit(a)}return!!s}async function Jk(t){if(t.package?.scripts?.compile){let n=await fa("compile",t);n!==0&&process.exit(n)}if(t.package?.scripts?.prepackage){let n=await fa("prepackage",t);n!==0&&process.exit(n)}let e=(await Promise.resolve().then(()=>re($ye()))).default,r=e("zip",{zlib:{level:9}});if(r.glob("**",{cwd:process.cwd(),nodir:!0,ignore:[`**/${t.name}_*.zip`].concat(t.package?.ignore||[])},{prefix:`${t.name}_${t.version}`}),t.package?.extra)for(let n of t.package.extra)r.glob(n.glob??"**",{cwd:n.root,nodir:!0,ignore:n.ignore},{prefix:`${t.name}_${t.version}`});return r}async function O0t(){if(Qk)return Qk;let t=process.env.FACTORIO_UPLOAD_API_KEY;if(t)return Qk=t,t;let{key:e}=await yS.prompt([{message:"Mod Portal API Key:",name:"key",type:"password"}]);if(e)return Qk=e,e;throw new Error("No API Key")}async function Jv(t,e){let r=await O0t(),n=await Au(e,{method:"POST",body:t,headers:new wn({Authorization:`Bearer ${r}`})});if(!n.ok){let i=await n.json();throw new Error(i.message)}return await n.json()}async function Vye(t,e){let r=new ji;return r.append("mod",t),(await Jv(r,e)).upload_url}async function Xk(t,e){console.log("Uploading to mod portal...");let r=await Vye(t,"https://mods.factorio.com/api/v2/mods/releases/init_upload"),n=new ji;n.append("file",new mo([e],{type:"application/x-zip-compressed"}),`${t}.zip`),await Jv(n,r),console.log(`Published ${t}`)}async function A0t(t,e,r){let n=await Vye(t,"https://mods.factorio.com/api/v2/mods/images/add"),i=new ji;return i.append("image",new mo([e],{type:(0,zye.default)(r)}),r),await Jv(i,n)}async function q0t(t,e){let r=new ji;return r.append("mod",t),r.append("images",e.join(",")),(await Jv(r,"https://mods.factorio.com/api/v2/mods/images/edit")).images}async function I0t(t,e){let r=new ji;r.append("mod",t),e.homepage!==void 0&&r.append("homepage",e.homepage),e.title!==void 0&&r.append("title",e.title),e.summary!==void 0&&r.append("summary",e.summary),e.description!==void 0&&r.append("description",e.description),e.faq!==void 0&&r.append("faq",e.faq),await Jv(r,"https://mods.factorio.com/api/v2/mods/edit_details").then(()=>{console.log("Details updated")}).catch(n=>{console.log(`Details update failed: ${n}`)})}async function Gye(t,e,r,n){let i=await la.readFile(t).catch(()=>{});if(!i)return;let o=Wye.createHash("sha1").update(i).digest("hex");n.add(o);let s=r.find(u=>u.id===o);if(s)return s;let a=await A0t(e,i,N7.default.basename(t));return r.push(a),a}async function Uye(t,e,r,n,i){let o=new Date().toISOString(),s=await la.readFile(t,"utf8").catch(()=>{});if(!s)return;let a=new RegExp(i?.url_match??/^((http(s?)|data):|#)/),u=i?.base_url;u&&!u.endsWith("/")&&(u+="/");let c=await XS().use(function(){return async function(l,f){if(i?.strip_first_header??!0){let h=l.children[0];h.type==="heading"&&h.depth===1&&l.children.splice(0,1)}let d=new Map;Mc(l,"image",h=>{let m=d.get(h.url);m?m.push(h):d.set(h.url,[h])});for(let[h,m]of d)if(!h.match(a))switch(i?.images){case"gallery":default:let v=await Gye(N7.default.resolve(f.cwd,h),e,r,n);if(!v)continue;m.forEach(x=>{x.url=v.url});break;case"url":if(!u)continue;let D=u+h;m.forEach(x=>{x.url=D});break}u&&Mc(l,"link",h=>{if(!h.url.match(a)){if(h.url==="$process_date"){h.url=o;return}h.url=u+h.url}})}}).process(s);return String(c)}async function e6(t,e){let r={title:t.title,homepage:t.homepage,summary:t.description},{images:n}=await VP(t.name,!0),i=new Set,o=t.package?.gallery;if(o)for(let u of o){let c=await new Promise((l,f)=>{let d=[],h=(0,Hye.default)(process.cwd(),{pattern:u,nodir:!0});h.on("match",m=>{d.push(m.absolute)}),h.on("error",m=>f(m)),h.on("end",()=>l(d))});await Promise.all(c.sort().map(async l=>Gye(l,t.name,n,i)))}let s=await Uye(e?.readme??t.package?.readme??"readme.md",t.name,n,i,t?.package?.markdown);s&&(r.description=s);let a=await Uye(e?.faq??t.package?.faq??"faq.md",t.name,n,i,t?.package?.markdown);if(a&&(r.faq=a),t.package?.gallery){if(t.package.prune_gallery===!1)for(let u of n)i.add(u.id);console.log("Sorting gallery ..."),await q0t(t.name,Array.from(i))}console.log("Updating details ..."),await I0t(t.name,r)}async function t6(t,e){let r=(await Promise.resolve().then(()=>re(tx()))).default,n=await Promise.resolve().then(()=>(R3(),P3)),{applyEdits:i}=n,o=r.inc(t.version,"patch",{loose:!0}),s=n.modify(e,["version"],o,{});if(await la.writeFile("info.json",i(e,s)),t.version=o,await la.readFile("changelog.txt","utf8").catch(()=>{}).then(async a=>{if(a){let c=a.indexOf(`\r
|
|
474
474
|
`)!==-1?`\r
|
|
475
475
|
`:`
|
|
476
|
-
`;await la.writeFile("changelog.txt",`---------------------------------------------------------------------------------------------------${c}Version: ${o}${c}Date: ????${c} Changes:${c}`+a)}}),t.package?.scripts?.version){let a=await fa("version",t);a!==0&&process.exit(a)}return t}var la,Wye,zye,N7,Hye,Qk,fl=I(()=>{"use strict";la=re(require("fs/promises")),Wye=re(require("crypto")),zye=re(cle());iL();N7=re(require("path"));ES();c3();HP();bx();Hye=re(rv())});var Kye=I(()=>{"use strict";pi();fl();Vt.command("run <script> [args...]").description("Run a script from info.json#/package/scripts").action(async(t,e)=>{process.exit(await fa(t,await cl(),void 0,e))})});var Yye=I(()=>{"use strict";pi();fl();Vt.command("datestamp").description("Datestamp the current changelog section").action(async()=>{let t=await cl();await Zk(t)})});var Qye,Zye=I(()=>{"use strict";Qye=re(require("fs/promises"));pi();fl();Vt.command("version").description("Increment the mod version").action(async()=>{let t=await Qye.readFile("info.json","utf8"),e=JSON.parse(t);await t6(e,t)})});var Jye,Xye=I(()=>{"use strict";Jye=require("fs");pi();Ea();fl();Vt.command("package").description("Build a zip package").option("--outdir <outdir>","","").action(async t=>{let e=await cl(),r=yt.resolvePath(ct.file(process.cwd()),t.outdir,`${e.name}_${e.version}.zip`),n=(0,Jye.createWriteStream)(r.fsPath),i=await Jk(e);i.pipe(n),await i.finalize(),console.log(`Built ${e.name}_${e.version}.zip ${i.pointer()} bytes`)})});var exe,txe,rxe=I(()=>{"use strict";exe=re(require("path")),txe=re(require("fs/promises"));pi();fl();Vt.command("upload <zipname> [name]").description("Upload a zip package to the mod portal").action(async(t,e)=>{if(!e){let n=exe.default.basename(t,".zip").match(/^(.*?)(_(\d+\.){2}\d+)?$/);n&&(e=n[1])}if(!e){console.log("Unable to determine `name`");return}await Xk(e,await txe.readFile(t))})});var nxe=I(()=>{"use strict";pi();fl();Vt.command("details").description("Update mod details").option("--readme <readme.md>").option("--faq <faq.md>").action(async t=>{let e=await cl();return e6(e,t)})});async function L0t(t,e){let r=process.env.FMTK_CONFIG??oxe.default.join(ixe.homedir(),".fmtk","config.json");try{let n=JSON.parse(await rd.readFile(r,"utf8"));if(typeof n!="object"||Array.isArray(n))return;let i={};for(let o in n)o.startsWith(`${t}.`)&&(i[o.substring(t.length+1)]=n[o]);return e||console.log(`Got config section ${t} from ${r}`),i}catch{}}async function Mm(t,e,r){return Object.assign({},...await Promise.all([e,L0t(t,r)]))}var ixe,rd,oxe,$7,r6=I(()=>{"use strict";ixe=re(require("os")),rd=re(require("fs/promises")),oxe=re(require("path")),$7={async readFile(t){return rd.readFile(t.fsPath)},async writeFile(t,e){return rd.writeFile(t.fsPath,e)},async stat(t){let e=await rd.stat(t.fsPath);return{size:e.size,type:(e.isFile()?1:0)|(e.isDirectory()?2:0)|(e.isSymbolicLink()?64:0),ctime:e.ctime.valueOf(),mtime:e.mtime.valueOf()}}}});var sxe,jm,axe,uxe,Xv,cxe=I(()=>{"use strict";sxe=re(require("os")),jm=re(require("fs/promises")),axe=re(require("crypto")),uxe=re(require("path")),Xv=require("child_process");pi();r6();fl();Vt.command("publish").description("Package and publish a mod to the mod portal").action(async()=>{let t=await jm.readFile("info.json","utf8"),e=JSON.parse(t);console.log(`Publishing: ${process.cwd()} ${e.version}`);let r=await Mm("package",{preparingCommitMessage:"preparing release of version $VERSION",movedToCommitMessage:"moved to version $VERSION",autoCommitAuthor:"compilatron <compilatron@justarandomgeek.com>",tagName:"$VERSION",tagMessage:void 0}),n=await new Promise(c=>{(0,Xv.exec)("git status --porcelain",(l,f,d)=>{l&&l.code!==0&&c(void 0),f&&c("HasChanges"),c("OK")})}),i;if(n){if(n==="HasChanges"){console.log("Cannot Publish with uncommitted changes");return}i=await new Promise((l,f)=>{(0,Xv.exec)("git branch --show-current",(d,h)=>{d&&d.code!==0&&f(d),l(h.trim())})});let c=e.package?.git_publish_branch;switch(c){case null:break;case void 0:c=await new Promise((l,f)=>{(0,Xv.exec)("git config init.defaultBranch",(d,h)=>{d&&d.code!==0&&f(d),l(h.trim())})});default:c!==i&&(console.log(`Cannot Publish on branch other than '${c}', currently on '${i}'`),process.exit(1));break}}else console.log("No git repo found, skipping git subtasks...");if(e.package?.scripts?.prepublish){let c=await fa("prepublish",e);c!==0&&process.exit(c)}let o=await Zk(e),s;if(n&&(o&&await ll("add changelog.txt"),await ll(`commit --author "${r.autoCommitAuthor}" --allow-empty -F -`,r.preparingCommitMessage.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name)),!e.package?.no_git_tag)){s=r.tagName.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name);let c=r.tagMessage?.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name);await ll(`tag -a ${s} -F -`,c??"")}let a=await new Promise(async(c,l)=>{let f=await Jk(e),d=[];f.on("data",h=>d.push(Buffer.from(h))),f.on("error",h=>l(h)),f.on("end",()=>c(Buffer.concat(d))),await f.finalize()});if(e.package?.scripts?.publish){let c=await fa("publish",e);c!==0&&process.exit(c)}if(e.package?.no_portal_upload||(await Xk(e.name,a),e.package?.sync_portal_details&&await e6(e)),e.package?.scripts?.postpublish){let c=uxe.default.join(sxe.tmpdir(),`${axe.randomBytes(16).toString("base64url")}.zip`);await jm.writeFile(c,a);let l=await fa("postpublish",e,{FACTORIO_MODPACKAGE:c});await jm.unlink(c),l!==0&&process.exit(l)}let u=await t6(e,t);if(n&&(await ll("add info.json"),o&&await ll("add changelog.txt"),await ll(`commit --author "${r.autoCommitAuthor}" -F -`,r.movedToCommitMessage.replace(/\$VERSION/g,u.version).replace(/\$MODNAME/g,u.name)),!e.package?.no_git_push)){let c=await new Promise(l=>{(0,Xv.exec)(`git config branch.${i}.remote`,(f,d)=>{f&&f.code!==0&&l(void 0),l(d.trim())})});c?await ll(`push ${c} ${i} ${s??""}`):console.log(`no remote set as upstream on ${i}`)}})});var n6,lxe=I(()=>{"use strict";aR();n6=class{constructor(e,r){this.type_prefix="data.";if(this.docs=JSON.parse(e),this.docs.application!=="factorio")throw`Unknown application: ${this.docs.application}`;if(this.docs.api_version!==4)throw`Unsupported JSON Version ${this.docs.api_version}`;if(this.docs.stage!=="prototype")throw`Wrong stage: ${this.docs.stage}`;this.concepts=new Map(this.docs.types.map(n=>[n.name,n])),this.simple_structs=new Set;for(let[n,i]of this.concepts)typeof i.type=="object"&&i.type.complex_type==="struct"&&this.simple_structs.add(n);this.prototypes=new Map(this.docs.prototypes.map(n=>[n.name,n]))}get api_version(){return this.docs.api_version}get stage(){return this.docs.stage}get application(){return this.docs.application}get application_version(){return this.docs.application_version}resolve_link(e,r){if(r=r?`#${r}`:"",["prototypes","types"].includes(e))return`/${e}.html${r}`;if(this.concepts.has(e))return`/types/${e}.html${r}`;if(this.prototypes.has(e))return`/prototypes/${e}.html${r}`;console.warn(`Invalid Link: prototype:${e}${r}`)}generate_LuaLS_docs(e){return[this.generate_LuaLS_concepts(e),this.generate_LuaLS_prototypes(e),this.generate_LuaLS_data(e)]}async generate_LuaLS_concepts(e){let r=new Ui("prototype-api/concepts",this.application_version);for(let[n,i]of this.concepts){if(i.type==="builtin")continue;let o=this.simple_structs.has(i.name),s=o?"":".struct";if(i.properties){let a=new En(this.type_prefix+i.name+s);a.description=await e(i.description,{scope:"prototype",member:i.name}),i.parent&&(a.parents=[new _t(this.type_prefix+i.parent+s)]);for(let u of i.properties)a.add(new Hr(u.name,this.lua_proto_type(u.type),await e(u.description,{scope:"prototype",member:i.name,part:u.name}),u.optional));r.add(a)}o||r.add(new Ta(this.type_prefix+i.name,this.lua_proto_type(i.type,i),i.description))}return r}generate_LuaLS_data(e){let r=new Ui("prototype-api/data",this.application_version),n=new En("data");n.add(new Hr("raw",new _t("data.raw"))),n.add(new Hr("is_demo",new _t("boolean")));let i=new Ls("extend",[new vo("self",new _t("data")),new vo("otherdata",new Al(new _t("data.AnyPrototype")))]);n.add(i),n.global_name="data",r.add(n);let o=new En("data.raw");r.add(o);for(let[s,a]of this.prototypes)a.typename&&o.add(new Hr(new Is(a.typename),new Lu(new _t("string"),new _t(this.type_prefix+a.name))));return r}async generate_LuaLS_prototypes(e){let r=new Ui("prototype-api/prototypes",this.application_version);for(let[n,i]of this.prototypes){let o=new En(this.type_prefix+i.name);o.description=await e(i.description,{scope:"prototype",member:i.name}),i.parent&&(o.parents=[new _t(this.type_prefix+i.parent)]);for(let s of i.properties)o.add(new Hr(s.name,this.lua_proto_type(s.type),await e(s.description,{scope:"prototype",member:i.name,part:s.name}),s.optional)),s.alt_name&&o.add(new Hr(s.alt_name,this.lua_proto_type(s.type),await e(s.description,{scope:"prototype",member:i.name,part:s.alt_name}),s.optional));if(i.custom_properties){let s=i.custom_properties;o.add(new Hr(this.lua_proto_type(s.key_type),this.lua_proto_type(s.value_type),await e(s.description,{scope:"prototype",member:i.name,part:"custom_properties"})))}r.add(o)}return r}lua_proto_type(e,r){switch(typeof e){case"string":switch(e){case"bool":return new _t("boolean");case"boolean":case"string":case"float":case"double":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":case"int64":case"uint64":return new _t(e)}return new _t(this.type_prefix+e);case"object":switch(e.complex_type){case"struct":if(!r)throw new Error("struct without parent");return this.simple_structs.has(r.name)?new _t(this.type_prefix+r.name):new _t(this.type_prefix+r.name+".struct");case"array":return new Al(this.lua_proto_type(e.value,r));case"tuple":return new Cx(e.values.map(n=>this.lua_proto_type(n,r)));case"dictionary":return new Lu(this.lua_proto_type(e.key,r),this.lua_proto_type(e.value,r));case"union":return new Mu(e.options.map(n=>this.lua_proto_type(n,r)));case"literal":return new Is(e.value);case"type":return this.lua_proto_type(e.value,r);default:throw new Error("Invalid Type")}default:throw new Error("Invalid Type")}}}});var U7={};pt(U7,{default:()=>j0t});var j0t,fxe=I(()=>{j0t=`--##
|
|
476
|
+
`;await la.writeFile("changelog.txt",`---------------------------------------------------------------------------------------------------${c}Version: ${o}${c}Date: ????${c} Changes:${c}`+a)}}),t.package?.scripts?.version){let a=await fa("version",t);a!==0&&process.exit(a)}return t}var la,Wye,zye,N7,Hye,Qk,fl=I(()=>{"use strict";la=re(require("fs/promises")),Wye=re(require("crypto")),zye=re(cle());iL();N7=re(require("path"));ES();c3();HP();bx();Hye=re(rv())});var Kye=I(()=>{"use strict";pi();fl();Vt.command("run <script> [args...]").description("Run a script from info.json#/package/scripts").action(async(t,e)=>{process.exit(await fa(t,await cl(),void 0,e))})});var Yye=I(()=>{"use strict";pi();fl();Vt.command("datestamp").description("Datestamp the current changelog section").action(async()=>{let t=await cl();await Zk(t)})});var Qye,Zye=I(()=>{"use strict";Qye=re(require("fs/promises"));pi();fl();Vt.command("version").description("Increment the mod version").action(async()=>{let t=await Qye.readFile("info.json","utf8"),e=JSON.parse(t);await t6(e,t)})});var Jye,Xye=I(()=>{"use strict";Jye=require("fs");pi();Ea();fl();Vt.command("package").description("Build a zip package").option("--outdir <outdir>","","").action(async t=>{let e=await cl(),r=yt.resolvePath(ct.file(process.cwd()),t.outdir,`${e.name}_${e.version}.zip`),n=(0,Jye.createWriteStream)(r.fsPath),i=await Jk(e);i.pipe(n),await i.finalize(),console.log(`Built ${e.name}_${e.version}.zip ${i.pointer()} bytes`)})});var exe,txe,rxe=I(()=>{"use strict";exe=re(require("path")),txe=re(require("fs/promises"));pi();fl();Vt.command("upload <zipname> [name]").description("Upload a zip package to the mod portal").action(async(t,e)=>{if(!e){let n=exe.default.basename(t,".zip").match(/^(.*?)(_(\d+\.){2}\d+)?$/);n&&(e=n[1])}if(!e){console.log("Unable to determine `name`");return}await Xk(e,await txe.readFile(t))})});var nxe=I(()=>{"use strict";pi();fl();Vt.command("details").description("Update mod details").option("--readme <readme.md>").option("--faq <faq.md>").action(async t=>{let e=await cl();return e6(e,t)})});async function L0t(t,e){let r=process.env.FMTK_CONFIG??oxe.default.join(ixe.homedir(),".fmtk","config.json");try{let n=JSON.parse(await rd.readFile(r,"utf8"));if(typeof n!="object"||Array.isArray(n))return;let i={};for(let o in n)o.startsWith(`${t}.`)&&(i[o.substring(t.length+1)]=n[o]);return e||console.log(`Got config section ${t} from ${r}`),i}catch{}}async function Mm(t,e,r){return Object.assign({},...await Promise.all([e,L0t(t,r)]))}var ixe,rd,oxe,$7,r6=I(()=>{"use strict";ixe=re(require("os")),rd=re(require("fs/promises")),oxe=re(require("path")),$7={async readFile(t){return rd.readFile(t.fsPath)},async writeFile(t,e){return rd.writeFile(t.fsPath,e)},async stat(t){let e=await rd.stat(t.fsPath);return{size:e.size,type:(e.isFile()?1:0)|(e.isDirectory()?2:0)|(e.isSymbolicLink()?64:0),ctime:e.ctime.valueOf(),mtime:e.mtime.valueOf()}}}});var sxe,jm,axe,uxe,Xv,cxe=I(()=>{"use strict";sxe=re(require("os")),jm=re(require("fs/promises")),axe=re(require("crypto")),uxe=re(require("path")),Xv=require("child_process");pi();r6();fl();Vt.command("publish").description("Package and publish a mod to the mod portal").action(async()=>{let t=await jm.readFile("info.json","utf8"),e=JSON.parse(t);console.log(`Publishing: ${process.cwd()} ${e.version}`);let r=await Mm("package",{preparingCommitMessage:"preparing release of version $VERSION",movedToCommitMessage:"moved to version $VERSION",autoCommitAuthor:"compilatron <compilatron@justarandomgeek.com>",tagName:"$VERSION",tagMessage:void 0}),n=await new Promise(c=>{(0,Xv.exec)("git status --porcelain",(l,f,d)=>{l&&l.code!==0&&c(void 0),f&&c("HasChanges"),c("OK")})}),i;if(n){if(n==="HasChanges"){console.log("Cannot Publish with uncommitted changes");return}i=await new Promise((l,f)=>{(0,Xv.exec)("git branch --show-current",(d,h)=>{d&&d.code!==0&&f(d),l(h.trim())})});let c=e.package?.git_publish_branch;switch(c){case null:break;case void 0:c=await new Promise((l,f)=>{(0,Xv.exec)("git config init.defaultBranch",(d,h)=>{d&&d.code!==0&&f(d),l(h.trim())})});default:c!==i&&(console.log(`Cannot Publish on branch other than '${c}', currently on '${i}'`),process.exit(1));break}}else console.log("No git repo found, skipping git subtasks...");if(e.package?.scripts?.prepublish){let c=await fa("prepublish",e);c!==0&&process.exit(c)}let o=await Zk(e),s;if(n&&(o&&await ll("add changelog.txt"),await ll(`commit --author "${r.autoCommitAuthor}" --allow-empty -F -`,r.preparingCommitMessage.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name)),!e.package?.no_git_tag)){s=r.tagName.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name);let c=r.tagMessage?.replace(/\$VERSION/g,e.version).replace(/\$MODNAME/g,e.name);await ll(`tag -a ${s} -F -`,c??"")}let a=await new Promise(async(c,l)=>{let f=await Jk(e),d=[];f.on("data",h=>d.push(Buffer.from(h))),f.on("error",h=>l(h)),f.on("end",()=>c(Buffer.concat(d))),await f.finalize()});if(e.package?.scripts?.publish){let c=await fa("publish",e);c!==0&&process.exit(c)}if(e.package?.no_portal_upload||(await Xk(e.name,a),e.package?.sync_portal_details&&await e6(e)),e.package?.scripts?.postpublish){let c=uxe.default.join(sxe.tmpdir(),`${axe.randomBytes(16).toString("base64url")}.zip`);await jm.writeFile(c,a);let l=await fa("postpublish",e,{FACTORIO_MODPACKAGE:c});await jm.unlink(c),l!==0&&process.exit(l)}let u=await t6(e,t);if(n&&(await ll("add info.json"),o&&await ll("add changelog.txt"),await ll(`commit --author "${r.autoCommitAuthor}" -F -`,r.movedToCommitMessage.replace(/\$VERSION/g,u.version).replace(/\$MODNAME/g,u.name)),!e.package?.no_git_push)){let c=await new Promise(l=>{(0,Xv.exec)(`git config branch.${i}.remote`,(f,d)=>{f&&f.code!==0&&l(void 0),l(d.trim())})});c?await ll(`push ${c} ${i} ${s??""}`):console.log(`no remote set as upstream on ${i}`)}})});var n6,lxe=I(()=>{"use strict";aR();n6=class{constructor(e,r){this.type_prefix="data.";if(this.docs=JSON.parse(e),this.docs.application!=="factorio")throw`Unknown application: ${this.docs.application}`;if(this.docs.api_version!==4)throw`Unsupported JSON Version ${this.docs.api_version}`;if(this.docs.stage!=="prototype")throw`Wrong stage: ${this.docs.stage}`;this.concepts=new Map(this.docs.types.map(n=>[n.name,n])),this.simple_structs=new Set;for(let[n,i]of this.concepts)typeof i.type=="object"&&i.type.complex_type==="struct"&&this.simple_structs.add(n);this.prototypes=new Map(this.docs.prototypes.map(n=>[n.name,n]))}get api_version(){return this.docs.api_version}get stage(){return this.docs.stage}get application(){return this.docs.application}get application_version(){return this.docs.application_version}resolve_link(e,r){if(r=r?`#${r}`:"",["prototypes","types"].includes(e))return`/${e}.html${r}`;if(this.concepts.has(e))return`/types/${e}.html${r}`;if(this.prototypes.has(e))return`/prototypes/${e}.html${r}`;console.warn(`Invalid Link: prototype:${e}${r}`)}generate_LuaLS_docs(e){return[this.generate_LuaLS_concepts(e),this.generate_LuaLS_prototypes(e),this.generate_LuaLS_data(e)]}async generate_LuaLS_concepts(e){let r=new Ui("prototype-api/concepts",this.application_version);for(let[n,i]of this.concepts){if(i.type==="builtin")continue;let o=this.simple_structs.has(i.name),s=o?"":".struct";if(i.properties){let a=new En(this.type_prefix+i.name+s);a.description=await e(i.description,{scope:"prototype",member:i.name}),i.parent&&(a.parents=[new _t(this.type_prefix+i.parent+s)]);for(let u of i.properties)a.add(new Hr(u.name,this.lua_proto_type(u.type),await e(u.description,{scope:"prototype",member:i.name,part:u.name}),u.optional));r.add(a)}if(!o){let a=i.type;i.name==="AnyPrototype"&&typeof a=="object"&&a.complex_type==="union"&&(a={complex_type:"union",options:a.options.filter(c=>typeof c=="object"?!(c.complex_type==="type"&&c.value==="MapGenPresets"):c!=="MapGenPresets")}),r.add(new Ta(this.type_prefix+i.name,this.lua_proto_type(a,i),i.description))}}return r}generate_LuaLS_data(e){let r=new Ui("prototype-api/data",this.application_version),n=new En("data");n.add(new Hr("raw",new _t("data.raw"))),n.add(new Hr("is_demo",new _t("boolean")));let i=this.concepts.has("AnyPrototype")?"data.AnyPrototype":"data.PrototypeBase",o=new Ls("extend",[new vo("self",new _t("data")),new vo("otherdata",new Al(new _t(i)))]);n.add(o),n.global_name="data",r.add(n);let s=new En("data.raw");r.add(s);for(let[a,u]of this.prototypes)u.typename&&s.add(new Hr(new Is(u.typename),new Lu(new _t("string"),new _t(this.type_prefix+u.name))));return r}async generate_LuaLS_prototypes(e){let r=new Ui("prototype-api/prototypes",this.application_version);for(let[n,i]of this.prototypes){let o=new En(this.type_prefix+i.name);o.description=await e(i.description,{scope:"prototype",member:i.name}),i.parent&&(o.parents=[new _t(this.type_prefix+i.parent)]);for(let s of i.properties)o.add(new Hr(s.name,this.lua_proto_type(s.type),await e(s.description,{scope:"prototype",member:i.name,part:s.name}),s.optional)),s.alt_name&&o.add(new Hr(s.alt_name,this.lua_proto_type(s.type),await e(s.description,{scope:"prototype",member:i.name,part:s.alt_name}),s.optional));if(i.custom_properties){let s=i.custom_properties;o.add(new Hr(this.lua_proto_type(s.key_type),this.lua_proto_type(s.value_type),await e(s.description,{scope:"prototype",member:i.name,part:"custom_properties"})))}r.add(o)}return r}lua_proto_type(e,r){switch(typeof e){case"string":switch(e){case"bool":return new _t("boolean");case"boolean":case"string":case"float":case"double":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":case"int64":case"uint64":return new _t(e)}return new _t(this.type_prefix+e);case"object":switch(e.complex_type){case"struct":if(!r)throw new Error("struct without parent");return this.simple_structs.has(r.name)?new _t(this.type_prefix+r.name):new _t(this.type_prefix+r.name+".struct");case"array":return new Al(this.lua_proto_type(e.value,r));case"tuple":return new Cx(e.values.map(n=>this.lua_proto_type(n,r)));case"dictionary":return new Lu(this.lua_proto_type(e.key,r),this.lua_proto_type(e.value,r));case"union":return new Mu(e.options.map(n=>this.lua_proto_type(n,r)));case"literal":return new Is(e.value);case"type":return this.lua_proto_type(e.value,r);default:throw new Error("Invalid Type")}default:throw new Error("Invalid Type")}}}});var U7={};pt(U7,{default:()=>j0t});var j0t,fxe=I(()=>{j0t=`--##
|
|
477
477
|
|
|
478
478
|
local util = require("factorio-plugin.util")
|
|
479
479
|
local command_line_module_flag = util.module_flags.command_line
|