@overlayed/app 0.17.1 → 0.17.3
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/dist/index.js
CHANGED
|
@@ -2,4 +2,4 @@ import{createRequire as e}from"node:module";import t from"mitt";import{Type as n
|
|
|
2
2
|
`:`
|
|
3
3
|
`)+n,i=r+1,r=e.indexOf(`
|
|
4
4
|
`,i)}while(r!==-1);return a+=e.slice(i),a}const{stdout:Ve,stderr:He}=Re,S=Symbol(`GENERATOR`),C=Symbol(`STYLER`),w=Symbol(`IS_EMPTY`),Ue=[`ansi`,`ansi`,`ansi256`,`ansi16m`],T=Object.create(null),We=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Ve?Ve.level:0;e.level=t.level===void 0?n:t.level},Ge=e=>{let t=(...e)=>e.join(` `);return We(t,e),Object.setPrototypeOf(t,E.prototype),t};function E(e){return Ge(e)}Object.setPrototypeOf(E.prototype,Function.prototype);for(let[e,t]of Object.entries(v))T[e]={get(){let n=k(this,O(t.open,t.close,this[C]),this[w]);return Object.defineProperty(this,e,{value:n}),n}};T.visible={get(){let e=k(this,this[C],!0);return Object.defineProperty(this,`visible`,{value:e}),e}};const D=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?v[n].ansi16m(...r):t===`ansi256`?v[n].ansi256(v.rgbToAnsi256(...r)):v[n].ansi(v.rgbToAnsi(...r)):e===`hex`?D(`rgb`,t,n,...v.hexToRgb(...r)):v[n][e](...r),Ke=[`rgb`,`hex`,`ansi256`];for(let e of Ke){T[e]={get(){let{level:t}=this;return function(...n){let r=O(D(e,Ue[t],`color`,...n),v.color.close,this[C]);return k(this,r,this[w])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);T[t]={get(){let{level:t}=this;return function(...n){let r=O(D(e,Ue[t],`bgColor`,...n),v.bgColor.close,this[C]);return k(this,r,this[w])}}}}const qe=Object.defineProperties(()=>{},{...T,level:{enumerable:!0,get(){return this[S].level},set(e){this[S].level=e}}}),O=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},k=(e,t,n)=>{let r=(...e)=>Je(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,qe),r[S]=e,r[C]=t,r[w]=n,r},Je=(e,t)=>{if(e.level<=0||!t)return e[w]?``:t;let n=e[C];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=ze(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
5
|
-
`);return a!==-1&&(t=Be(t,i,r,a)),r+t+i};Object.defineProperties(E.prototype,T);const Ye=E();E({level:He?He.level:0});var A=Ye,j=class{emitter;constructor(){this.emitter=t()}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}emit(e,t){this.emitter.emit(e,t)}removeAllListeners(){this.emitter.all.clear()}},Xe=class{listeners;constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)}off(e,t){let n=this.listeners.get(e);n&&n.delete(t)}async emit(e,...t){let n=this.listeners.get(e)||new Set,r=this.listeners.get(`*`)||new Set,i=[...Array.from(n),...Array.from(r)];if(i.length===0)return[];let a=await Promise.all(i.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}));return a}removeAllListeners(){this.listeners.clear()}};function M(e,...t){let n=class extends e{static _instance;static getInstance(){return this._instance||(this._instance=new e(...t)),this._instance}static clearInstance(){this._instance=void 0}};return n}var Ze=class extends j{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}};const N=M(Ze);var Qe=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues){this.reportInvalidConfigFile(t.issues);return}this.data=this.onBeforeSave(e),this.save(e)}get(){return this.data?this.data:this.load()}getKey(e){let t=this.get();return t[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(){if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return this.data=e,e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=r(`string.json.parse`).to(`object`),n=t(e);if(n instanceof r.errors)return this._defaultValue;let i=this._schema[`~standard`].validate(n);if(i instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return i.issues?this.migrate(n,this._defaultValue):this.migrate(i.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]}return n}reportInvalidConfigFile(e){N.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},$e=class e extends j{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`log`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date,r=n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getMilliseconds().toString().padStart(3,`0`)}`,i=t.map(e=>typeof e==`object`?JSON.stringify(e,void 0,2):String(e)).join(` `);return{timestamp:r,level:e,message:i}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=f(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return e.toISOString().split(`T`)[0]}createStream(){let e=f(this.logPath,this.getFileName(this.currentDate));return a(e,{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date;t.setDate(t.getDate()-7);let n=e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let n=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``),r=new Date(n);return r<t});n.forEach(e=>{try{l(f(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${i}\n`;this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}};const P=()=>p.join(process.env.APPDATA??``,`overlayed`),et=()=>p.join(P(),`logs`),tt=e=>p.join(P(),`apps`,e),nt=e=>p.join(tt(e),`logs`);var rt=class{fileLogger;path;appId;messageQueue=new we;fileName;_debug=!1;silent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1){this.appId=e,this._debug=t,this.silent=n,this.path=nt(e),this.fileLogger=new $e(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=`[${e}]`;return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){(!this.silent||this._debug)&&this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:A.red,warn:A.yellow,debug:A.blue,log:A.white};if(!this.silent||this._debug){let{timestamp:r,message:i}=$e.getMessageElements(e,...t),a=console[e],o=n[e];a(`${A.gray(r)} ${o(i)}`)}}};const F=M(rt,`main.log`);var it=class extends ie{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=5,i=new Map,a=new Set,o=new Set,s=[];for(let e=0;e<n;e++)s.push(e);let c=async n=>{let c=n*t,l=Math.min(c+t,this.blob.size),u=this.blob.slice(c,l);try{await e(u,n),o.add(n),this.emit(`chunkComplete`,n),a.delete(n)}catch(e){let t=i.get(n)||0;t<r?(i.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),s.push(n)):(o.add(n),this.emit(`error`,e),this.shouldStop=!0,a.delete(n))}},l=[],u=async()=>{for(;(s.length>0||a.size>0)&&!this.shouldStop;){if(s.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=s.shift();o.has(e)||a.has(e)||(a.add(e),await c(e))}};for(let e=0;e<this.maxConcurrent;e++)l.push(u());await Promise.all(l)}};function at(e,t){let{recursive:n}=ot(t);return se(e)?n?st(e).map(t=>[e,t]):ue(e).map(t=>[e,t]):[]}function ot(e){return{recursive:e?.recursive??!0}}function st(e){return ue(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?st(n):[n]})}function ct(e){return e}const lt=e(import.meta.url),{PipeEventServer:ut,PipeEventClient:dt,PipeEventBase:ft,ProcessMonitor:pt,Process:mt,InjectionMethod:ht,AccessLevel:gt,HardwareInterface:_t}=lt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var vt=class extends j{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&(this._hasConnection=!1,this.server?.removeAllListeners(),this.server=null)}init(){this.server=new ut(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0}),this.server.on(`disconnected`,()=>{this._hasConnection=!1})}};const I=M(vt,`stats-cc`);var yt=class{logger;initialized=!1;constructor(e){this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},L=class extends j{logger;initialized=!1;constructor(e){super(),this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},bt=class extends Xe{logger;initialized=!1;constructor(e){super(),this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const R=fe.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let xt;function St(e){xt=e}R.interceptors.request.use(e=>{let t=xt?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const z=fe.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Ct,wt;z.interceptors.request.use(e=>{let t=Ct?.(),n=wt?.();return e.headers??={},t&&(e.headers.Authorization=t),n&&(e.headers[`X-Api-Key`]=n),e});function Tt(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Et(e){return e}function B(e){return e?t=>(e(t),t):Et}B();const Dt=B();function Ot(e){return z.get(`/v1/public/applications/${e}`)}B();function kt(e,t){return R.get(`/v1/native/${jt(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function At(e,t){return R.get(`/v1/native/${jt(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function jt(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function Mt(){return z.get(`/v1/public/raven/config`)}B();function Nt(e,t){return z.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Pt(e,t){return z.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function Ft(e,t){let n=new FormData;return n.append(`file`,t.chunk),z.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}const It=250;function Lt(e){let t=Tt(e.messages,It),n=Promise.all(t.map(async t=>z.post(`/v1/public/cortex/events`,{...e,messages:t})));return n}function Rt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function zt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Bt;function Vt(e){Bt=e}var Ht=class extends L{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(P(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await h.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=void 0),super.destroy()}async getCurrentVersion(e){try{let t=p.join(this.targetDir,e,`version.txt`);return this.logger.log(`Version Path`,t),await h.readFile(t,`utf-8`)}catch{return null}}getTargetPath(e){return p.join(this.targetDir,e)}getTargetVersionPath(e,t){return p.join(this.getTargetPath(e),t)}async checkForUpdates(e){let t=global.OVERLAYED.APP_BUILD_CHANNEL;if(this.logger.log(`Checking for updates`),!t){this.logger.error(`Invalid VITE_BUILD_CHANNEL`);return}await Bt?.();for(let n of e)try{let{data:e}=await kt(n,t),r=await this.getCurrentVersion(n);this.logger.log(`${n} > Update Check. current: ${r}, latest: ${e}`);let i=e!==r;this.logger.log(`${n} > Update found: ${r} -> ${e}`),await this.downloadAndExtractDll(n,e,t,i),this.logger.log(`${n} > Downloaded and extracted`),i&&(this.logger.log(`${n} > Cleaning up versions older than ${e}`),await this.cleanupOldVersions(n,e)),this.emit(`dllUpdated`,{identifier:n,version:e})}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t,n,r){let{data:i}=await At(e,n),a=this.getTargetPath(e),o=this.getTargetVersionPath(e,t);await h.mkdir(o,{recursive:!0});let s=new g;await s.loadAsync(i);let c=Object.keys(s.files).map(async t=>{let n=s.files[t];if(n&&!n.dir){let i=p.join(o,t);if(!r)try{await h.access(i,h.constants.F_OK);return}catch{this.logger.warn(`${e} > File missing, re-downloading: ${i}`)}let a=await n.async(`nodebuffer`);await h.writeFile(i,a)}});await Promise.all(c);let l=p.join(a,`version.txt`);this.logger.log(`Saving version file`,l),await h.writeFile(l,t)}async cleanupOldVersions(e,t){let n=p.join(this.targetDir,e),r=await h.readdir(n,{withFileTypes:!0});for(let e of r)e.isDirectory()&&e.name!==t&&await h.rm(p.join(n,e.name),{recursive:!0,force:!0})}};const V=M(Ht);var Ut=class extends L{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_ravenConfig;_executableToGameMap=new Map;_executablesArray=[];_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;constructor(){super(`RavenManager`)}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&(clearTimeout(this._failedRefetchTimeoutHandler),this._failedRefetchTimeoutHandler=null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}getExecutableData(e){return this._executableToGameMap.get(e.toLowerCase())??null}get executables(){return this._executablesArray}get executablesMap(){return this._executableToGameMap}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),V.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await Mt(),t={games:e.data.games};this._ravenConfig=t,this.resetState();let n=new Set;for(let e of this._ravenConfig.games){for(let t of e.executables){let n=t.toLowerCase();this._executableToGameMap.set(n,e),this._executablesArray.push(n)}e.modules.forEach(e=>n.add(e))}await V.getInstance().initWithDlls(Array.from(n)),this.logger.log(`Raven updated`,this._ravenConfig),this.emit(`executablesUpdated`,{executables:this.executables,map:this._executableToGameMap})}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}resetState(){this._executableToGameMap.clear(),this._executablesArray=[]}};const H=M(Ut),Wt=e(import.meta.url),{PipeEventServer:Gt,PipeEventClient:Kt,PipeEventBase:qt,ProcessMonitor:Jt,Process:U,InjectionMethod:Yt,AccessLevel:Xt,HardwareInterface:Zt}=Wt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var Qt=class extends L{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Jt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),H.getInstance().on(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processMonitor.on(`create`,e=>{this.logger.log(`Process created`,e),this.addProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`create`,{process:e})}),this._processMonitor.on(`destroy`,e=>{this.logger.log(`Process destroyed`,e),this.deleteProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`destroy`,{process:e})})}destroy(){H.getInstance().off(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processes.clear(),this._processMonitor.removeAllListeners(),super.destroy()}isProcessRunning(e){let t=this._processes.get(e);return t?.some(e=>!e.destroyedAt)??!1}onRavenManagerExecutablesUpdated(e){e.executables.forEach(e=>{this.logger.log(`Monitoring process`,e),this._processMonitor.registerProcess(e)})}addProcess(e){if(!e.name)return;let t=this._processes.get(e.name);if(!t){this._processes.set(e.name,[e]);return}this._processes.set(e.name,t.concat(e))}deleteProcess(e){if(!e.name)return;let t=this._processes.get(e.name),n=t?.filter(t=>t.id!==e.id)??[];n.length===0?this._processes.delete(e.name):this._processes.set(e.name,n)}};const W=M(Qt),$t=e(import.meta.url),{RenderInterface:en,renderHookPath:tn}=$t(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var nn=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}},rn=class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new nn(new en(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}};const G=M(rn);var an=class{options;eventQueue;_meta=null;set meta(e){this._meta=e}constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new we,this.setupFlushInterval()}track(e,t){this.eventQueue.add({type:e,properties:t,created_at:new Date().toISOString()})}flush(){let e=Array.from(this.eventQueue.flush()),t=e.concat({type:`ping`,properties:{},created_at:new Date().toISOString()});if(!this._meta)throw Error(`Tried to flush Cortex events before meta was set`);try{Lt({...this._meta,messages:t})}catch{}return t}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}};const K=M(an),on=e(import.meta.url),sn=on.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`);var cn=class extends bt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),G.getInstance().createInterface(`OGG_SIEGE`),W.getInstance().on(`create`,this.boundOnProcessCreate),W.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){W.getInstance().off(`create`,this.boundOnProcessCreate),W.getInstance().off(`destroy`,this.boundOnProcessDestroy),super.destroy()}async onProcessCreate({process:e}){let t=this.getRavenGame(e);if(!t)return;if(this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t.identifier)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(await this.emit(`gameLaunch`,{game:t.identifier,reject:()=>n.abort}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,t),this.logger.log(`Process is elevated: `,e.isElevated),this.logger.log(`Current process is elevated: `,U.currentProcess.isElevated),e.isElevated&&!U.currentProcess.isElevated){N.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!U.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:U.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(sn);if(r)try{await e.injectDll(r),this.logger.log(`Render Interface Injection Successful`,r)}catch(e){this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderInterfacePath:r})}let i=t?.modules.map(async t=>{let n=await V.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=V.getInstance().getTargetVersionPath(t,n);this.logger.log(`DLL Path`,r);let i=await this.getDllFiles(r);return this.logger.log(`DLL Files`,i),Promise.all(i.map(async t=>{let n=p.basename(t),i=p.join(r,n);if(!i)return Promise.resolve();this.logger.log(`Injecting: `,i);try{return e.injectDll(i).then(()=>{this.logger.log(`Injection Successful`,i)}).catch(e=>{this.logger.error(`Injection Failed [1]`,{targetPath:i},e)})}catch(e){return this.logger.error(`Injection Failed [2]`,{targetPath:i},e),Promise.reject(e)}}))});await Promise.allSettled(i),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),K.getInstance().track(`game_launch`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=te(e),r=p.join(P(),`resources`),i=p.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{se(r)||ce(r,{recursive:!0});let e=le(n);de(i,e),ae(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async getDllFiles(e){try{let t=await h.readdir(e);return t.filter(e=>e.endsWith(`.dll`)).map(t=>p.join(e,t))}catch(t){return this.logger.error(`Failed to read DLL directory`,t),this.logger.error(`Failed to read DLL directory`,{dllPath:e}),[]}}onProcessDestroy({process:e}){let t=this.getRavenGame(e);t&&(this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),K.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=H.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}};const q=M(cn);var ln=class extends yt{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),q.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){q.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),super.destroy()}async onGameLaunch(...e){let[{ravenGame:t,process:n}]=e;if(!n.path||!n.name){this.logger.error(`Process path or name not found, could not check for build hash`,void 0,n);return}let r=le(n.path),i=pe(`sha256`).update(r).digest(`hex`);this.logger.log(`Process Path`,n.path),this.logger.log(`Process Name`,n.name),this.logger.log(`Build Hash`,i);let a=!1;try{let e=await Nt(t.identifier,i);a=e.data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!a){this.logger.log(`Build hash already exists, skipping upload`);return}let o=new g;o.file(n.name,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new it(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Pt(t.identifier,{build_hash:i,chunk_count:e.totalChunks,file_size_bytes:s.size});await e.chunk(async(e,r)=>{this.logger.log(`Uploading chunk`,r),await Ft(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){Rt(e)?zt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}};const un=M(ln);function dn(e=[]){return p.normalize(p.join(tt(global.OVERLAYED.APPLICATION_ID),...e))}const fn=r({game:`string`,type:`string`,creation_time:`number`});var J=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}(J||{});const Y=new Map([[J.LeftButton,`LeftButton`],[J.RightButton,`RightButton`],[J.Cancel,`Cancel`],[J.MiddleButton,`MiddleButton`],[J.ExtraButton1,`ExtraButton1`],[J.ExtraButton2,`ExtraButton2`],[J.Back,`Backspace`],[J.Tab,`Tab`],[J.Clear,`Clear`],[J.Return,`Enter`],[J.Shift,`ShiftLeft`],[J.Control,`ControlLeft`],[J.Menu,`AltLeft`],[J.Pause,`Pause`],[J.CapsLock,`CapsLock`],[J.Kana,`KanaMode`],[J.Junja,`JunjaMode`],[J.Final,`Finalize`],[J.Hanja,`HanjaMode`],[J.Escape,`Escape`],[J.Convert,`Convert`],[J.NonConvert,`NonConvert`],[J.Accept,`Accept`],[J.ModeChange,`ModeChange`],[J.Space,`Space`],[J.Prior,`PageUp`],[J.Next,`PageDown`],[J.End,`End`],[J.Home,`Home`],[J.Left,`ArrowLeft`],[J.Up,`ArrowUp`],[J.Right,`ArrowRight`],[J.Down,`ArrowDown`],[J.Select,`Select`],[J.Print,`PrintScreen`],[J.Execute,`Execute`],[J.Snapshot,`Snapshot`],[J.Insert,`Insert`],[J.Delete,`Delete`],[J.Help,`Help`],[J.N0,`Digit0`],[J.N1,`Digit1`],[J.N2,`Digit2`],[J.N3,`Digit3`],[J.N4,`Digit4`],[J.N5,`Digit5`],[J.N6,`Digit6`],[J.N7,`Digit7`],[J.N8,`Digit8`],[J.N9,`Digit9`],[J.A,`KeyA`],[J.B,`KeyB`],[J.C,`KeyC`],[J.D,`KeyD`],[J.E,`KeyE`],[J.F,`KeyF`],[J.G,`KeyG`],[J.H,`KeyH`],[J.I,`KeyI`],[J.J,`KeyJ`],[J.K,`KeyK`],[J.L,`KeyL`],[J.M,`KeyM`],[J.N,`KeyN`],[J.O,`KeyO`],[J.P,`KeyP`],[J.Q,`KeyQ`],[J.R,`KeyR`],[J.S,`KeyS`],[J.T,`KeyT`],[J.U,`KeyU`],[J.V,`KeyV`],[J.W,`KeyW`],[J.X,`KeyX`],[J.Y,`KeyY`],[J.Z,`KeyZ`],[J.LeftWindows,`MetaLeft`],[J.RightWindows,`MetaRight`],[J.Application,`ContextMenu`],[J.Sleep,`Sleep`],[J.Numpad0,`Numpad0`],[J.Numpad1,`Numpad1`],[J.Numpad2,`Numpad2`],[J.Numpad3,`Numpad3`],[J.Numpad4,`Numpad4`],[J.Numpad5,`Numpad5`],[J.Numpad6,`Numpad6`],[J.Numpad7,`Numpad7`],[J.Numpad8,`Numpad8`],[J.Numpad9,`Numpad9`],[J.Multiply,`NumpadMultiply`],[J.Add,`NumpadAdd`],[J.Separator,`NumpadSeparator`],[J.Subtract,`NumpadSubtract`],[J.Decimal,`NumpadDecimal`],[J.Divide,`NumpadDivide`],[J.F1,`F1`],[J.F2,`F2`],[J.F3,`F3`],[J.F4,`F4`],[J.F5,`F5`],[J.F6,`F6`],[J.F7,`F7`],[J.F8,`F8`],[J.F9,`F9`],[J.F10,`F10`],[J.F11,`F11`],[J.F12,`F12`],[J.F13,`F13`],[J.F14,`F14`],[J.F15,`F15`],[J.F16,`F16`],[J.F17,`F17`],[J.F18,`F18`],[J.F19,`F19`],[J.F20,`F20`],[J.F21,`F21`],[J.F22,`F22`],[J.F23,`F23`],[J.F24,`F24`],[J.NumLock,`NumLock`],[J.ScrollLock,`ScrollLock`],[J.NEC_Equal,`NEC_Equal`],[J.Fujitsu_Masshou,`Fujitsu_Masshou`],[J.Fujitsu_Touroku,`Fujitsu_Touroku`],[J.Fujitsu_Loya,`Fujitsu_Loya`],[J.Fujitsu_Roya,`Fujitsu_Roya`],[J.LeftShift,`ShiftLeft`],[J.RightShift,`ShiftRight`],[J.LeftControl,`ControlLeft`],[J.RightControl,`ControlRight`],[J.LeftMenu,`AltLeft`],[J.RightMenu,`AltRight`],[J.BrowserBack,`BrowserBack`],[J.BrowserForward,`BrowserForward`],[J.BrowserRefresh,`BrowserRefresh`],[J.BrowserStop,`BrowserStop`],[J.BrowserSearch,`BrowserSearch`],[J.BrowserFavorites,`BrowserFavorites`],[J.BrowserHome,`BrowserHome`],[J.VolumeMute,`VolumeMute`],[J.VolumeDown,`VolumeDown`],[J.VolumeUp,`VolumeUp`],[J.MediaNextTrack,`MediaTrackNext`],[J.MediaPrevTrack,`MediaTrackPrevious`],[J.MediaStop,`MediaStop`],[J.MediaPlayPause,`MediaPlayPause`],[J.LaunchMail,`LaunchMail`],[J.LaunchMediaSelect,`LaunchMediaSelect`],[J.LaunchApplication1,`LaunchApplication1`],[J.LaunchApplication2,`LaunchApplication2`],[J.OEM1,`OEM_1`],[J.OEMPlus,`Equal`],[J.OEMComma,`Comma`],[J.OEMMinus,`Minus`],[J.OEMPeriod,`Period`],[J.OEM2,`Slash`],[J.OEM3,`Backquote`],[J.OEM4,`BracketLeft`],[J.OEM5,`Backslash`],[J.OEM6,`BracketRight`],[J.OEM7,`Quote`],[J.OEM8,`IntlRo`],[J.OEMAX,`OEM_AX`],[J.OEM102,`IntlBackslash`],[J.ICOHelp,`ICO_HELP`],[J.ICO00,`ICO_00`],[J.ProcessKey,`Process`],[J.ICOClear,`ICO_CLEAR`],[J.Packet,`Packet`],[J.OEMReset,`OEM_Reset`],[J.OEMJump,`OEM_Jump`],[J.OEMPA1,`OEM_PA1`],[J.OEMPA2,`OEM_PA2`],[J.OEMPA3,`OEM_PA3`],[J.OEMWSCtrl,`OEM_WS_Ctrl`],[J.OEMCUSel,`OEM_CU_Sel`],[J.OEMATTN,`OEM_ATTN`],[J.OEMFinish,`OEM_Finish`],[J.OEMCopy,`OEM_Copy`],[J.OEMAuto,`OEM_Auto`],[J.OEMENLW,`OEM_ENLW`],[J.OEMBackTab,`BackTab`],[J.ATTN,`ATTN`],[J.CRSel,`CRSel`],[J.EXSel,`EXSel`],[J.EREOF,`EREOF`],[J.Play,`MediaPlay`],[J.Zoom,`Zoom`],[J.Noname,`Noname`],[J.PA1,`PA1`],[J.OEMClear,`OEM_Clear`]]),pn=new Map(Y.entries().map(([e,t])=>[t,e])),mn=r({"[string]":{keys:`string[]`,mode:r(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var hn=class extends L{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new Qe({path:dn([`keybinds.json`]),schema:mn,default:e})}init(){super.init();let e=G.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.toggle=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.down=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.up=t,this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=G.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=Y.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=Y.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries()){let r=n[e];r.keys.includes(t)&&this.triggeredToggleKeybinds.delete(e)}this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up)continue;let r=e[t];this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))&&(this.activeKeybinds.delete(t),n.up(),this.logger.log(`Keybind up triggered`,this.getKeybindToString(r)))}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t],i=r.keys.length===this.pressedKeys.size&&r.keys.every(e=>pn.has(e)?this.pressedKeys.has(e):!1);if(i){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t],i=r.keys.every(e=>pn.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1));i&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&!this.triggeredToggleKeybinds.has(n)){let r=t.toggle();this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&!this.activeKeybinds.has(n)){let r=t.down();r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}},gn=class extends yt{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=G.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}};const _n=M(gn,`OGG_SIEGE`);var vn=xe((exports,t)=>{var n=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),r=n((e,t)=>{var n=new Set([`mouseDown`,`mouseUp`,`pointerDown`,`pointerUp`]),r=new WeakSet;function i(e,t,{allowHosts:i}={}){let{shell:a}=t;if(r.has(e))return;r.add(e);let o=e.webContents;function s(e){return!!(!c(e)||i?.includes(e.host))}function c(e){return new URL(o.getURL()).origin!==e.origin}let l=0;function u(){l=Date.now()}function d(){let e=Date.now()-l,t=e<150;return t||console.warn(`was not recently active`,e),t}if(process.platform===`win32`){let t={KEYDOWN:256,LBUTTONUP:514,MBUTTONUP:520,RBUTTONUP:517,XBUTTONUP:524,TOUCH:576};for(let n of Object.values(t))e.hookWindowMessage(n,u)}o.on(`input-event`,(e,t)=>{n.has(t.type)&&u()}),o.on(`will-navigate`,(e,t)=>{let n=e.url||t;if(console.log(`will-navigate`,n),!n)return;let r=new URL(n);if(!s(r)){if(!d()){console.log(`blocked navigation`,n),e.preventDefault();return}c(r)&&(console.log(`external navigation`,n),e.preventDefault(),a.openExternal(n))}}),o.session.on(`will-download`,(e,t)=>{let n=t.getURL();/^blob:/.test(n)||e.preventDefault()}),o.setWindowOpenHandler(e=>{console.log(`window-open`,e.url);let{url:t}=e,n=new URL(t);if(!s(n))return d()?(c(n)&&a.openExternal(e.url),{action:`deny`}):(console.log(`blocked navigation`,t),{action:`deny`})})}t.exports=i}),i=n((e,t)=>{var n=new Set([`Mozilla`,`AppleWebKit`,`Chrome`,`Safari`,`Gecko`,`Firefox`,`OPR`,`Edg`,`Version`,`Mobile`,`curl`,`PostmanRuntime`]);async function r(e,t,r){let{webContents:i}=e,a=await i.executeJavaScript(`navigator.userAgent`);a=a.match(/[^\/]+\/[^\s]+( \([^\)]+\))?/g).map(e=>e.trim()).filter(e=>{let[t]=e.split(`/`,1);return n.has(t)}).join(` `),i.setUserAgent(a),t.app.userAgentFallback=a}t.exports=r}),a=r(),o=i();function s(e,t,n={}){a(e,t,n.linkHandler),o(e,t,n.userAgent)}t.exports={setupRevUtils:s,setupLinkHandler:a,setUserAgent:o}}),yn=Ce(vn(),1);const bn=1e3;let X=!1,xn={},Z,Sn=new j;function Cn(e){let{init:t=!0,debug:n=!1}=e;if(wn(e),F.getInstance().init(e.applicationId,n,!0),X)return Z;function r(){Rn();let t=new Map,n=new Map,i=Dn(e.modules,t),a=On(),o=An(e.keybinds),s=jn(),c=Mn(),l=Pn(),u=Nn(),d=Fn(e);Tn(e),kn(e,t,n),X=!0,Z={...i,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>W.getInstance().hasAnyActiveProcesses,init:r,log:d,initialized:X}}return t?(r(),Z):new Proxy({init:r},{get:(e,t)=>{if(t!==`init`&&!X)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:Z[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function wn(e){global.OVERLAYED={APPLICATION_ID:Dt(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.17.1`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Tn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);q.getInstance().setSubscribedGames(t),un.getInstance().init(),q.getInstance().init(),W.getInstance().init(),H.getInstance().init();async function n(){let e=Ot(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=Zt.generateUniqueIdentifier();F.getInstance().log(`userId`,t);let n={...await e,userId:t};return F.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),K.getInstance().track(`start`,{}),me.on(`quit`,()=>{K.getInstance().track(`electron_quit`,{}),En()}),process.on(`exit`,()=>{K.getInstance().track(`exit`,{}),En()})}async function En(){await K.getInstance().flush(),H.getInstance().destroy(),q.getInstance().destroy(),un.getInstance().destroy(),W.getInstance().destroy(),G.getInstance().getInterface(`OGG_SIEGE`).destroy(),I.getInstance().destroy(),N.getInstance().destroy()}function Dn(e,t){return e.reduce((e,n)=>{let r=n.key;return e[r]={on(e,n){let i=Q(r,e),a=t.get(i)??new Set;a.add(n),t.set(i,a)},onAny(e){let n=Q(r,`*`),i=t.get(n)??new Set;i.add(e),t.set(n,i)},off(e,n){let i=Q(r,e),a=t.get(i)??new Set;a.delete(n),t.set(i,a)},offAny(e){let n=Q(r,`*`),i=t.get(n)??new Set;i.delete(e),t.set(n,i)},readyForGameEvents:()=>{Sn.emit(`flushEvents`,[r])}},e},{})}function On(){let e=N.getInstance(),t=q.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}function Q(e,t){return`${e}:${t}`}function kn(e,t,n){let i=I.getInstance();function a(e,t){let r=n.get(t);if(!r)n.set(t,[e]);else{if(r.length>=bn){N.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${r.length}, max: ${bn}`});return}r.push(e)}}function o(n){let i=fn(n);if(i instanceof r.errors){K.getInstance().track(`invalid_game_event`,{}),N.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game),s=o?.events.event;if(!s)return;let c=s(n);if(c instanceof r.errors){K.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),N.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:c.summary});return}if(!xn[o.key]){a(c,o.key);return}K.getInstance().track(`game_event`,{game:i.game,type:c.type});let l=Q(o.key,c.type),u=Q(o.key,`*`),d=t.get(l),f=t.get(u),p=[...Array.from(d??[]),...Array.from(f??[])];p.length!==0&&p.forEach(e=>{e(c)})}return Sn.on(`flushEvents`,([e])=>{if(xn[e])return;xn[e]=!0;let t=n.get(e);t&&(F.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>o(e)),n.delete(e))}),i.on(`data`,e=>e.forEach(o)),i.on(`error`,e=>{N.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),i}function An(e){let t=new hn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),me.on(`quit`,()=>{t.destroy()}),r}function jn(){function e(e,t){return e.once(`closed`,()=>{e.isDestroyed()||K.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||K.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),K.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{createWindow:t=>e(new global.OVERLAYED.electron.BrowserWindow(t),!1),createInGameWindow:t=>e($().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>$().instance.on(e,t),off:(e,t)=>$().instance.off(e,t),once:(e,t)=>$().instance.once(e,t),addListener:(e,t)=>$().instance.addListener(e,t),removeListener:(e,t)=>$().instance.removeListener(e,t),removeAllListeners:()=>$().instance.removeAllListeners(),prependListener:(e,t)=>$().instance.prependListener(e,t),prependOnceListener:(e,t)=>$().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=$(),t=I.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}function Mn(){return{scope:e=>_n.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>$().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>$().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>$().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>$().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>$().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>$().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>$().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>$().instance.getKeyInputBlock(e)}}}function Nn(){return{track:(e,t)=>K.getInstance().track(`custom__${e}`,t)}}function Pn(){return{registerWindow:e=>{(0,yn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function Fn(e){let t=new rt(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitBugReport:async(e,t)=>{K.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=In(t),r=await n.generateAsync({type:`base64`});await Ln(e,r)}}}function In(e){let t=nt(global.OVERLAYED.APPLICATION_ID),n=at(t,{recursive:!0}),r=et(),i=at(r,{recursive:!0});F.getInstance().info(`Logs path: `,t),F.getInstance().info(`Overlayed logs path: `,r);let a=new g;return[...n,...i].forEach(([e,t])=>{F.getInstance().info(`Zipping: `,t);let n=oe(t),r=ee(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{F.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function Ln(e,t){let n={...e,version:`${global.OVERLAYED.APP_VERSION}@${global.OVERLAYED.APP_BUILD_CHANNEL}`,log_zip:`data:application/zip;base64,${t}`};await fetch(`https://api.stats.cc/v1/overlay/contact`,{method:`POST`,body:JSON.stringify(n),redirect:`follow`,headers:{"Content-Type":`application/json`}})}function Rn(){K.getInstance().meta={app_id:global.OVERLAYED.APPLICATION_ID,user_id:Zt.generateUniqueIdentifier(),app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,session_id:global.OVERLAYED.sessionId},N.getInstance().on(`fatal`,e=>{K.getInstance().track(`fatal`,{message:e.message,code:e.code,data:e.data})}),N.getInstance().on(`error`,e=>{K.getInstance().track(`error`,{message:e.message,code:e.code,data:e.data})}),N.getInstance().on(`warning`,e=>{K.getInstance().track(`warning`,{message:e.message,code:e.code,data:e.data})})}function $(){return G.getInstance().getInterface(`OGG_SIEGE`)}export{ct as defineConfig,Cn as overlayed,Vt as setFetchLatestTokenCallback,St as setUpdaterTokenResolver};
|
|
5
|
+
`);return a!==-1&&(t=Be(t,i,r,a)),r+t+i};Object.defineProperties(E.prototype,T);const Ye=E();E({level:He?He.level:0});var A=Ye,j=class{emitter;constructor(){this.emitter=t()}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}emit(e,t){this.emitter.emit(e,t)}removeAllListeners(){this.emitter.all.clear()}},Xe=class{listeners;constructor(){this.listeners=new Map}on(e,t){let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)}off(e,t){let n=this.listeners.get(e);n&&n.delete(t)}async emit(e,...t){let n=this.listeners.get(e)||new Set,r=this.listeners.get(`*`)||new Set,i=[...Array.from(n),...Array.from(r)];if(i.length===0)return[];let a=await Promise.all(i.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}));return a}removeAllListeners(){this.listeners.clear()}};function M(e,...t){let n=class extends e{static _instance;static getInstance(){return this._instance||(this._instance=new e(...t)),this._instance}static clearInstance(){this._instance=void 0}};return n}var Ze=class extends j{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}};const N=M(Ze);var Qe=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues){this.reportInvalidConfigFile(t.issues);return}this.data=this.onBeforeSave(e),this.save(e)}get(){return this.data?this.data:this.load()}getKey(e){let t=this.get();return t[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(){if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return this.data=e,e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=r(`string.json.parse`).to(`object`),n=t(e);if(n instanceof r.errors)return this._defaultValue;let i=this._schema[`~standard`].validate(n);if(i instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return i.issues?this.migrate(n,this._defaultValue):this.migrate(i.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]}return n}reportInvalidConfigFile(e){N.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},$e=class e extends j{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`log`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date,r=n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getMilliseconds().toString().padStart(3,`0`)}`,i=t.map(e=>typeof e==`object`?JSON.stringify(e,void 0,2):String(e)).join(` `);return{timestamp:r,level:e,message:i}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=f(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return e.toISOString().split(`T`)[0]}createStream(){let e=f(this.logPath,this.getFileName(this.currentDate));return a(e,{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date;t.setDate(t.getDate()-7);let n=e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let n=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``),r=new Date(n);return r<t});n.forEach(e=>{try{l(f(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${i}\n`;this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}};const P=()=>p.join(process.env.APPDATA??``,`overlayed`),et=()=>p.join(P(),`logs`),tt=e=>p.join(P(),`apps`,e),nt=e=>p.join(tt(e),`logs`);var rt=class{fileLogger;path;appId;messageQueue=new we;fileName;_debug=!1;silent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1){this.appId=e,this._debug=t,this.silent=n,this.path=nt(e),this.fileLogger=new $e(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=`[${e}]`;return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){(!this.silent||this._debug)&&this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:A.red,warn:A.yellow,debug:A.blue,log:A.white};if(!this.silent||this._debug){let{timestamp:r,message:i}=$e.getMessageElements(e,...t),a=console[e],o=n[e];a(`${A.gray(r)} ${o(i)}`)}}};const F=M(rt,`main.log`);var it=class extends ie{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=5,i=new Map,a=new Set,o=new Set,s=[];for(let e=0;e<n;e++)s.push(e);let c=async n=>{let c=n*t,l=Math.min(c+t,this.blob.size),u=this.blob.slice(c,l);try{await e(u,n),o.add(n),this.emit(`chunkComplete`,n),a.delete(n)}catch(e){let t=i.get(n)||0;t<r?(i.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),s.push(n)):(o.add(n),this.emit(`error`,e),this.shouldStop=!0,a.delete(n))}},l=[],u=async()=>{for(;(s.length>0||a.size>0)&&!this.shouldStop;){if(s.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=s.shift();o.has(e)||a.has(e)||(a.add(e),await c(e))}};for(let e=0;e<this.maxConcurrent;e++)l.push(u());await Promise.all(l)}};function at(e,t){let{recursive:n}=ot(t);return se(e)?n?st(e).map(t=>[e,t]):ue(e).map(t=>[e,t]):[]}function ot(e){return{recursive:e?.recursive??!0}}function st(e){return ue(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?st(n):[n]})}function ct(e){return e}const lt=e(import.meta.url),{PipeEventServer:ut,PipeEventClient:dt,PipeEventBase:ft,ProcessMonitor:pt,Process:mt,InjectionMethod:ht,AccessLevel:gt,HardwareInterface:_t}=lt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var vt=class extends j{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&(this._hasConnection=!1,this.server?.removeAllListeners(),this.server=null)}init(){this.server=new ut(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0}),this.server.on(`disconnected`,()=>{this._hasConnection=!1})}};const I=M(vt,`stats-cc`);var yt=class{logger;initialized=!1;constructor(e){this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},L=class extends j{logger;initialized=!1;constructor(e){super(),this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},bt=class extends Xe{logger;initialized=!1;constructor(e){super(),this.logger=F.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const R=fe.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let xt;function St(e){xt=e}R.interceptors.request.use(e=>{let t=xt?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const z=fe.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Ct,wt;z.interceptors.request.use(e=>{let t=Ct?.(),n=wt?.();return e.headers??={},t&&(e.headers.Authorization=t),n&&(e.headers[`X-Api-Key`]=n),e});function Tt(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Et(e){return e}function B(e){return e?t=>(e(t),t):Et}B();const Dt=B();function Ot(e){return z.get(`/v1/public/applications/${e}`)}B();function kt(e,t){return R.get(`/v1/native/${jt(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function At(e,t){return R.get(`/v1/native/${jt(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function jt(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function Mt(){return z.get(`/v1/public/raven/config`)}B();function Nt(e,t){return z.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Pt(e,t){return z.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function Ft(e,t){let n=new FormData;return n.append(`file`,t.chunk),z.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}const It=250;function Lt(e){let t=Tt(e.messages,It),n=Promise.all(t.map(async t=>z.post(`/v1/public/cortex/events`,{...e,messages:t})));return n}function Rt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function zt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Bt;function Vt(e){Bt=e}var Ht=class extends L{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(P(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await h.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=void 0),super.destroy()}async getCurrentVersion(e){try{let t=p.join(this.targetDir,e,`version.txt`);return this.logger.log(`Version Path`,t),await h.readFile(t,`utf-8`)}catch{return null}}getTargetPath(e){return p.join(this.targetDir,e)}getTargetVersionPath(e,t){return p.join(this.getTargetPath(e),t)}async checkForUpdates(e){let t=global.OVERLAYED.APP_BUILD_CHANNEL;if(this.logger.log(`Checking for updates`),!t){this.logger.error(`Invalid VITE_BUILD_CHANNEL`);return}await Bt?.();for(let n of e)try{let{data:e}=await kt(n,t),r=await this.getCurrentVersion(n);this.logger.log(`${n} > Update Check. current: ${r}, latest: ${e}`);let i=e!==r;this.logger.log(`${n} > Update found: ${r} -> ${e}`),await this.downloadAndExtractDll(n,e,t,i),this.logger.log(`${n} > Downloaded and extracted`),i&&(this.logger.log(`${n} > Cleaning up versions older than ${e}`),await this.cleanupOldVersions(n,e)),this.emit(`dllUpdated`,{identifier:n,version:e})}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t,n,r){let{data:i}=await At(e,n),a=this.getTargetPath(e),o=this.getTargetVersionPath(e,t);await h.mkdir(o,{recursive:!0});let s=new g;await s.loadAsync(i);let c=Object.keys(s.files).map(async t=>{let n=s.files[t];if(n&&!n.dir){let i=p.join(o,t);if(!r)try{await h.access(i,h.constants.F_OK);return}catch{this.logger.warn(`${e} > File missing, re-downloading: ${i}`)}let a=await n.async(`nodebuffer`);await h.writeFile(i,a)}});await Promise.all(c);let l=p.join(a,`version.txt`);this.logger.log(`Saving version file`,l),await h.writeFile(l,t)}async cleanupOldVersions(e,t){let n=p.join(this.targetDir,e),r=await h.readdir(n,{withFileTypes:!0});for(let e of r)e.isDirectory()&&e.name!==t&&await h.rm(p.join(n,e.name),{recursive:!0,force:!0})}};const V=M(Ht);var Ut=class extends L{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_ravenConfig;_executableToGameMap=new Map;_executablesArray=[];_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;constructor(){super(`RavenManager`)}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&(clearTimeout(this._failedRefetchTimeoutHandler),this._failedRefetchTimeoutHandler=null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}getExecutableData(e){return this._executableToGameMap.get(e.toLowerCase())??null}get executables(){return this._executablesArray}get executablesMap(){return this._executableToGameMap}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),V.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await Mt(),t={games:e.data.games};this._ravenConfig=t,this.resetState();let n=new Set;for(let e of this._ravenConfig.games){for(let t of e.executables){let n=t.toLowerCase();this._executableToGameMap.set(n,e),this._executablesArray.push(n)}e.modules.forEach(e=>n.add(e))}await V.getInstance().initWithDlls(Array.from(n)),this.logger.log(`Raven updated`,this._ravenConfig),this.emit(`executablesUpdated`,{executables:this.executables,map:this._executableToGameMap})}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}resetState(){this._executableToGameMap.clear(),this._executablesArray=[]}};const H=M(Ut),Wt=e(import.meta.url),{PipeEventServer:Gt,PipeEventClient:Kt,PipeEventBase:qt,ProcessMonitor:Jt,Process:U,InjectionMethod:Yt,AccessLevel:Xt,HardwareInterface:Zt}=Wt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var Qt=class extends L{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Jt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),H.getInstance().on(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processMonitor.on(`create`,e=>{this.logger.log(`Process created`,e),this.addProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`create`,{process:e})}),this._processMonitor.on(`destroy`,e=>{this.logger.log(`Process destroyed`,e),this.deleteProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`destroy`,{process:e})})}destroy(){H.getInstance().off(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processes.clear(),this._processMonitor.removeAllListeners(),super.destroy()}isProcessRunning(e){let t=this._processes.get(e);return t?.some(e=>!e.destroyedAt)??!1}onRavenManagerExecutablesUpdated(e){e.executables.forEach(e=>{this.logger.log(`Monitoring process`,e),this._processMonitor.registerProcess(e)})}addProcess(e){if(!e.name)return;let t=this._processes.get(e.name);if(!t){this._processes.set(e.name,[e]);return}this._processes.set(e.name,t.concat(e))}deleteProcess(e){if(!e.name)return;let t=this._processes.get(e.name),n=t?.filter(t=>t.id!==e.id)??[];n.length===0?this._processes.delete(e.name):this._processes.set(e.name,n)}};const W=M(Qt),$t=e(import.meta.url),{RenderInterface:en,renderHookPath:tn}=$t(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var nn=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}},rn=class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new nn(new en(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}};const G=M(rn);var an=class{options;eventQueue;_meta=null;set meta(e){this._meta=e}constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new we,this.setupFlushInterval()}track(e,t){this.eventQueue.add({type:e,properties:t,created_at:new Date().toISOString()})}flush(){let e=Array.from(this.eventQueue.flush()),t=e.concat({type:`ping`,properties:{},created_at:new Date().toISOString()});if(!this._meta)throw Error(`Tried to flush Cortex events before meta was set`);try{Lt({...this._meta,messages:t})}catch{}return t}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}};const K=M(an),on=e(import.meta.url),sn=on.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`);var cn=class extends bt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),G.getInstance().createInterface(`OGG_SIEGE`),W.getInstance().on(`create`,this.boundOnProcessCreate),W.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){W.getInstance().off(`create`,this.boundOnProcessCreate),W.getInstance().off(`destroy`,this.boundOnProcessDestroy),super.destroy()}async onProcessCreate({process:e}){let t=this.getRavenGame(e);if(!t)return;if(this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t.identifier)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(await this.emit(`gameLaunch`,{game:t.identifier,reject:()=>n.abort}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,t),this.logger.log(`Process is elevated: `,e.isElevated),this.logger.log(`Current process is elevated: `,U.currentProcess.isElevated),e.isElevated&&!U.currentProcess.isElevated){N.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!U.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:U.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(sn);if(r)try{await e.injectDll(r),this.logger.log(`Render Interface Injection Successful`,r)}catch(e){this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderInterfacePath:r})}let i=t?.modules.map(async t=>{let n=await V.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=V.getInstance().getTargetVersionPath(t,n);this.logger.log(`DLL Path`,r);let i=await this.getDllFiles(r);return this.logger.log(`DLL Files`,i),Promise.all(i.map(async t=>{let n=p.basename(t),i=p.join(r,n);if(!i)return Promise.resolve();this.logger.log(`Injecting: `,i);try{return e.injectDll(i).then(()=>{this.logger.log(`Injection Successful`,i)}).catch(e=>{this.logger.error(`Injection Failed [1]`,{targetPath:i},e)})}catch(e){return this.logger.error(`Injection Failed [2]`,{targetPath:i},e),Promise.reject(e)}}))});await Promise.allSettled(i),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),K.getInstance().track(`game_launch`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=te(e),r=p.join(P(),`resources`),i=p.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{se(r)||ce(r,{recursive:!0});let e=le(n);de(i,e),ae(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async getDllFiles(e){try{let t=await h.readdir(e);return t.filter(e=>e.endsWith(`.dll`)).map(t=>p.join(e,t))}catch(t){return this.logger.error(`Failed to read DLL directory`,t),this.logger.error(`Failed to read DLL directory`,{dllPath:e}),[]}}onProcessDestroy({process:e}){let t=this.getRavenGame(e);t&&(this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),K.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=H.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}};const q=M(cn);var ln=class extends yt{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),q.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){q.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),super.destroy()}async onGameLaunch(...e){let[{ravenGame:t,process:n}]=e;if(!n.path||!n.name){this.logger.error(`Process path or name not found, could not check for build hash`,void 0,n);return}let r=le(n.path),i=pe(`sha256`).update(r).digest(`hex`);this.logger.log(`Process Path`,n.path),this.logger.log(`Process Name`,n.name),this.logger.log(`Build Hash`,i);let a=!1;try{let e=await Nt(t.identifier,i);a=e.data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!a){this.logger.log(`Build hash already exists, skipping upload`);return}let o=new g;o.file(n.name,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new it(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Pt(t.identifier,{build_hash:i,chunk_count:e.totalChunks,file_size_bytes:s.size});await e.chunk(async(e,r)=>{this.logger.log(`Uploading chunk`,r),await Ft(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){Rt(e)?zt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}};const un=M(ln);function dn(e=[]){return p.normalize(p.join(tt(global.OVERLAYED.APPLICATION_ID),...e))}const fn=r({game:`string`,type:`string`,creation_time:`number`});var J=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}(J||{});const Y=new Map([[J.LeftButton,`LeftButton`],[J.RightButton,`RightButton`],[J.Cancel,`Cancel`],[J.MiddleButton,`MiddleButton`],[J.ExtraButton1,`ExtraButton1`],[J.ExtraButton2,`ExtraButton2`],[J.Back,`Backspace`],[J.Tab,`Tab`],[J.Clear,`Clear`],[J.Return,`Enter`],[J.Shift,`ShiftLeft`],[J.Control,`ControlLeft`],[J.Menu,`AltLeft`],[J.Pause,`Pause`],[J.CapsLock,`CapsLock`],[J.Kana,`KanaMode`],[J.Junja,`JunjaMode`],[J.Final,`Finalize`],[J.Hanja,`HanjaMode`],[J.Escape,`Escape`],[J.Convert,`Convert`],[J.NonConvert,`NonConvert`],[J.Accept,`Accept`],[J.ModeChange,`ModeChange`],[J.Space,`Space`],[J.Prior,`PageUp`],[J.Next,`PageDown`],[J.End,`End`],[J.Home,`Home`],[J.Left,`ArrowLeft`],[J.Up,`ArrowUp`],[J.Right,`ArrowRight`],[J.Down,`ArrowDown`],[J.Select,`Select`],[J.Print,`PrintScreen`],[J.Execute,`Execute`],[J.Snapshot,`Snapshot`],[J.Insert,`Insert`],[J.Delete,`Delete`],[J.Help,`Help`],[J.N0,`Digit0`],[J.N1,`Digit1`],[J.N2,`Digit2`],[J.N3,`Digit3`],[J.N4,`Digit4`],[J.N5,`Digit5`],[J.N6,`Digit6`],[J.N7,`Digit7`],[J.N8,`Digit8`],[J.N9,`Digit9`],[J.A,`KeyA`],[J.B,`KeyB`],[J.C,`KeyC`],[J.D,`KeyD`],[J.E,`KeyE`],[J.F,`KeyF`],[J.G,`KeyG`],[J.H,`KeyH`],[J.I,`KeyI`],[J.J,`KeyJ`],[J.K,`KeyK`],[J.L,`KeyL`],[J.M,`KeyM`],[J.N,`KeyN`],[J.O,`KeyO`],[J.P,`KeyP`],[J.Q,`KeyQ`],[J.R,`KeyR`],[J.S,`KeyS`],[J.T,`KeyT`],[J.U,`KeyU`],[J.V,`KeyV`],[J.W,`KeyW`],[J.X,`KeyX`],[J.Y,`KeyY`],[J.Z,`KeyZ`],[J.LeftWindows,`MetaLeft`],[J.RightWindows,`MetaRight`],[J.Application,`ContextMenu`],[J.Sleep,`Sleep`],[J.Numpad0,`Numpad0`],[J.Numpad1,`Numpad1`],[J.Numpad2,`Numpad2`],[J.Numpad3,`Numpad3`],[J.Numpad4,`Numpad4`],[J.Numpad5,`Numpad5`],[J.Numpad6,`Numpad6`],[J.Numpad7,`Numpad7`],[J.Numpad8,`Numpad8`],[J.Numpad9,`Numpad9`],[J.Multiply,`NumpadMultiply`],[J.Add,`NumpadAdd`],[J.Separator,`NumpadSeparator`],[J.Subtract,`NumpadSubtract`],[J.Decimal,`NumpadDecimal`],[J.Divide,`NumpadDivide`],[J.F1,`F1`],[J.F2,`F2`],[J.F3,`F3`],[J.F4,`F4`],[J.F5,`F5`],[J.F6,`F6`],[J.F7,`F7`],[J.F8,`F8`],[J.F9,`F9`],[J.F10,`F10`],[J.F11,`F11`],[J.F12,`F12`],[J.F13,`F13`],[J.F14,`F14`],[J.F15,`F15`],[J.F16,`F16`],[J.F17,`F17`],[J.F18,`F18`],[J.F19,`F19`],[J.F20,`F20`],[J.F21,`F21`],[J.F22,`F22`],[J.F23,`F23`],[J.F24,`F24`],[J.NumLock,`NumLock`],[J.ScrollLock,`ScrollLock`],[J.NEC_Equal,`NEC_Equal`],[J.Fujitsu_Masshou,`Fujitsu_Masshou`],[J.Fujitsu_Touroku,`Fujitsu_Touroku`],[J.Fujitsu_Loya,`Fujitsu_Loya`],[J.Fujitsu_Roya,`Fujitsu_Roya`],[J.LeftShift,`ShiftLeft`],[J.RightShift,`ShiftRight`],[J.LeftControl,`ControlLeft`],[J.RightControl,`ControlRight`],[J.LeftMenu,`AltLeft`],[J.RightMenu,`AltRight`],[J.BrowserBack,`BrowserBack`],[J.BrowserForward,`BrowserForward`],[J.BrowserRefresh,`BrowserRefresh`],[J.BrowserStop,`BrowserStop`],[J.BrowserSearch,`BrowserSearch`],[J.BrowserFavorites,`BrowserFavorites`],[J.BrowserHome,`BrowserHome`],[J.VolumeMute,`VolumeMute`],[J.VolumeDown,`VolumeDown`],[J.VolumeUp,`VolumeUp`],[J.MediaNextTrack,`MediaTrackNext`],[J.MediaPrevTrack,`MediaTrackPrevious`],[J.MediaStop,`MediaStop`],[J.MediaPlayPause,`MediaPlayPause`],[J.LaunchMail,`LaunchMail`],[J.LaunchMediaSelect,`LaunchMediaSelect`],[J.LaunchApplication1,`LaunchApplication1`],[J.LaunchApplication2,`LaunchApplication2`],[J.OEM1,`OEM_1`],[J.OEMPlus,`Equal`],[J.OEMComma,`Comma`],[J.OEMMinus,`Minus`],[J.OEMPeriod,`Period`],[J.OEM2,`Slash`],[J.OEM3,`Backquote`],[J.OEM4,`BracketLeft`],[J.OEM5,`Backslash`],[J.OEM6,`BracketRight`],[J.OEM7,`Quote`],[J.OEM8,`IntlRo`],[J.OEMAX,`OEM_AX`],[J.OEM102,`IntlBackslash`],[J.ICOHelp,`ICO_HELP`],[J.ICO00,`ICO_00`],[J.ProcessKey,`Process`],[J.ICOClear,`ICO_CLEAR`],[J.Packet,`Packet`],[J.OEMReset,`OEM_Reset`],[J.OEMJump,`OEM_Jump`],[J.OEMPA1,`OEM_PA1`],[J.OEMPA2,`OEM_PA2`],[J.OEMPA3,`OEM_PA3`],[J.OEMWSCtrl,`OEM_WS_Ctrl`],[J.OEMCUSel,`OEM_CU_Sel`],[J.OEMATTN,`OEM_ATTN`],[J.OEMFinish,`OEM_Finish`],[J.OEMCopy,`OEM_Copy`],[J.OEMAuto,`OEM_Auto`],[J.OEMENLW,`OEM_ENLW`],[J.OEMBackTab,`BackTab`],[J.ATTN,`ATTN`],[J.CRSel,`CRSel`],[J.EXSel,`EXSel`],[J.EREOF,`EREOF`],[J.Play,`MediaPlay`],[J.Zoom,`Zoom`],[J.Noname,`Noname`],[J.PA1,`PA1`],[J.OEMClear,`OEM_Clear`]]),pn=new Map(Y.entries().map(([e,t])=>[t,e])),mn=r({"[string]":{keys:`string[]`,mode:r(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var hn=class extends L{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new Qe({path:dn([`keybinds.json`]),schema:mn,default:e})}init(){super.init();let e=G.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.toggle=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.down=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.up=t,this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=G.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=Y.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=Y.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries()){let r=n[e];r.keys.includes(t)&&this.triggeredToggleKeybinds.delete(e)}this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up)continue;let r=e[t];this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))&&(this.activeKeybinds.delete(t),n.up(),this.logger.log(`Keybind up triggered`,this.getKeybindToString(r)))}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t],i=r.keys.length===this.pressedKeys.size&&r.keys.every(e=>pn.has(e)?this.pressedKeys.has(e):!1);if(i){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t],i=r.keys.every(e=>pn.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1));i&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&!this.triggeredToggleKeybinds.has(n)){let r=t.toggle();this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&!this.activeKeybinds.has(n)){let r=t.down();r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}},gn=class extends yt{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=G.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}};const _n=M(gn,`OGG_SIEGE`);var vn=xe((exports,t)=>{var n=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),r=n((e,t)=>{var n=new Set([`mouseDown`,`mouseUp`,`pointerDown`,`pointerUp`]),r=new WeakSet;function i(e,t,{allowHosts:i}={}){let{shell:a}=t;if(r.has(e))return;r.add(e);let o=e.webContents;function s(e){return!!(!c(e)||i?.includes(e.host))}function c(e){return new URL(o.getURL()).origin!==e.origin}let l=0;function u(){l=Date.now()}function d(){let e=Date.now()-l,t=e<150;return t||console.warn(`was not recently active`,e),t}if(process.platform===`win32`){let t={KEYDOWN:256,LBUTTONUP:514,MBUTTONUP:520,RBUTTONUP:517,XBUTTONUP:524,TOUCH:576};for(let n of Object.values(t))e.hookWindowMessage(n,u)}o.on(`input-event`,(e,t)=>{n.has(t.type)&&u()}),o.on(`will-navigate`,(e,t)=>{let n=e.url||t;if(console.log(`will-navigate`,n),!n)return;let r=new URL(n);if(!s(r)){if(!d()){console.log(`blocked navigation`,n),e.preventDefault();return}c(r)&&(console.log(`external navigation`,n),e.preventDefault(),a.openExternal(n))}}),o.session.on(`will-download`,(e,t)=>{let n=t.getURL();/^blob:/.test(n)||e.preventDefault()}),o.setWindowOpenHandler(e=>{console.log(`window-open`,e.url);let{url:t}=e,n=new URL(t);if(!s(n))return d()?(c(n)&&a.openExternal(e.url),{action:`deny`}):(console.log(`blocked navigation`,t),{action:`deny`})})}t.exports=i}),i=n((e,t)=>{var n=new Set([`Mozilla`,`AppleWebKit`,`Chrome`,`Safari`,`Gecko`,`Firefox`,`OPR`,`Edg`,`Version`,`Mobile`,`curl`,`PostmanRuntime`]);async function r(e,t,r){let{webContents:i}=e,a=await i.executeJavaScript(`navigator.userAgent`);a=a.match(/[^\/]+\/[^\s]+( \([^\)]+\))?/g).map(e=>e.trim()).filter(e=>{let[t]=e.split(`/`,1);return n.has(t)}).join(` `),i.setUserAgent(a),t.app.userAgentFallback=a}t.exports=r}),a=r(),o=i();function s(e,t,n={}){a(e,t,n.linkHandler),o(e,t,n.userAgent)}t.exports={setupRevUtils:s,setupLinkHandler:a,setUserAgent:o}}),yn=Ce(vn(),1);const bn=1e3;let X=!1,xn={},Z,Sn=new j;function Cn(e){let{init:t=!0,debug:n=!1}=e;if(wn(e),F.getInstance().init(e.applicationId,n,!0),X)return Z;function r(){Rn();let t=new Map,n=new Map,i=Dn(e.modules,t),a=On(),o=An(e.keybinds),s=jn(),c=Mn(),l=Pn(),u=Nn(),d=Fn(e);Tn(e),kn(e,t,n),X=!0,Z={...i,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>W.getInstance().hasAnyActiveProcesses,init:r,log:d,initialized:X}}return t?(r(),Z):new Proxy({init:r},{get:(e,t)=>{if(t!==`init`&&!X)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:Z[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function wn(e){global.OVERLAYED={APPLICATION_ID:Dt(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.17.3`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Tn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);q.getInstance().setSubscribedGames(t),un.getInstance().init(),q.getInstance().init(),W.getInstance().init(),H.getInstance().init();async function n(){let e=Ot(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=Zt.generateUniqueIdentifier();F.getInstance().log(`userId`,t);let n={...await e,userId:t};return F.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),K.getInstance().track(`start`,{}),me.on(`quit`,()=>{K.getInstance().track(`electron_quit`,{}),En()}),process.on(`exit`,()=>{K.getInstance().track(`exit`,{}),En()})}async function En(){await K.getInstance().flush(),H.getInstance().destroy(),q.getInstance().destroy(),un.getInstance().destroy(),W.getInstance().destroy(),G.getInstance().getInterface(`OGG_SIEGE`).destroy(),I.getInstance().destroy(),N.getInstance().destroy()}function Dn(e,t){return e.reduce((e,n)=>{let r=n.key;return e[r]={on(e,n){let i=Q(r,e),a=t.get(i)??new Set;a.add(n),t.set(i,a)},onAny(e){let n=Q(r,`*`),i=t.get(n)??new Set;i.add(e),t.set(n,i)},off(e,n){let i=Q(r,e),a=t.get(i)??new Set;a.delete(n),t.set(i,a)},offAny(e){let n=Q(r,`*`),i=t.get(n)??new Set;i.delete(e),t.set(n,i)},readyForGameEvents:()=>{Sn.emit(`flushEvents`,[r])}},e},{})}function On(){let e=N.getInstance(),t=q.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}function Q(e,t){return`${e}:${t}`}function kn(e,t,n){let i=I.getInstance();function a(e,t){let r=n.get(t);if(!r)n.set(t,[e]);else{if(r.length>=bn){N.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${r.length}, max: ${bn}`});return}r.push(e)}}function o(n){let i=fn(n);if(i instanceof r.errors){K.getInstance().track(`invalid_game_event`,{}),N.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game),s=o?.events.event;if(!s)return;let c=s(n);if(c instanceof r.errors){K.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),N.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:c.summary});return}if(!xn[o.key]){a(c,o.key);return}K.getInstance().track(`game_event`,{game:i.game,type:c.type});let l=Q(o.key,c.type),u=Q(o.key,`*`),d=t.get(l),f=t.get(u),p=[...Array.from(d??[]),...Array.from(f??[])];p.length!==0&&p.forEach(e=>{e(c)})}return Sn.on(`flushEvents`,([e])=>{if(xn[e])return;xn[e]=!0;let t=n.get(e);t&&(F.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>o(e)),n.delete(e))}),i.on(`data`,e=>e.forEach(o)),i.on(`error`,e=>{N.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),i}function An(e){let t=new hn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),me.on(`quit`,()=>{t.destroy()}),r}function jn(){function e(e,t){return e.once(`closed`,()=>{e.isDestroyed()||K.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||K.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),K.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{createWindow:t=>e(new global.OVERLAYED.electron.BrowserWindow(t),!1),createInGameWindow:t=>e($().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>$().instance.on(e,t),off:(e,t)=>$().instance.off(e,t),once:(e,t)=>$().instance.once(e,t),addListener:(e,t)=>$().instance.addListener(e,t),removeListener:(e,t)=>$().instance.removeListener(e,t),removeAllListeners:()=>$().instance.removeAllListeners(),prependListener:(e,t)=>$().instance.prependListener(e,t),prependOnceListener:(e,t)=>$().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=$(),t=I.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}function Mn(){return{scope:e=>_n.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>$().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>$().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>$().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>$().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>$().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>$().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>$().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>$().instance.getKeyInputBlock(e)}}}function Nn(){return{track:(e,t)=>K.getInstance().track(`custom__${e}`,t)}}function Pn(){return{registerWindow:e=>{(0,yn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function Fn(e){let t=new rt(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitBugReport:async(e,t)=>{K.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=In(t),r=await n.generateAsync({type:`base64`});await Ln(e,r)}}}function In(e){let t=nt(global.OVERLAYED.APPLICATION_ID),n=at(t,{recursive:!0}),r=et(),i=at(r,{recursive:!0});F.getInstance().info(`Logs path: `,t),F.getInstance().info(`Overlayed logs path: `,r);let a=new g;return[...n,...i].forEach(([e,t])=>{F.getInstance().info(`Zipping: `,t);let n=oe(t),r=ee(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{F.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function Ln(e,t){let n={...e,version:`${global.OVERLAYED.APP_VERSION}@${global.OVERLAYED.APP_BUILD_CHANNEL}`,log_zip:`data:application/zip;base64,${t}`};await fetch(`https://api.stats.cc/v1/overlay/contact`,{method:`POST`,body:JSON.stringify(n),redirect:`follow`,headers:{"Content-Type":`application/json`}})}function Rn(){K.getInstance().meta={app_id:global.OVERLAYED.APPLICATION_ID,user_id:Zt.generateUniqueIdentifier(),app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,session_id:global.OVERLAYED.sessionId},N.getInstance().on(`fatal`,e=>{K.getInstance().track(`fatal`,{message:e.message,code:e.code,data:e.data})}),N.getInstance().on(`error`,e=>{K.getInstance().track(`error`,{message:e.message,code:e.code,data:e.data})}),N.getInstance().on(`warning`,e=>{K.getInstance().track(`warning`,{message:e.message,code:e.code,data:e.data})})}function $(){return G.getInstance().getInterface(`OGG_SIEGE`)}export{ct as defineConfig,Cn as overlayed,Vt as setFetchLatestTokenCallback,St as setUpdaterTokenResolver};
|
|
Binary file
|
package/dist/siege.d.ts
CHANGED
|
@@ -100,22 +100,22 @@ declare const SiegeItemObjectId: Brander<SiegeItemObjectId>;
|
|
|
100
100
|
//#region src/consts.d.ts
|
|
101
101
|
declare const SIEGE_BOT_ID = "00000000-0000-0000-0000-000000000000";
|
|
102
102
|
declare const SIEGE_GAME_MODE_PHASES: readonly ["intro", "planning", "prep", "action", "results", "invalid"];
|
|
103
|
-
declare const SiegeGameModePhaseSchema: arktype_internal_methods_string_ts0.StringType<"intro" | "planning" | "prep" | "action" | "results"
|
|
103
|
+
declare const SiegeGameModePhaseSchema: arktype_internal_methods_string_ts0.StringType<"invalid" | "intro" | "planning" | "prep" | "action" | "results", {}>;
|
|
104
104
|
type SiegeGameModePhase = typeof SiegeGameModePhaseSchema.infer;
|
|
105
105
|
declare const SIEGE_TEAMS: readonly [0, 1];
|
|
106
106
|
declare const SiegeTeamSchema: arktype_internal_methods_number_ts0.NumberType<0 | 1, {}>;
|
|
107
107
|
type SiegeTeam = typeof SiegeTeamSchema.infer;
|
|
108
108
|
declare const SIEGE_SIDES: readonly ["attacker", "defender", "both", "invalid"];
|
|
109
|
-
declare const SiegeSideSchema: arktype_internal_methods_string_ts0.StringType<"
|
|
109
|
+
declare const SiegeSideSchema: arktype_internal_methods_string_ts0.StringType<"attacker" | "defender" | "both" | "invalid", {}>;
|
|
110
110
|
type SiegeSide = typeof SiegeSideSchema.infer;
|
|
111
111
|
declare const SIEGE_PLAYER_LIFE_STATES: readonly ["normal", "overhealed", "low_health", "downed", "dead", "respawning"];
|
|
112
|
-
declare const SiegePlayerLifeStateSchema: arktype_internal_methods_string_ts0.StringType<"
|
|
112
|
+
declare const SiegePlayerLifeStateSchema: arktype_internal_methods_string_ts0.StringType<"downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning", {}>;
|
|
113
113
|
type SiegePlayerLifeState = typeof SiegePlayerLifeStateSchema.infer;
|
|
114
114
|
declare const SIEGE_DAMAGE_TYPES: readonly ["bullet", "melee", "explosive", "falling", "regeneration", "unknown", "debris", "projectile", "downed", "gas", "thermal_explosion", "melee_gadget", "barbed_wire", "electric", "reinforcement", "frag", "paralyzed", "emp", "break", "cleanup", "interrogation", "melee-finisher", "toxic", "toxic-explosion", "pneumatic", "body-contact", "contact-explosion", "flash", "parasite-spike", "laser", "concussion", "blowtorch", "taser-shield", "reverse-friendly-fire", "self-destroyed", "area-control", "fire", "breach-kick", "break-wall", "blade-mine", "invalid"];
|
|
115
|
-
declare const SiegeDamageTypeSchema: arktype_internal_methods_string_ts0.StringType<"
|
|
115
|
+
declare const SiegeDamageTypeSchema: arktype_internal_methods_string_ts0.StringType<"unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine", {}>;
|
|
116
116
|
type SiegeDamageType = typeof SiegeDamageTypeSchema.infer;
|
|
117
117
|
declare const SIEGE_DAMAGE_TEAM_TYPES: readonly ["unknown", "enemy", "friendly", "invalid"];
|
|
118
|
-
declare const SiegeDamageTeamTypeSchema: arktype_internal_methods_string_ts0.StringType<"
|
|
118
|
+
declare const SiegeDamageTeamTypeSchema: arktype_internal_methods_string_ts0.StringType<"unknown" | "invalid" | "enemy" | "friendly", {}>;
|
|
119
119
|
type SiegeDamageTeamType = typeof SiegeDamageTeamTypeSchema.infer;
|
|
120
120
|
declare const SIEGE_GAME_MODE_TYPES_TO_ID: Readonly<{
|
|
121
121
|
readonly ranked: SiegeGameModeTypeNameId;
|
|
@@ -645,11 +645,11 @@ declare function module(): {
|
|
|
645
645
|
segment_size: number;
|
|
646
646
|
segment_index: number;
|
|
647
647
|
team_0: {
|
|
648
|
-
role: "
|
|
648
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
649
649
|
state: SiegeRoundState;
|
|
650
650
|
};
|
|
651
651
|
team_1: {
|
|
652
|
-
role: "
|
|
652
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
653
653
|
state: SiegeRoundState;
|
|
654
654
|
};
|
|
655
655
|
}[];
|
|
@@ -682,7 +682,7 @@ declare function module(): {
|
|
|
682
682
|
content: {
|
|
683
683
|
index: number;
|
|
684
684
|
team: 0 | 1;
|
|
685
|
-
side: "
|
|
685
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
686
686
|
operator_name: {
|
|
687
687
|
id: SiegeOperatorNameId;
|
|
688
688
|
value: string;
|
|
@@ -699,11 +699,11 @@ declare function module(): {
|
|
|
699
699
|
segment_size: number;
|
|
700
700
|
segment_index: number;
|
|
701
701
|
team_0: {
|
|
702
|
-
role: "
|
|
702
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
703
703
|
state: SiegeRoundState;
|
|
704
704
|
};
|
|
705
705
|
team_1: {
|
|
706
|
-
role: "
|
|
706
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
707
707
|
state: SiegeRoundState;
|
|
708
708
|
};
|
|
709
709
|
};
|
|
@@ -714,15 +714,15 @@ declare function module(): {
|
|
|
714
714
|
remaining_health: number;
|
|
715
715
|
pre_damage_health: number;
|
|
716
716
|
max_health: number;
|
|
717
|
-
damage_type: "
|
|
718
|
-
damage_team_type: "
|
|
717
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
718
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
719
719
|
damage_item_id: SiegeItemObjectId | null;
|
|
720
720
|
damage_time: number;
|
|
721
721
|
}[];
|
|
722
722
|
players: {
|
|
723
723
|
player_id: SiegePlayerId;
|
|
724
724
|
final_health: number;
|
|
725
|
-
final_life_state: "
|
|
725
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
726
726
|
operator_name: {
|
|
727
727
|
id: SiegeOperatorNameId;
|
|
728
728
|
value: string;
|
|
@@ -734,7 +734,7 @@ declare function module(): {
|
|
|
734
734
|
type: "phase_changed";
|
|
735
735
|
creation_time: number;
|
|
736
736
|
content: {
|
|
737
|
-
phase: "intro" | "planning" | "prep" | "action" | "results"
|
|
737
|
+
phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
|
|
738
738
|
};
|
|
739
739
|
} | ((In: {
|
|
740
740
|
game: "siege";
|
|
@@ -748,7 +748,7 @@ declare function module(): {
|
|
|
748
748
|
is_squad_member: boolean;
|
|
749
749
|
is_local_player: boolean;
|
|
750
750
|
username: string;
|
|
751
|
-
side: "
|
|
751
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
752
752
|
team: 0 | 1;
|
|
753
753
|
is_privacy_username: boolean;
|
|
754
754
|
has_avatar_hidden: boolean;
|
|
@@ -761,12 +761,12 @@ declare function module(): {
|
|
|
761
761
|
plants: number;
|
|
762
762
|
score: number;
|
|
763
763
|
};
|
|
764
|
-
life_state: "
|
|
764
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
765
765
|
ping: number;
|
|
766
766
|
};
|
|
767
767
|
}) => arktype2.Out<{
|
|
768
768
|
content: {
|
|
769
|
-
starting_side: "
|
|
769
|
+
starting_side: "attacker" | "defender" | "both" | "invalid";
|
|
770
770
|
player_id: SiegePlayerId;
|
|
771
771
|
profile_id: string;
|
|
772
772
|
is_bot: boolean;
|
|
@@ -774,7 +774,7 @@ declare function module(): {
|
|
|
774
774
|
is_squad_member: boolean;
|
|
775
775
|
is_local_player: boolean;
|
|
776
776
|
username: string;
|
|
777
|
-
side: "
|
|
777
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
778
778
|
team: 0 | 1;
|
|
779
779
|
is_privacy_username: boolean;
|
|
780
780
|
has_avatar_hidden: boolean;
|
|
@@ -787,7 +787,7 @@ declare function module(): {
|
|
|
787
787
|
plants: number;
|
|
788
788
|
score: number;
|
|
789
789
|
};
|
|
790
|
-
life_state: "
|
|
790
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
791
791
|
ping: number;
|
|
792
792
|
};
|
|
793
793
|
game: "siege";
|
|
@@ -825,7 +825,7 @@ declare function module(): {
|
|
|
825
825
|
creation_time: number;
|
|
826
826
|
content: {
|
|
827
827
|
player_id: SiegePlayerId;
|
|
828
|
-
side: "
|
|
828
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
829
829
|
};
|
|
830
830
|
} | {
|
|
831
831
|
game: "siege";
|
|
@@ -884,7 +884,7 @@ declare function module(): {
|
|
|
884
884
|
creation_time: number;
|
|
885
885
|
content: {
|
|
886
886
|
player_id: SiegePlayerId;
|
|
887
|
-
life_state: "
|
|
887
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
888
888
|
};
|
|
889
889
|
} | {
|
|
890
890
|
game: "siege";
|
|
@@ -995,11 +995,11 @@ declare function module(): {
|
|
|
995
995
|
segment_size: number;
|
|
996
996
|
segment_index: number;
|
|
997
997
|
team_0: {
|
|
998
|
-
role: "
|
|
998
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
999
999
|
state: SiegeRoundState;
|
|
1000
1000
|
};
|
|
1001
1001
|
team_1: {
|
|
1002
|
-
role: "
|
|
1002
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1003
1003
|
state: SiegeRoundState;
|
|
1004
1004
|
};
|
|
1005
1005
|
}[];
|
|
@@ -1035,7 +1035,7 @@ declare function module(): {
|
|
|
1035
1035
|
content: {
|
|
1036
1036
|
index: number;
|
|
1037
1037
|
team: 0 | 1;
|
|
1038
|
-
side: "
|
|
1038
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1039
1039
|
operator_name: {
|
|
1040
1040
|
id: SiegeOperatorNameId;
|
|
1041
1041
|
value: string;
|
|
@@ -1053,11 +1053,11 @@ declare function module(): {
|
|
|
1053
1053
|
segment_size: number;
|
|
1054
1054
|
segment_index: number;
|
|
1055
1055
|
team_0: {
|
|
1056
|
-
role: "
|
|
1056
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1057
1057
|
state: SiegeRoundState;
|
|
1058
1058
|
};
|
|
1059
1059
|
team_1: {
|
|
1060
|
-
role: "
|
|
1060
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1061
1061
|
state: SiegeRoundState;
|
|
1062
1062
|
};
|
|
1063
1063
|
};
|
|
@@ -1068,15 +1068,15 @@ declare function module(): {
|
|
|
1068
1068
|
remaining_health: number;
|
|
1069
1069
|
pre_damage_health: number;
|
|
1070
1070
|
max_health: number;
|
|
1071
|
-
damage_type: "
|
|
1072
|
-
damage_team_type: "
|
|
1071
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
1072
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
1073
1073
|
damage_item_id: SiegeItemObjectId | null;
|
|
1074
1074
|
damage_time: number;
|
|
1075
1075
|
}[];
|
|
1076
1076
|
players: {
|
|
1077
1077
|
player_id: SiegePlayerId;
|
|
1078
1078
|
final_health: number;
|
|
1079
|
-
final_life_state: "
|
|
1079
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1080
1080
|
operator_name: {
|
|
1081
1081
|
id: SiegeOperatorNameId;
|
|
1082
1082
|
value: string;
|
|
@@ -1089,7 +1089,7 @@ declare function module(): {
|
|
|
1089
1089
|
type: "phase_changed";
|
|
1090
1090
|
creation_time: number;
|
|
1091
1091
|
content: {
|
|
1092
|
-
phase: "intro" | "planning" | "prep" | "action" | "results"
|
|
1092
|
+
phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
|
|
1093
1093
|
};
|
|
1094
1094
|
};
|
|
1095
1095
|
player_joined: (In: {
|
|
@@ -1104,7 +1104,7 @@ declare function module(): {
|
|
|
1104
1104
|
is_squad_member: boolean;
|
|
1105
1105
|
is_local_player: boolean;
|
|
1106
1106
|
username: string;
|
|
1107
|
-
side: "
|
|
1107
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1108
1108
|
team: 0 | 1;
|
|
1109
1109
|
is_privacy_username: boolean;
|
|
1110
1110
|
has_avatar_hidden: boolean;
|
|
@@ -1117,12 +1117,12 @@ declare function module(): {
|
|
|
1117
1117
|
plants: number;
|
|
1118
1118
|
score: number;
|
|
1119
1119
|
};
|
|
1120
|
-
life_state: "
|
|
1120
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1121
1121
|
ping: number;
|
|
1122
1122
|
};
|
|
1123
1123
|
}) => arktype2.Out<{
|
|
1124
1124
|
content: {
|
|
1125
|
-
starting_side: "
|
|
1125
|
+
starting_side: "attacker" | "defender" | "both" | "invalid";
|
|
1126
1126
|
player_id: SiegePlayerId;
|
|
1127
1127
|
profile_id: string;
|
|
1128
1128
|
is_bot: boolean;
|
|
@@ -1130,7 +1130,7 @@ declare function module(): {
|
|
|
1130
1130
|
is_squad_member: boolean;
|
|
1131
1131
|
is_local_player: boolean;
|
|
1132
1132
|
username: string;
|
|
1133
|
-
side: "
|
|
1133
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1134
1134
|
team: 0 | 1;
|
|
1135
1135
|
is_privacy_username: boolean;
|
|
1136
1136
|
has_avatar_hidden: boolean;
|
|
@@ -1143,7 +1143,7 @@ declare function module(): {
|
|
|
1143
1143
|
plants: number;
|
|
1144
1144
|
score: number;
|
|
1145
1145
|
};
|
|
1146
|
-
life_state: "
|
|
1146
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1147
1147
|
ping: number;
|
|
1148
1148
|
};
|
|
1149
1149
|
game: "siege";
|
|
@@ -1185,7 +1185,7 @@ declare function module(): {
|
|
|
1185
1185
|
creation_time: number;
|
|
1186
1186
|
content: {
|
|
1187
1187
|
player_id: SiegePlayerId;
|
|
1188
|
-
side: "
|
|
1188
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1189
1189
|
};
|
|
1190
1190
|
};
|
|
1191
1191
|
player_stats_changed: {
|
|
@@ -1251,7 +1251,7 @@ declare function module(): {
|
|
|
1251
1251
|
creation_time: number;
|
|
1252
1252
|
content: {
|
|
1253
1253
|
player_id: SiegePlayerId;
|
|
1254
|
-
life_state: "
|
|
1254
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1255
1255
|
};
|
|
1256
1256
|
};
|
|
1257
1257
|
player_died: {
|
|
@@ -1338,8 +1338,8 @@ declare const PlayerDamageDataSchema: arktype_internal_methods_object_ts0.Object
|
|
|
1338
1338
|
remaining_health: number;
|
|
1339
1339
|
pre_damage_health: number;
|
|
1340
1340
|
max_health: number;
|
|
1341
|
-
damage_type: "
|
|
1342
|
-
damage_team_type: "
|
|
1341
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
1342
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
1343
1343
|
damage_item_id: SiegeItemObjectId | null;
|
|
1344
1344
|
damage_time: number;
|
|
1345
1345
|
}, {}>;
|
|
@@ -1350,11 +1350,11 @@ declare const MatchRoundDataSchema: arktype_internal_methods_object_ts0.ObjectTy
|
|
|
1350
1350
|
segment_size: number;
|
|
1351
1351
|
segment_index: number;
|
|
1352
1352
|
team_0: {
|
|
1353
|
-
role: "
|
|
1353
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1354
1354
|
state: SiegeRoundState;
|
|
1355
1355
|
};
|
|
1356
1356
|
team_1: {
|
|
1357
|
-
role: "
|
|
1357
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1358
1358
|
state: SiegeRoundState;
|
|
1359
1359
|
};
|
|
1360
1360
|
}, {}>;
|
|
@@ -1374,7 +1374,7 @@ type MapData = typeof MapDataSchema.infer;
|
|
|
1374
1374
|
declare const RoundEndPlayerDataSchema: arktype_internal_methods_object_ts0.ObjectType<{
|
|
1375
1375
|
player_id: SiegePlayerId;
|
|
1376
1376
|
final_health: number;
|
|
1377
|
-
final_life_state: "
|
|
1377
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1378
1378
|
operator_name: {
|
|
1379
1379
|
id: SiegeOperatorNameId;
|
|
1380
1380
|
value: string;
|
|
@@ -1388,11 +1388,11 @@ declare const RoundEndDataSchema: arktype_internal_methods_object_ts0.ObjectType
|
|
|
1388
1388
|
segment_size: number;
|
|
1389
1389
|
segment_index: number;
|
|
1390
1390
|
team_0: {
|
|
1391
|
-
role: "
|
|
1391
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1392
1392
|
state: SiegeRoundState;
|
|
1393
1393
|
};
|
|
1394
1394
|
team_1: {
|
|
1395
|
-
role: "
|
|
1395
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1396
1396
|
state: SiegeRoundState;
|
|
1397
1397
|
};
|
|
1398
1398
|
};
|
|
@@ -1403,15 +1403,15 @@ declare const RoundEndDataSchema: arktype_internal_methods_object_ts0.ObjectType
|
|
|
1403
1403
|
remaining_health: number;
|
|
1404
1404
|
pre_damage_health: number;
|
|
1405
1405
|
max_health: number;
|
|
1406
|
-
damage_type: "
|
|
1407
|
-
damage_team_type: "
|
|
1406
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
1407
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
1408
1408
|
damage_item_id: SiegeItemObjectId | null;
|
|
1409
1409
|
damage_time: number;
|
|
1410
1410
|
}[];
|
|
1411
1411
|
players: {
|
|
1412
1412
|
player_id: SiegePlayerId;
|
|
1413
1413
|
final_health: number;
|
|
1414
|
-
final_life_state: "
|
|
1414
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1415
1415
|
operator_name: {
|
|
1416
1416
|
id: SiegeOperatorNameId;
|
|
1417
1417
|
value: string;
|
|
@@ -1465,11 +1465,11 @@ declare const MatchStarted: arktype_internal_methods_object_ts0.ObjectType<{
|
|
|
1465
1465
|
segment_size: number;
|
|
1466
1466
|
segment_index: number;
|
|
1467
1467
|
team_0: {
|
|
1468
|
-
role: "
|
|
1468
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1469
1469
|
state: SiegeRoundState;
|
|
1470
1470
|
};
|
|
1471
1471
|
team_1: {
|
|
1472
|
-
role: "
|
|
1472
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1473
1473
|
state: SiegeRoundState;
|
|
1474
1474
|
};
|
|
1475
1475
|
}[];
|
|
@@ -1574,7 +1574,7 @@ declare const OperatorBanned: arktype_internal_methods_object_ts0.ObjectType<{
|
|
|
1574
1574
|
content: {
|
|
1575
1575
|
index: number;
|
|
1576
1576
|
team: 0 | 1;
|
|
1577
|
-
side: "
|
|
1577
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1578
1578
|
operator_name: {
|
|
1579
1579
|
id: SiegeOperatorNameId;
|
|
1580
1580
|
value: string;
|
|
@@ -1596,11 +1596,11 @@ declare const RoundEnded: arktype_internal_methods_object_ts0.ObjectType<{
|
|
|
1596
1596
|
segment_size: number;
|
|
1597
1597
|
segment_index: number;
|
|
1598
1598
|
team_0: {
|
|
1599
|
-
role: "
|
|
1599
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1600
1600
|
state: SiegeRoundState;
|
|
1601
1601
|
};
|
|
1602
1602
|
team_1: {
|
|
1603
|
-
role: "
|
|
1603
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1604
1604
|
state: SiegeRoundState;
|
|
1605
1605
|
};
|
|
1606
1606
|
};
|
|
@@ -1611,15 +1611,15 @@ declare const RoundEnded: arktype_internal_methods_object_ts0.ObjectType<{
|
|
|
1611
1611
|
remaining_health: number;
|
|
1612
1612
|
pre_damage_health: number;
|
|
1613
1613
|
max_health: number;
|
|
1614
|
-
damage_type: "
|
|
1615
|
-
damage_team_type: "
|
|
1614
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
1615
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
1616
1616
|
damage_item_id: SiegeItemObjectId | null;
|
|
1617
1617
|
damage_time: number;
|
|
1618
1618
|
}[];
|
|
1619
1619
|
players: {
|
|
1620
1620
|
player_id: SiegePlayerId;
|
|
1621
1621
|
final_health: number;
|
|
1622
|
-
final_life_state: "
|
|
1622
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1623
1623
|
operator_name: {
|
|
1624
1624
|
id: SiegeOperatorNameId;
|
|
1625
1625
|
value: string;
|
|
@@ -1636,7 +1636,7 @@ declare const PhaseChanged: arktype_internal_methods_object_ts0.ObjectType<{
|
|
|
1636
1636
|
type: "phase_changed";
|
|
1637
1637
|
creation_time: number;
|
|
1638
1638
|
content: {
|
|
1639
|
-
phase: "intro" | "planning" | "prep" | "action" | "results"
|
|
1639
|
+
phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
|
|
1640
1640
|
};
|
|
1641
1641
|
}, {}>;
|
|
1642
1642
|
type PhaseChangedEvent = typeof PhaseChanged.infer;
|
|
@@ -1655,7 +1655,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
|
|
|
1655
1655
|
is_squad_member: boolean;
|
|
1656
1656
|
is_local_player: boolean;
|
|
1657
1657
|
username: string;
|
|
1658
|
-
side: "
|
|
1658
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1659
1659
|
team: 0 | 1;
|
|
1660
1660
|
is_privacy_username: boolean;
|
|
1661
1661
|
has_avatar_hidden: boolean;
|
|
@@ -1668,12 +1668,12 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
|
|
|
1668
1668
|
plants: number;
|
|
1669
1669
|
score: number;
|
|
1670
1670
|
};
|
|
1671
|
-
life_state: "
|
|
1671
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1672
1672
|
ping: number;
|
|
1673
1673
|
};
|
|
1674
1674
|
}) => arktype2.Out<{
|
|
1675
1675
|
content: {
|
|
1676
|
-
starting_side: "
|
|
1676
|
+
starting_side: "attacker" | "defender" | "both" | "invalid";
|
|
1677
1677
|
player_id: SiegePlayerId;
|
|
1678
1678
|
profile_id: string;
|
|
1679
1679
|
is_bot: boolean;
|
|
@@ -1681,7 +1681,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
|
|
|
1681
1681
|
is_squad_member: boolean;
|
|
1682
1682
|
is_local_player: boolean;
|
|
1683
1683
|
username: string;
|
|
1684
|
-
side: "
|
|
1684
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1685
1685
|
team: 0 | 1;
|
|
1686
1686
|
is_privacy_username: boolean;
|
|
1687
1687
|
has_avatar_hidden: boolean;
|
|
@@ -1694,7 +1694,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
|
|
|
1694
1694
|
plants: number;
|
|
1695
1695
|
score: number;
|
|
1696
1696
|
};
|
|
1697
|
-
life_state: "
|
|
1697
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1698
1698
|
ping: number;
|
|
1699
1699
|
};
|
|
1700
1700
|
game: "siege";
|
|
@@ -1752,7 +1752,7 @@ declare const PlayerSideChanged: arktype_internal_methods_object_ts0.ObjectType<
|
|
|
1752
1752
|
creation_time: number;
|
|
1753
1753
|
content: {
|
|
1754
1754
|
player_id: SiegePlayerId;
|
|
1755
|
-
side: "
|
|
1755
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
1756
1756
|
};
|
|
1757
1757
|
}, {}>;
|
|
1758
1758
|
type PlayerSideChangedEvent = typeof PlayerSideChanged.infer;
|
|
@@ -1846,7 +1846,7 @@ declare const PlayerLifeStateChanged: arktype_internal_methods_object_ts0.Object
|
|
|
1846
1846
|
creation_time: number;
|
|
1847
1847
|
content: {
|
|
1848
1848
|
player_id: SiegePlayerId;
|
|
1849
|
-
life_state: "
|
|
1849
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
1850
1850
|
};
|
|
1851
1851
|
}, {}>;
|
|
1852
1852
|
type PlayerLifeStateChangedEvent = typeof PlayerLifeStateChanged.infer;
|
|
@@ -1977,11 +1977,11 @@ declare const events: arktype2.Module<{
|
|
|
1977
1977
|
segment_size: number;
|
|
1978
1978
|
segment_index: number;
|
|
1979
1979
|
team_0: {
|
|
1980
|
-
role: "
|
|
1980
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1981
1981
|
state: SiegeRoundState;
|
|
1982
1982
|
};
|
|
1983
1983
|
team_1: {
|
|
1984
|
-
role: "
|
|
1984
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
1985
1985
|
state: SiegeRoundState;
|
|
1986
1986
|
};
|
|
1987
1987
|
}[];
|
|
@@ -2014,7 +2014,7 @@ declare const events: arktype2.Module<{
|
|
|
2014
2014
|
content: {
|
|
2015
2015
|
index: number;
|
|
2016
2016
|
team: 0 | 1;
|
|
2017
|
-
side: "
|
|
2017
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2018
2018
|
operator_name: {
|
|
2019
2019
|
id: SiegeOperatorNameId;
|
|
2020
2020
|
value: string;
|
|
@@ -2031,11 +2031,11 @@ declare const events: arktype2.Module<{
|
|
|
2031
2031
|
segment_size: number;
|
|
2032
2032
|
segment_index: number;
|
|
2033
2033
|
team_0: {
|
|
2034
|
-
role: "
|
|
2034
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2035
2035
|
state: SiegeRoundState;
|
|
2036
2036
|
};
|
|
2037
2037
|
team_1: {
|
|
2038
|
-
role: "
|
|
2038
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2039
2039
|
state: SiegeRoundState;
|
|
2040
2040
|
};
|
|
2041
2041
|
};
|
|
@@ -2046,15 +2046,15 @@ declare const events: arktype2.Module<{
|
|
|
2046
2046
|
remaining_health: number;
|
|
2047
2047
|
pre_damage_health: number;
|
|
2048
2048
|
max_health: number;
|
|
2049
|
-
damage_type: "
|
|
2050
|
-
damage_team_type: "
|
|
2049
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
2050
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
2051
2051
|
damage_item_id: SiegeItemObjectId | null;
|
|
2052
2052
|
damage_time: number;
|
|
2053
2053
|
}[];
|
|
2054
2054
|
players: {
|
|
2055
2055
|
player_id: SiegePlayerId;
|
|
2056
2056
|
final_health: number;
|
|
2057
|
-
final_life_state: "
|
|
2057
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2058
2058
|
operator_name: {
|
|
2059
2059
|
id: SiegeOperatorNameId;
|
|
2060
2060
|
value: string;
|
|
@@ -2066,7 +2066,7 @@ declare const events: arktype2.Module<{
|
|
|
2066
2066
|
type: "phase_changed";
|
|
2067
2067
|
creation_time: number;
|
|
2068
2068
|
content: {
|
|
2069
|
-
phase: "intro" | "planning" | "prep" | "action" | "results"
|
|
2069
|
+
phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
|
|
2070
2070
|
};
|
|
2071
2071
|
} | ((In: {
|
|
2072
2072
|
game: "siege";
|
|
@@ -2080,7 +2080,7 @@ declare const events: arktype2.Module<{
|
|
|
2080
2080
|
is_squad_member: boolean;
|
|
2081
2081
|
is_local_player: boolean;
|
|
2082
2082
|
username: string;
|
|
2083
|
-
side: "
|
|
2083
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2084
2084
|
team: 0 | 1;
|
|
2085
2085
|
is_privacy_username: boolean;
|
|
2086
2086
|
has_avatar_hidden: boolean;
|
|
@@ -2093,12 +2093,12 @@ declare const events: arktype2.Module<{
|
|
|
2093
2093
|
plants: number;
|
|
2094
2094
|
score: number;
|
|
2095
2095
|
};
|
|
2096
|
-
life_state: "
|
|
2096
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2097
2097
|
ping: number;
|
|
2098
2098
|
};
|
|
2099
2099
|
}) => arktype2.Out<{
|
|
2100
2100
|
content: {
|
|
2101
|
-
starting_side: "
|
|
2101
|
+
starting_side: "attacker" | "defender" | "both" | "invalid";
|
|
2102
2102
|
player_id: SiegePlayerId;
|
|
2103
2103
|
profile_id: string;
|
|
2104
2104
|
is_bot: boolean;
|
|
@@ -2106,7 +2106,7 @@ declare const events: arktype2.Module<{
|
|
|
2106
2106
|
is_squad_member: boolean;
|
|
2107
2107
|
is_local_player: boolean;
|
|
2108
2108
|
username: string;
|
|
2109
|
-
side: "
|
|
2109
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2110
2110
|
team: 0 | 1;
|
|
2111
2111
|
is_privacy_username: boolean;
|
|
2112
2112
|
has_avatar_hidden: boolean;
|
|
@@ -2119,7 +2119,7 @@ declare const events: arktype2.Module<{
|
|
|
2119
2119
|
plants: number;
|
|
2120
2120
|
score: number;
|
|
2121
2121
|
};
|
|
2122
|
-
life_state: "
|
|
2122
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2123
2123
|
ping: number;
|
|
2124
2124
|
};
|
|
2125
2125
|
game: "siege";
|
|
@@ -2157,7 +2157,7 @@ declare const events: arktype2.Module<{
|
|
|
2157
2157
|
creation_time: number;
|
|
2158
2158
|
content: {
|
|
2159
2159
|
player_id: SiegePlayerId;
|
|
2160
|
-
side: "
|
|
2160
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2161
2161
|
};
|
|
2162
2162
|
} | {
|
|
2163
2163
|
game: "siege";
|
|
@@ -2216,7 +2216,7 @@ declare const events: arktype2.Module<{
|
|
|
2216
2216
|
creation_time: number;
|
|
2217
2217
|
content: {
|
|
2218
2218
|
player_id: SiegePlayerId;
|
|
2219
|
-
life_state: "
|
|
2219
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2220
2220
|
};
|
|
2221
2221
|
} | {
|
|
2222
2222
|
game: "siege";
|
|
@@ -2327,11 +2327,11 @@ declare const events: arktype2.Module<{
|
|
|
2327
2327
|
segment_size: number;
|
|
2328
2328
|
segment_index: number;
|
|
2329
2329
|
team_0: {
|
|
2330
|
-
role: "
|
|
2330
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2331
2331
|
state: SiegeRoundState;
|
|
2332
2332
|
};
|
|
2333
2333
|
team_1: {
|
|
2334
|
-
role: "
|
|
2334
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2335
2335
|
state: SiegeRoundState;
|
|
2336
2336
|
};
|
|
2337
2337
|
}[];
|
|
@@ -2367,7 +2367,7 @@ declare const events: arktype2.Module<{
|
|
|
2367
2367
|
content: {
|
|
2368
2368
|
index: number;
|
|
2369
2369
|
team: 0 | 1;
|
|
2370
|
-
side: "
|
|
2370
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2371
2371
|
operator_name: {
|
|
2372
2372
|
id: SiegeOperatorNameId;
|
|
2373
2373
|
value: string;
|
|
@@ -2385,11 +2385,11 @@ declare const events: arktype2.Module<{
|
|
|
2385
2385
|
segment_size: number;
|
|
2386
2386
|
segment_index: number;
|
|
2387
2387
|
team_0: {
|
|
2388
|
-
role: "
|
|
2388
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2389
2389
|
state: SiegeRoundState;
|
|
2390
2390
|
};
|
|
2391
2391
|
team_1: {
|
|
2392
|
-
role: "
|
|
2392
|
+
role: "attacker" | "defender" | "both" | "invalid";
|
|
2393
2393
|
state: SiegeRoundState;
|
|
2394
2394
|
};
|
|
2395
2395
|
};
|
|
@@ -2400,15 +2400,15 @@ declare const events: arktype2.Module<{
|
|
|
2400
2400
|
remaining_health: number;
|
|
2401
2401
|
pre_damage_health: number;
|
|
2402
2402
|
max_health: number;
|
|
2403
|
-
damage_type: "
|
|
2404
|
-
damage_team_type: "
|
|
2403
|
+
damage_type: "unknown" | "invalid" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "downed" | "gas" | "thermal_explosion" | "melee_gadget" | "barbed_wire" | "electric" | "reinforcement" | "frag" | "paralyzed" | "emp" | "break" | "cleanup" | "interrogation" | "melee-finisher" | "toxic" | "toxic-explosion" | "pneumatic" | "body-contact" | "contact-explosion" | "flash" | "parasite-spike" | "laser" | "concussion" | "blowtorch" | "taser-shield" | "reverse-friendly-fire" | "self-destroyed" | "area-control" | "fire" | "breach-kick" | "break-wall" | "blade-mine";
|
|
2404
|
+
damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
|
|
2405
2405
|
damage_item_id: SiegeItemObjectId | null;
|
|
2406
2406
|
damage_time: number;
|
|
2407
2407
|
}[];
|
|
2408
2408
|
players: {
|
|
2409
2409
|
player_id: SiegePlayerId;
|
|
2410
2410
|
final_health: number;
|
|
2411
|
-
final_life_state: "
|
|
2411
|
+
final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2412
2412
|
operator_name: {
|
|
2413
2413
|
id: SiegeOperatorNameId;
|
|
2414
2414
|
value: string;
|
|
@@ -2421,7 +2421,7 @@ declare const events: arktype2.Module<{
|
|
|
2421
2421
|
type: "phase_changed";
|
|
2422
2422
|
creation_time: number;
|
|
2423
2423
|
content: {
|
|
2424
|
-
phase: "intro" | "planning" | "prep" | "action" | "results"
|
|
2424
|
+
phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
|
|
2425
2425
|
};
|
|
2426
2426
|
};
|
|
2427
2427
|
player_joined: (In: {
|
|
@@ -2436,7 +2436,7 @@ declare const events: arktype2.Module<{
|
|
|
2436
2436
|
is_squad_member: boolean;
|
|
2437
2437
|
is_local_player: boolean;
|
|
2438
2438
|
username: string;
|
|
2439
|
-
side: "
|
|
2439
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2440
2440
|
team: 0 | 1;
|
|
2441
2441
|
is_privacy_username: boolean;
|
|
2442
2442
|
has_avatar_hidden: boolean;
|
|
@@ -2449,12 +2449,12 @@ declare const events: arktype2.Module<{
|
|
|
2449
2449
|
plants: number;
|
|
2450
2450
|
score: number;
|
|
2451
2451
|
};
|
|
2452
|
-
life_state: "
|
|
2452
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2453
2453
|
ping: number;
|
|
2454
2454
|
};
|
|
2455
2455
|
}) => arktype2.Out<{
|
|
2456
2456
|
content: {
|
|
2457
|
-
starting_side: "
|
|
2457
|
+
starting_side: "attacker" | "defender" | "both" | "invalid";
|
|
2458
2458
|
player_id: SiegePlayerId;
|
|
2459
2459
|
profile_id: string;
|
|
2460
2460
|
is_bot: boolean;
|
|
@@ -2462,7 +2462,7 @@ declare const events: arktype2.Module<{
|
|
|
2462
2462
|
is_squad_member: boolean;
|
|
2463
2463
|
is_local_player: boolean;
|
|
2464
2464
|
username: string;
|
|
2465
|
-
side: "
|
|
2465
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2466
2466
|
team: 0 | 1;
|
|
2467
2467
|
is_privacy_username: boolean;
|
|
2468
2468
|
has_avatar_hidden: boolean;
|
|
@@ -2475,7 +2475,7 @@ declare const events: arktype2.Module<{
|
|
|
2475
2475
|
plants: number;
|
|
2476
2476
|
score: number;
|
|
2477
2477
|
};
|
|
2478
|
-
life_state: "
|
|
2478
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2479
2479
|
ping: number;
|
|
2480
2480
|
};
|
|
2481
2481
|
game: "siege";
|
|
@@ -2517,7 +2517,7 @@ declare const events: arktype2.Module<{
|
|
|
2517
2517
|
creation_time: number;
|
|
2518
2518
|
content: {
|
|
2519
2519
|
player_id: SiegePlayerId;
|
|
2520
|
-
side: "
|
|
2520
|
+
side: "attacker" | "defender" | "both" | "invalid";
|
|
2521
2521
|
};
|
|
2522
2522
|
};
|
|
2523
2523
|
player_stats_changed: {
|
|
@@ -2583,7 +2583,7 @@ declare const events: arktype2.Module<{
|
|
|
2583
2583
|
creation_time: number;
|
|
2584
2584
|
content: {
|
|
2585
2585
|
player_id: SiegePlayerId;
|
|
2586
|
-
life_state: "
|
|
2586
|
+
life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
|
|
2587
2587
|
};
|
|
2588
2588
|
};
|
|
2589
2589
|
player_died: {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@overlayed/app",
|
|
3
3
|
"author": "overlayed.gg",
|
|
4
4
|
"homepage": "https://overlayed.gg",
|
|
5
|
-
"version": "0.17.
|
|
5
|
+
"version": "0.17.3",
|
|
6
6
|
"description": "Overlayed app",
|
|
7
7
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
8
8
|
"repository": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@ark/attest": "^0.48.2",
|
|
59
|
-
"@overlayed-gg/native-interface": "0.1.
|
|
59
|
+
"@overlayed-gg/native-interface": "0.1.10",
|
|
60
60
|
"@overlayed-gg/render-interface": "0.1.11",
|
|
61
61
|
"msw": "^2.10.4",
|
|
62
62
|
"rev-utils": "https://r2.reviq.app/rev-utils-v1.0.3.tgz",
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"vite": "^7.0.5",
|
|
66
66
|
"vitest": "^3.2.4",
|
|
67
67
|
"@overlayed/api": "0.0.3",
|
|
68
|
-
"@overlayed/cortex-client": "0.0.3",
|
|
69
68
|
"@overlayed/events": "0.0.3",
|
|
70
|
-
"@overlayed/native-managers": "0.0.3",
|
|
71
69
|
"@overlayed/siege": "0.0.3",
|
|
70
|
+
"@overlayed/cortex-client": "0.0.3",
|
|
71
|
+
"@overlayed/native-managers": "0.0.3",
|
|
72
72
|
"@overlayed/utils": "0.0.3",
|
|
73
73
|
"@overlayed/utils-node": "0.0.3"
|
|
74
74
|
},
|