@overlayed/app 0.18.3 → 0.18.4

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{Type as t,type as n}from"arkt
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:Be,stderr:Ve}=Le,w=Symbol(`GENERATOR`),T=Symbol(`STYLER`),E=Symbol(`IS_EMPTY`),He=[`ansi`,`ansi`,`ansi256`,`ansi16m`],D=Object.create(null),Ue=(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=Be?Be.level:0;e.level=t.level===void 0?n:t.level},We=e=>{let t=(...e)=>e.join(` `);return Ue(t,e),Object.setPrototypeOf(t,O.prototype),t};function O(e){return We(e)}Object.setPrototypeOf(O.prototype,Function.prototype);for(let[e,t]of Object.entries(b))D[e]={get(){let n=A(this,qe(t.open,t.close,this[T]),this[E]);return Object.defineProperty(this,e,{value:n}),n}};D.visible={get(){let e=A(this,this[T],!0);return Object.defineProperty(this,`visible`,{value:e}),e}};const k=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?b[n].ansi16m(...r):t===`ansi256`?b[n].ansi256(b.rgbToAnsi256(...r)):b[n].ansi(b.rgbToAnsi(...r)):e===`hex`?k(`rgb`,t,n,...b.hexToRgb(...r)):b[n][e](...r),Ge=[`rgb`,`hex`,`ansi256`];for(let e of Ge){D[e]={get(){let{level:t}=this;return function(...n){let r=qe(k(e,He[t],`color`,...n),b.color.close,this[T]);return A(this,r,this[E])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);D[t]={get(){let{level:t}=this;return function(...n){let r=qe(k(e,He[t],`bgColor`,...n),b.bgColor.close,this[T]);return A(this,r,this[E])}}}}const Ke=Object.defineProperties(()=>{},{...D,level:{enumerable:!0,get(){return this[w].level},set(e){this[w].level=e}}}),qe=(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}},A=(e,t,n)=>{let r=(...e)=>Je(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,Ke),r[w]=e,r[T]=t,r[E]=n,r},Je=(e,t)=>{if(e.level<=0||!t)return e[E]?``:t;let n=e[T];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=Re(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
5
- `);return a!==-1&&(t=ze(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);const Ye=O();O({level:Ve?Ve.level:0});var j=Ye,M=class{emitter;constructor(){this.emitter=r()}on(e,t){_(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){_(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){_(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},Xe=class{listeners;constructor(){this.listeners=new Map}on(e,t){_(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){_(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=_(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});if(n.length===0)return[];let r=await Promise.all(n.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 r}removeAllListeners(){this.listeners.clear()}};function N(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 M{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 P=N(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=n(`string.json.parse`).to(`object`),r=t(e);if(r instanceof n.errors)return this._defaultValue;let i=this._schema[`~standard`].validate(r);if(i instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return i.issues?this.migrate(r,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){P.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},$e=class e extends M{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 F=()=>p.join(process.env.APPDATA??``,`overlayed`),et=()=>p.join(F(),`logs`),tt=e=>p.join(F(),`apps`,e),nt=e=>p.join(tt(e),`logs`),rt=()=>p.join(F(),`meta.json`);var it=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.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:j.red,warn:j.yellow,debug:j.blue,log:j.white};if(this.silent&&!this._debug)return;let{timestamp:r,message:i}=$e.getMessageElements(e,...t),a=console[e],o=n[e];a(`${j.gray(r)} ${o(i)}`)}};const I=N(it,`overlayed.log`);var at=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 ot(e,t){let{recursive:n}=st(t);return se(e)?n?ct(e).map(t=>[e,t]):ue(e).map(t=>[e,t]):[]}function st(e){return{recursive:e?.recursive??!0}}function ct(e){return ue(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?ct(n):[n]})}function lt(e){return e}const ut=e(import.meta.url),{PipeEventServer:dt,PipeEventClient:ft,PipeEventBase:pt,ProcessMonitor:mt,Process:ht,InjectionMethod:gt,AccessLevel:_t,HardwareInterface:vt}=ut(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var yt=class extends M{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 dt(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 L=N(yt,`stats-cc`);var bt=class{logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},R=class extends M{logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},xt=class extends Xe{logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const z=fe.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let St;function Ct(e){St=e}z.interceptors.request.use(e=>{let t=St?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const B=fe.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let wt,Tt;B.interceptors.request.use(e=>{let t=wt?.(),n=Tt?.();return e.headers??={},t&&(e.headers.Authorization=t),n&&(e.headers[`X-Api-Key`]=n),e});function Et(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 Dt(e){return e}function V(e){return e?t=>(e(t),t):Dt}V();const Ot=V();function kt(e){return B.get(`/v1/public/applications/${e}`)}V();function At(e,t){return z.get(`/v1/native/${Mt(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function jt(e,t){return z.get(`/v1/native/${Mt(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function Mt(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function Nt(){return B.get(`/v1/public/raven/config`)}V();function Pt(e,t){return B.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Ft(e,t){return B.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function It(e,t){let n=new FormData;return n.append(`file`,t.chunk),B.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}const Lt=250;function Rt(e){let t=Date.now(),n=e.messages.map(e=>zt(t,e)),r=Et(n,Lt),i=Promise.all(r.map(async t=>B.post(`/v1/public/cortex/events`,{...e,messages:t})));return i.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),i}function zt(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function Bt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function Vt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Ht;function Ut(e){Ht=e}var Wt=class extends R{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(F(),`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 Ht?.();for(let n of e)try{let{data:e}=await At(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 jt(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 H=N(Wt);var Gt=class extends R{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),H.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await Nt(),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 H.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 U=N(Gt),Kt=e(import.meta.url),{PipeEventServer:qt,PipeEventClient:Jt,PipeEventBase:Yt,ProcessMonitor:Xt,Process:W,InjectionMethod:Zt,AccessLevel:Qt,HardwareInterface:$t}=Kt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var en=class extends R{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Xt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),U.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(){U.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 G=N(en),tn=e(import.meta.url),{RenderInterface:nn,renderHookPath:rn}=tn(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var an=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}}},on=class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new an(new nn(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}};const K=N(on);var sn=class{options;eventQueue;meta=null;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})}flush(){let e=Array.from(this.eventQueue.flush()),t=e.concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{Rt({...this.meta,messages:t})}catch{}return t}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}};const q=N(sn),cn=e(import.meta.url),ln=cn.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`);var un=class extends xt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;_activeReadyRavenGames=new Set;get isInGame(){return this._activeReadyRavenGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),G.getInstance().on(`create`,this.boundOnProcessCreate),G.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){G.getInstance().off(`create`,this.boundOnProcessCreate),G.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(q.getInstance().track(`game_launch`,{game:t.identifier}),!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: `,W.currentProcess.isElevated),e.isElevated&&!W.currentProcess.isElevated){P.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!W.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:W.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(ln);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 H.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=H.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._activeReadyRavenGames.add(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),q.getInstance().track(`game_ready`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=ee(e),r=p.join(F(),`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._activeReadyRavenGames.delete(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),q.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=U.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}};const J=N(un);var dn=class extends bt{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){J.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 Pt(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 at(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Ft(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 It(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){Bt(e)?Vt(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 fn=N(dn);function pn(e=[]){return p.normalize(p.join(tt(global.OVERLAYED.APPLICATION_ID),...e))}const mn=n({game:`string`,type:`string`,creation_time:`number`}),hn=new Qe({path:rt(),schema:n({userId:`string | undefined`}),default:{userId:void 0}});function gn(){let e=hn.get().userId;if(e)return e;let t=_n();return hn.set({userId:t}),t}function _n(){try{return $t.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}function Y(e,t){return`${e}:${t}`}function vn(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Y(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Y(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Y(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Y(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function yn(){let e=P.getInstance(),t=J.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]})}}}}var X=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}(X||{});const bn=new Map([[X.LeftButton,`LeftButton`],[X.RightButton,`RightButton`],[X.Cancel,`Cancel`],[X.MiddleButton,`MiddleButton`],[X.ExtraButton1,`ExtraButton1`],[X.ExtraButton2,`ExtraButton2`],[X.Back,`Backspace`],[X.Tab,`Tab`],[X.Clear,`Clear`],[X.Return,`Enter`],[X.Shift,`ShiftLeft`],[X.Control,`ControlLeft`],[X.Menu,`AltLeft`],[X.Pause,`Pause`],[X.CapsLock,`CapsLock`],[X.Kana,`KanaMode`],[X.Junja,`JunjaMode`],[X.Final,`Finalize`],[X.Hanja,`HanjaMode`],[X.Escape,`Escape`],[X.Convert,`Convert`],[X.NonConvert,`NonConvert`],[X.Accept,`Accept`],[X.ModeChange,`ModeChange`],[X.Space,`Space`],[X.Prior,`PageUp`],[X.Next,`PageDown`],[X.End,`End`],[X.Home,`Home`],[X.Left,`ArrowLeft`],[X.Up,`ArrowUp`],[X.Right,`ArrowRight`],[X.Down,`ArrowDown`],[X.Select,`Select`],[X.Print,`PrintScreen`],[X.Execute,`Execute`],[X.Snapshot,`Snapshot`],[X.Insert,`Insert`],[X.Delete,`Delete`],[X.Help,`Help`],[X.N0,`Digit0`],[X.N1,`Digit1`],[X.N2,`Digit2`],[X.N3,`Digit3`],[X.N4,`Digit4`],[X.N5,`Digit5`],[X.N6,`Digit6`],[X.N7,`Digit7`],[X.N8,`Digit8`],[X.N9,`Digit9`],[X.A,`KeyA`],[X.B,`KeyB`],[X.C,`KeyC`],[X.D,`KeyD`],[X.E,`KeyE`],[X.F,`KeyF`],[X.G,`KeyG`],[X.H,`KeyH`],[X.I,`KeyI`],[X.J,`KeyJ`],[X.K,`KeyK`],[X.L,`KeyL`],[X.M,`KeyM`],[X.N,`KeyN`],[X.O,`KeyO`],[X.P,`KeyP`],[X.Q,`KeyQ`],[X.R,`KeyR`],[X.S,`KeyS`],[X.T,`KeyT`],[X.U,`KeyU`],[X.V,`KeyV`],[X.W,`KeyW`],[X.X,`KeyX`],[X.Y,`KeyY`],[X.Z,`KeyZ`],[X.LeftWindows,`MetaLeft`],[X.RightWindows,`MetaRight`],[X.Application,`ContextMenu`],[X.Sleep,`Sleep`],[X.Numpad0,`Numpad0`],[X.Numpad1,`Numpad1`],[X.Numpad2,`Numpad2`],[X.Numpad3,`Numpad3`],[X.Numpad4,`Numpad4`],[X.Numpad5,`Numpad5`],[X.Numpad6,`Numpad6`],[X.Numpad7,`Numpad7`],[X.Numpad8,`Numpad8`],[X.Numpad9,`Numpad9`],[X.Multiply,`NumpadMultiply`],[X.Add,`NumpadAdd`],[X.Separator,`NumpadSeparator`],[X.Subtract,`NumpadSubtract`],[X.Decimal,`NumpadDecimal`],[X.Divide,`NumpadDivide`],[X.F1,`F1`],[X.F2,`F2`],[X.F3,`F3`],[X.F4,`F4`],[X.F5,`F5`],[X.F6,`F6`],[X.F7,`F7`],[X.F8,`F8`],[X.F9,`F9`],[X.F10,`F10`],[X.F11,`F11`],[X.F12,`F12`],[X.F13,`F13`],[X.F14,`F14`],[X.F15,`F15`],[X.F16,`F16`],[X.F17,`F17`],[X.F18,`F18`],[X.F19,`F19`],[X.F20,`F20`],[X.F21,`F21`],[X.F22,`F22`],[X.F23,`F23`],[X.F24,`F24`],[X.NumLock,`NumLock`],[X.ScrollLock,`ScrollLock`],[X.NEC_Equal,`NEC_Equal`],[X.Fujitsu_Masshou,`Fujitsu_Masshou`],[X.Fujitsu_Touroku,`Fujitsu_Touroku`],[X.Fujitsu_Loya,`Fujitsu_Loya`],[X.Fujitsu_Roya,`Fujitsu_Roya`],[X.LeftShift,`ShiftLeft`],[X.RightShift,`ShiftRight`],[X.LeftControl,`ControlLeft`],[X.RightControl,`ControlRight`],[X.LeftMenu,`AltLeft`],[X.RightMenu,`AltRight`],[X.BrowserBack,`BrowserBack`],[X.BrowserForward,`BrowserForward`],[X.BrowserRefresh,`BrowserRefresh`],[X.BrowserStop,`BrowserStop`],[X.BrowserSearch,`BrowserSearch`],[X.BrowserFavorites,`BrowserFavorites`],[X.BrowserHome,`BrowserHome`],[X.VolumeMute,`VolumeMute`],[X.VolumeDown,`VolumeDown`],[X.VolumeUp,`VolumeUp`],[X.MediaNextTrack,`MediaTrackNext`],[X.MediaPrevTrack,`MediaTrackPrevious`],[X.MediaStop,`MediaStop`],[X.MediaPlayPause,`MediaPlayPause`],[X.LaunchMail,`LaunchMail`],[X.LaunchMediaSelect,`LaunchMediaSelect`],[X.LaunchApplication1,`LaunchApplication1`],[X.LaunchApplication2,`LaunchApplication2`],[X.OEM1,`OEM_1`],[X.OEMPlus,`Equal`],[X.OEMComma,`Comma`],[X.OEMMinus,`Minus`],[X.OEMPeriod,`Period`],[X.OEM2,`Slash`],[X.OEM3,`Backquote`],[X.OEM4,`BracketLeft`],[X.OEM5,`Backslash`],[X.OEM6,`BracketRight`],[X.OEM7,`Quote`],[X.OEM8,`IntlRo`],[X.OEMAX,`OEM_AX`],[X.OEM102,`IntlBackslash`],[X.ICOHelp,`ICO_HELP`],[X.ICO00,`ICO_00`],[X.ProcessKey,`Process`],[X.ICOClear,`ICO_CLEAR`],[X.Packet,`Packet`],[X.OEMReset,`OEM_Reset`],[X.OEMJump,`OEM_Jump`],[X.OEMPA1,`OEM_PA1`],[X.OEMPA2,`OEM_PA2`],[X.OEMPA3,`OEM_PA3`],[X.OEMWSCtrl,`OEM_WS_Ctrl`],[X.OEMCUSel,`OEM_CU_Sel`],[X.OEMATTN,`OEM_ATTN`],[X.OEMFinish,`OEM_Finish`],[X.OEMCopy,`OEM_Copy`],[X.OEMAuto,`OEM_Auto`],[X.OEMENLW,`OEM_ENLW`],[X.OEMBackTab,`BackTab`],[X.ATTN,`ATTN`],[X.CRSel,`CRSel`],[X.EXSel,`EXSel`],[X.EREOF,`EREOF`],[X.Play,`MediaPlay`],[X.Zoom,`Zoom`],[X.Noname,`Noname`],[X.PA1,`PA1`],[X.OEMClear,`OEM_Clear`]]),xn=new Map(bn.entries().map(([e,t])=>[t,e])),Sn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var Cn=class extends R{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:pn([`keybinds.json`]),schema:Sn,default:e})}init(){super.init();let e=K.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=K.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=bn.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=bn.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=>xn.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=>xn.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}`:``})`}};function wn(e){let t=new Cn(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 Z(){return K.getInstance().getInterface(`OGG_SIEGE`)}function Tn(){let e=J.getInstance(),t=P.getInstance(),n=q.getInstance();n.meta=En(),e.on([`gameReady`,`gameClose`],()=>{n.meta||(n.meta=En()),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function En(){return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:gn(),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,in_game:!1}}function Dn(){function e(e,t){return e.once(`closed`,()=>{e.isDestroyed()||q.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),q.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(Z().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>Z().instance.on(e,t),off:(e,t)=>Z().instance.off(e,t),once:(e,t)=>Z().instance.once(e,t),addListener:(e,t)=>Z().instance.addListener(e,t),removeListener:(e,t)=>Z().instance.removeListener(e,t),removeAllListeners:()=>Z().instance.removeAllListeners(),prependListener:(e,t)=>Z().instance.prependListener(e,t),prependOnceListener:(e,t)=>Z().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Z(),t=L.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}var On=class extends bt{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.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 kn=N(On,`OGG_SIEGE`);function An(){return{scope:e=>kn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Z().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Z().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Z().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Z().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Z().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Z().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Z().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Z().instance.getKeyInputBlock(e)}}}function jn(){return{track:(e,t)=>{let n=q.getInstance();n.track(`custom__${String(e)}`,t)}}}var Mn=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}}),Nn=Ce(Mn(),1);function Pn(){return{registerWindow:e=>{(0,Nn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function Fn(e){let t=nt(global.OVERLAYED.APPLICATION_ID),n=ot(t,{recursive:!0}),r=et(),i=ot(r,{recursive:!0});I.getInstance().info(`Logs path: `,t),I.getInstance().info(`Overlayed logs path: `,r);let a=new g;return[...n,...i].forEach(([e,t])=>{I.getInstance().info(`Zipping: `,t);let n=oe(t),r=m(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{I.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function In(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 Ln(e){let t=new it(`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)=>{q.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=Fn(t),r=await n.generateAsync({type:`base64`});await In(e,r)}}}const Rn=1e3;function zn(e,t,r,i,a){let o=L.getInstance();function s(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=Rn){P.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${Rn}`});return}n.push(e)}}function c(r){let i=mn(r);if(i instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),P.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game);if(!o)return;let c=o.events.event,l=c(r);if(l instanceof n.errors){q.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),P.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[o.key]){s(l,o.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e?.hash,version:e?.version})}let u=Y(o.key,l.type),d=Y(o.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];m.length!==0&&m.forEach(e=>{e(l)})}return i.on(`flushEvents`,e=>{if(a[e])return;a[e]=!0;let t=r.get(e);t&&(I.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>c(e)),r.delete(e))}),o.on(`data`,e=>e.forEach(c)),o.on(`error`,e=>{P.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o}let Q=!1,Bn={},$,Vn=new M;function Hn(e){let{init:t=!0,debug:n=!1,silent:r=!0}=e;if(Un(e),I.getInstance().init(e.applicationId,n,r),Q)return $;function i(){if(Q)return;Tn();let t=new Map,n=new Map,r=vn(e.modules,t,Vn),a=yn(),o=wn(e.keybinds),s=Dn(),c=An(),l=Pn(),u=jn(),d=Ln(e);Wn(e),zn(e,t,n,Vn,Bn),Q=!0,$={...r,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>G.getInstance().hasAnyActiveProcesses,init:i,log:d,initialized:Q}}return t?(i(),$):new Proxy({init:i},{get:(e,t)=>{if(t!==`init`&&!Q)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:$[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Un(e){global.OVERLAYED={APPLICATION_ID:Ot(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.18.3`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Wn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),fn.getInstance().init(),J.getInstance().init(),G.getInstance().init(),U.getInstance().init();async function n(){let e=kt(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=gn();I.getInstance().log(`userId`,t);let n={...await e,userId:t};return I.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),q.getInstance().track(`start`,{}),me.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Gn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Gn()})}async function Gn(){await q.getInstance().flush(),U.getInstance().destroy(),J.getInstance().destroy(),fn.getInstance().destroy(),G.getInstance().destroy(),K.getInstance().getInterface(`OGG_SIEGE`).destroy(),L.getInstance().destroy(),P.getInstance().destroy()}export{lt as defineConfig,Hn as overlayed,Ut as setFetchLatestTokenCallback,Ct as setUpdaterTokenResolver};
5
+ `);return a!==-1&&(t=ze(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);const Ye=O();O({level:Ve?Ve.level:0});var j=Ye,M=class{emitter;constructor(){this.emitter=r()}on(e,t){_(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){_(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){_(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},Xe=class{listeners;constructor(){this.listeners=new Map}on(e,t){_(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){_(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=_(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});if(n.length===0)return[];let r=await Promise.all(n.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 r}removeAllListeners(){this.listeners.clear()}};function N(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 M{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 P=N(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=n(`string.json.parse`).to(`object`),r=t(e);if(r instanceof n.errors)return this._defaultValue;let i=this._schema[`~standard`].validate(r);if(i instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return i.issues?this.migrate(r,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){P.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},$e=class e extends M{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 F=()=>p.join(process.env.APPDATA??``,`overlayed`),et=()=>p.join(F(),`logs`),tt=e=>p.join(F(),`apps`,e),nt=e=>p.join(tt(e),`logs`),rt=()=>p.join(F(),`meta.json`);var it=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.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:j.red,warn:j.yellow,debug:j.blue,log:j.white};if(this.silent&&!this._debug)return;let{timestamp:r,message:i}=$e.getMessageElements(e,...t),a=console[e],o=n[e];a(`${j.gray(r)} ${o(i)}`)}};const I=N(it,`overlayed.log`);var at=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 ot(e,t){let{recursive:n}=st(t);return se(e)?n?ct(e).map(t=>[e,t]):ue(e).map(t=>[e,t]):[]}function st(e){return{recursive:e?.recursive??!0}}function ct(e){return ue(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?ct(n):[n]})}function lt(e){return e}const ut=e(import.meta.url),{PipeEventServer:dt,PipeEventClient:ft,PipeEventBase:pt,ProcessMonitor:mt,Process:ht,InjectionMethod:gt,AccessLevel:_t,HardwareInterface:vt}=ut(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var yt=class extends M{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 dt(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 L=N(yt,`stats-cc`);var bt=class{logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},R=class extends M{logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},xt=class extends Xe{logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const z=fe.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let St;function Ct(e){St=e}z.interceptors.request.use(e=>{let t=St?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const B=fe.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let wt,Tt;B.interceptors.request.use(e=>{let t=wt?.(),n=Tt?.();return e.headers??={},t&&(e.headers.Authorization=t),n&&(e.headers[`X-Api-Key`]=n),e});function Et(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 Dt(e){return e}function V(e){return e?t=>(e(t),t):Dt}V();const Ot=V();function kt(e){return B.get(`/v1/public/applications/${e}`)}V();function At(e,t){return z.get(`/v1/native/${Mt(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function jt(e,t){return z.get(`/v1/native/${Mt(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function Mt(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function Nt(){return B.get(`/v1/public/raven/config`)}V();function Pt(e,t){return B.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Ft(e,t){return B.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function It(e,t){let n=new FormData;return n.append(`file`,t.chunk),B.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}const Lt=250;function Rt(e){let t=Date.now(),n=e.messages.map(e=>zt(t,e)),r=Et(n,Lt),i=Promise.all(r.map(async t=>B.post(`/v1/public/cortex/events`,{...e,messages:t})));return i.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),i}function zt(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function Bt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function Vt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Ht;function Ut(e){Ht=e}var Wt=class extends R{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(F(),`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 Ht?.();for(let n of e)try{let{data:e}=await At(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 jt(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 H=N(Wt);var Gt=class extends R{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),H.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await Nt(),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 H.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 U=N(Gt),Kt=e(import.meta.url),{PipeEventServer:qt,PipeEventClient:Jt,PipeEventBase:Yt,ProcessMonitor:Xt,Process:W,InjectionMethod:Zt,AccessLevel:Qt,HardwareInterface:$t}=Kt(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);var en=class extends R{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Xt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),U.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(){U.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 G=N(en),tn=e(import.meta.url),{RenderInterface:nn,renderHookPath:rn}=tn(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var an=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}}},on=class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new an(new nn(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}};const K=N(on);var sn=class{options;eventQueue;meta=null;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})}flush(){let e=Array.from(this.eventQueue.flush()),t=e.concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{Rt({...this.meta,messages:t})}catch{}return t}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}};const q=N(sn),cn=e(import.meta.url),ln=cn.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`);var un=class extends xt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;_activeReadyRavenGames=new Set;get isInGame(){return this._activeReadyRavenGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),G.getInstance().on(`create`,this.boundOnProcessCreate),G.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){G.getInstance().off(`create`,this.boundOnProcessCreate),G.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(q.getInstance().track(`game_launch`,{game:t.identifier}),!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: `,W.currentProcess.isElevated),e.isElevated&&!W.currentProcess.isElevated){P.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!W.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:W.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(ln);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 H.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=H.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._activeReadyRavenGames.add(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),q.getInstance().track(`game_ready`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=ee(e),r=p.join(F(),`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._activeReadyRavenGames.delete(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),q.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=U.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}};const J=N(un);var dn=class extends bt{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){J.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 Pt(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 at(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Ft(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 It(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){Bt(e)?Vt(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 fn=N(dn);function pn(e=[]){return p.normalize(p.join(tt(global.OVERLAYED.APPLICATION_ID),...e))}const mn=n({game:`string`,type:`string`,creation_time:`number`}),hn=new Qe({path:rt(),schema:n({userId:`string | undefined`}),default:{userId:void 0}});function gn(){let e=hn.get().userId;if(e)return e;let t=_n();return hn.set({userId:t}),t}function _n(){try{return $t.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}function Y(e,t){return`${e}:${t}`}function vn(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Y(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Y(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Y(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Y(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function yn(){let e=P.getInstance(),t=J.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]})}}}}var X=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}(X||{});const bn=new Map([[X.LeftButton,`LeftButton`],[X.RightButton,`RightButton`],[X.Cancel,`Cancel`],[X.MiddleButton,`MiddleButton`],[X.ExtraButton1,`ExtraButton1`],[X.ExtraButton2,`ExtraButton2`],[X.Back,`Backspace`],[X.Tab,`Tab`],[X.Clear,`Clear`],[X.Return,`Enter`],[X.Shift,`ShiftLeft`],[X.Control,`ControlLeft`],[X.Menu,`AltLeft`],[X.Pause,`Pause`],[X.CapsLock,`CapsLock`],[X.Kana,`KanaMode`],[X.Junja,`JunjaMode`],[X.Final,`Finalize`],[X.Hanja,`HanjaMode`],[X.Escape,`Escape`],[X.Convert,`Convert`],[X.NonConvert,`NonConvert`],[X.Accept,`Accept`],[X.ModeChange,`ModeChange`],[X.Space,`Space`],[X.Prior,`PageUp`],[X.Next,`PageDown`],[X.End,`End`],[X.Home,`Home`],[X.Left,`ArrowLeft`],[X.Up,`ArrowUp`],[X.Right,`ArrowRight`],[X.Down,`ArrowDown`],[X.Select,`Select`],[X.Print,`PrintScreen`],[X.Execute,`Execute`],[X.Snapshot,`Snapshot`],[X.Insert,`Insert`],[X.Delete,`Delete`],[X.Help,`Help`],[X.N0,`Digit0`],[X.N1,`Digit1`],[X.N2,`Digit2`],[X.N3,`Digit3`],[X.N4,`Digit4`],[X.N5,`Digit5`],[X.N6,`Digit6`],[X.N7,`Digit7`],[X.N8,`Digit8`],[X.N9,`Digit9`],[X.A,`KeyA`],[X.B,`KeyB`],[X.C,`KeyC`],[X.D,`KeyD`],[X.E,`KeyE`],[X.F,`KeyF`],[X.G,`KeyG`],[X.H,`KeyH`],[X.I,`KeyI`],[X.J,`KeyJ`],[X.K,`KeyK`],[X.L,`KeyL`],[X.M,`KeyM`],[X.N,`KeyN`],[X.O,`KeyO`],[X.P,`KeyP`],[X.Q,`KeyQ`],[X.R,`KeyR`],[X.S,`KeyS`],[X.T,`KeyT`],[X.U,`KeyU`],[X.V,`KeyV`],[X.W,`KeyW`],[X.X,`KeyX`],[X.Y,`KeyY`],[X.Z,`KeyZ`],[X.LeftWindows,`MetaLeft`],[X.RightWindows,`MetaRight`],[X.Application,`ContextMenu`],[X.Sleep,`Sleep`],[X.Numpad0,`Numpad0`],[X.Numpad1,`Numpad1`],[X.Numpad2,`Numpad2`],[X.Numpad3,`Numpad3`],[X.Numpad4,`Numpad4`],[X.Numpad5,`Numpad5`],[X.Numpad6,`Numpad6`],[X.Numpad7,`Numpad7`],[X.Numpad8,`Numpad8`],[X.Numpad9,`Numpad9`],[X.Multiply,`NumpadMultiply`],[X.Add,`NumpadAdd`],[X.Separator,`NumpadSeparator`],[X.Subtract,`NumpadSubtract`],[X.Decimal,`NumpadDecimal`],[X.Divide,`NumpadDivide`],[X.F1,`F1`],[X.F2,`F2`],[X.F3,`F3`],[X.F4,`F4`],[X.F5,`F5`],[X.F6,`F6`],[X.F7,`F7`],[X.F8,`F8`],[X.F9,`F9`],[X.F10,`F10`],[X.F11,`F11`],[X.F12,`F12`],[X.F13,`F13`],[X.F14,`F14`],[X.F15,`F15`],[X.F16,`F16`],[X.F17,`F17`],[X.F18,`F18`],[X.F19,`F19`],[X.F20,`F20`],[X.F21,`F21`],[X.F22,`F22`],[X.F23,`F23`],[X.F24,`F24`],[X.NumLock,`NumLock`],[X.ScrollLock,`ScrollLock`],[X.NEC_Equal,`NEC_Equal`],[X.Fujitsu_Masshou,`Fujitsu_Masshou`],[X.Fujitsu_Touroku,`Fujitsu_Touroku`],[X.Fujitsu_Loya,`Fujitsu_Loya`],[X.Fujitsu_Roya,`Fujitsu_Roya`],[X.LeftShift,`ShiftLeft`],[X.RightShift,`ShiftRight`],[X.LeftControl,`ControlLeft`],[X.RightControl,`ControlRight`],[X.LeftMenu,`AltLeft`],[X.RightMenu,`AltRight`],[X.BrowserBack,`BrowserBack`],[X.BrowserForward,`BrowserForward`],[X.BrowserRefresh,`BrowserRefresh`],[X.BrowserStop,`BrowserStop`],[X.BrowserSearch,`BrowserSearch`],[X.BrowserFavorites,`BrowserFavorites`],[X.BrowserHome,`BrowserHome`],[X.VolumeMute,`VolumeMute`],[X.VolumeDown,`VolumeDown`],[X.VolumeUp,`VolumeUp`],[X.MediaNextTrack,`MediaTrackNext`],[X.MediaPrevTrack,`MediaTrackPrevious`],[X.MediaStop,`MediaStop`],[X.MediaPlayPause,`MediaPlayPause`],[X.LaunchMail,`LaunchMail`],[X.LaunchMediaSelect,`LaunchMediaSelect`],[X.LaunchApplication1,`LaunchApplication1`],[X.LaunchApplication2,`LaunchApplication2`],[X.OEM1,`OEM_1`],[X.OEMPlus,`Equal`],[X.OEMComma,`Comma`],[X.OEMMinus,`Minus`],[X.OEMPeriod,`Period`],[X.OEM2,`Slash`],[X.OEM3,`Backquote`],[X.OEM4,`BracketLeft`],[X.OEM5,`Backslash`],[X.OEM6,`BracketRight`],[X.OEM7,`Quote`],[X.OEM8,`IntlRo`],[X.OEMAX,`OEM_AX`],[X.OEM102,`IntlBackslash`],[X.ICOHelp,`ICO_HELP`],[X.ICO00,`ICO_00`],[X.ProcessKey,`Process`],[X.ICOClear,`ICO_CLEAR`],[X.Packet,`Packet`],[X.OEMReset,`OEM_Reset`],[X.OEMJump,`OEM_Jump`],[X.OEMPA1,`OEM_PA1`],[X.OEMPA2,`OEM_PA2`],[X.OEMPA3,`OEM_PA3`],[X.OEMWSCtrl,`OEM_WS_Ctrl`],[X.OEMCUSel,`OEM_CU_Sel`],[X.OEMATTN,`OEM_ATTN`],[X.OEMFinish,`OEM_Finish`],[X.OEMCopy,`OEM_Copy`],[X.OEMAuto,`OEM_Auto`],[X.OEMENLW,`OEM_ENLW`],[X.OEMBackTab,`BackTab`],[X.ATTN,`ATTN`],[X.CRSel,`CRSel`],[X.EXSel,`EXSel`],[X.EREOF,`EREOF`],[X.Play,`MediaPlay`],[X.Zoom,`Zoom`],[X.Noname,`Noname`],[X.PA1,`PA1`],[X.OEMClear,`OEM_Clear`]]),xn=new Map(bn.entries().map(([e,t])=>[t,e])),Sn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var Cn=class extends R{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:pn([`keybinds.json`]),schema:Sn,default:e})}init(){super.init();let e=K.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=K.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=bn.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=bn.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=>xn.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=>xn.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}`:``})`}};function wn(e){let t=new Cn(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 Z(){return K.getInstance().getInterface(`OGG_SIEGE`)}function Tn(){let e=J.getInstance(),t=P.getInstance(),n=q.getInstance();n.meta=En(),e.on([`gameReady`,`gameClose`],()=>{n.meta||(n.meta=En()),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function En(){return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:gn(),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,in_game:!1}}function Dn(){function e(e,t){return e.once(`closed`,()=>{e.isDestroyed()||q.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),q.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(Z().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>Z().instance.on(e,t),off:(e,t)=>Z().instance.off(e,t),once:(e,t)=>Z().instance.once(e,t),addListener:(e,t)=>Z().instance.addListener(e,t),removeListener:(e,t)=>Z().instance.removeListener(e,t),removeAllListeners:()=>Z().instance.removeAllListeners(),prependListener:(e,t)=>Z().instance.prependListener(e,t),prependOnceListener:(e,t)=>Z().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Z(),t=L.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}var On=class extends bt{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.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 kn=N(On,`OGG_SIEGE`);function An(){return{scope:e=>kn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Z().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Z().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Z().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Z().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Z().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Z().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Z().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Z().instance.getKeyInputBlock(e)}}}function jn(){return{track:(e,t)=>{let n=q.getInstance();n.track(`custom__${String(e)}`,t)}}}var Mn=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}}),Nn=Ce(Mn(),1);function Pn(){return{registerWindow:e=>{(0,Nn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function Fn(e){let t=nt(global.OVERLAYED.APPLICATION_ID),n=ot(t,{recursive:!0}),r=et(),i=ot(r,{recursive:!0});I.getInstance().info(`Logs path: `,t),I.getInstance().info(`Overlayed logs path: `,r);let a=new g;return[...n,...i].forEach(([e,t])=>{I.getInstance().info(`Zipping: `,t);let n=oe(t),r=m(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{I.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function In(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 Ln(e){let t=new it(`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)=>{q.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=Fn(t),r=await n.generateAsync({type:`base64`});await In(e,r)}}}const Rn=1e3;function zn(e,t,r,i,a){let o=L.getInstance();function s(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=Rn){P.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${Rn}`});return}n.push(e)}}function c(r){let i=mn(r);if(i instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),P.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game);if(!o)return;let c=o.events.event,l=c(r);if(l instanceof n.errors){q.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),P.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[o.key]){s(l,o.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e?.hash,version:e?.version})}let u=Y(o.key,l.type),d=Y(o.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];m.length!==0&&m.forEach(e=>{e(l)})}return i.on(`flushEvents`,e=>{if(a[e])return;a[e]=!0;let t=r.get(e);t&&(I.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>c(e)),r.delete(e))}),o.on(`data`,e=>e.forEach(c)),o.on(`error`,e=>{P.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o}let Q=!1,Bn={},$,Vn=new M;function Hn(e){let{init:t=!0,debug:n=!1,silent:r=!0}=e;if(Un(e),I.getInstance().init(e.applicationId,n,r),Q)return $;function i(){if(Q)return;Tn();let t=new Map,n=new Map,r=vn(e.modules,t,Vn),a=yn(),o=wn(e.keybinds),s=Dn(),c=An(),l=Pn(),u=jn(),d=Ln(e);Wn(e),zn(e,t,n,Vn,Bn),Q=!0,$={...r,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>G.getInstance().hasAnyActiveProcesses,init:i,log:d,initialized:Q}}return t?(i(),$):new Proxy({init:i},{get:(e,t)=>{if(t!==`init`&&!Q)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:$[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Un(e){global.OVERLAYED={APPLICATION_ID:Ot(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.18.4`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Wn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),fn.getInstance().init(),J.getInstance().init(),G.getInstance().init(),U.getInstance().init();async function n(){let e=kt(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=gn();I.getInstance().log(`userId`,t);let n={...await e,userId:t};return I.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),q.getInstance().track(`start`,{}),me.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Gn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Gn()})}async function Gn(){await q.getInstance().flush(),U.getInstance().destroy(),J.getInstance().destroy(),fn.getInstance().destroy(),G.getInstance().destroy(),K.getInstance().getInterface(`OGG_SIEGE`).destroy(),L.getInstance().destroy(),P.getInstance().destroy()}export{lt as defineConfig,Hn as overlayed,Ut as setFetchLatestTokenCallback,Ct as setUpdaterTokenResolver};
package/dist/siege.d.ts CHANGED
@@ -99,27 +99,29 @@ type SiegeMatchType = Brand<string, "siegeMatchType">;
99
99
  declare const SiegeMatchType: Brander<SiegeMatchType>;
100
100
  type SiegeGameMode = Brand<string, "siegeGameMode">;
101
101
  declare const SiegeGameMode: Brander<SiegeGameMode>;
102
+ type SiegeTimeOfDay = Brand<number, "siegeTimeOfDay">;
103
+ declare const SiegeTimeOfDay: Brander<SiegeTimeOfDay>;
102
104
  //# sourceMappingURL=brands.d.ts.map
103
105
  //#endregion
104
106
  //#region src/consts.d.ts
105
107
  declare const SIEGE_BOT_ID = "00000000-0000-0000-0000-000000000000";
106
108
  declare const SIEGE_GAME_MODE_PHASES: readonly ["intro", "planning", "prep", "action", "results", "invalid"];
107
- declare const SiegeGameModePhaseSchema: arktype_internal_methods_string_ts0.StringType<"invalid" | "intro" | "planning" | "prep" | "action" | "results", {}>;
109
+ declare const SiegeGameModePhaseSchema: arktype_internal_methods_string_ts0.StringType<"intro" | "planning" | "prep" | "action" | "results" | "invalid", {}>;
108
110
  type SiegeGameModePhase = typeof SiegeGameModePhaseSchema.infer;
109
111
  declare const SIEGE_TEAMS: readonly [0, 1];
110
112
  declare const SiegeTeamSchema: arktype_internal_methods_number_ts0.NumberType<0 | 1, {}>;
111
113
  type SiegeTeam = typeof SiegeTeamSchema.infer;
112
114
  declare const SIEGE_SIDES: readonly ["attacker", "defender", "both", "invalid"];
113
- declare const SiegeSideSchema: arktype_internal_methods_string_ts0.StringType<"attacker" | "defender" | "both" | "invalid", {}>;
115
+ declare const SiegeSideSchema: arktype_internal_methods_string_ts0.StringType<"invalid" | "attacker" | "defender" | "both", {}>;
114
116
  type SiegeSide = typeof SiegeSideSchema.infer;
115
117
  declare const SIEGE_PLAYER_LIFE_STATES: readonly ["normal", "overhealed", "low_health", "downed", "dead", "respawning"];
116
- declare const SiegePlayerLifeStateSchema: arktype_internal_methods_string_ts0.StringType<"downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning", {}>;
118
+ declare const SiegePlayerLifeStateSchema: arktype_internal_methods_string_ts0.StringType<"normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning", {}>;
117
119
  type SiegePlayerLifeState = typeof SiegePlayerLifeStateSchema.infer;
118
120
  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"];
119
- 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", {}>;
121
+ declare const SiegeDamageTypeSchema: arktype_internal_methods_string_ts0.StringType<"invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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", {}>;
120
122
  type SiegeDamageType = typeof SiegeDamageTypeSchema.infer;
121
123
  declare const SIEGE_DAMAGE_TEAM_TYPES: readonly ["unknown", "enemy", "friendly", "invalid"];
122
- declare const SiegeDamageTeamTypeSchema: arktype_internal_methods_string_ts0.StringType<"unknown" | "invalid" | "enemy" | "friendly", {}>;
124
+ declare const SiegeDamageTeamTypeSchema: arktype_internal_methods_string_ts0.StringType<"invalid" | "unknown" | "enemy" | "friendly", {}>;
123
125
  type SiegeDamageTeamType = typeof SiegeDamageTeamTypeSchema.infer;
124
126
  declare const SIEGE_MATCH_TYPES_TO_ID: Readonly<{
125
127
  readonly quickPlay: SiegeMatchType;
@@ -594,6 +596,11 @@ declare const SIEGE_ROUND_STATES_TO_ID: Readonly<{
594
596
  readonly matchCancelled: SiegeRoundState;
595
597
  }>;
596
598
  declare const SIEGE_ROUND_STATE_LABELS: Record<SiegeRoundState, string>;
599
+ declare const SIEGE_TIME_OF_DAY_TO_ID: Readonly<{
600
+ readonly day: SiegeTimeOfDay;
601
+ readonly night: SiegeTimeOfDay;
602
+ }>;
603
+ declare const SIEGE_TIME_OF_DAY_LABELS: Record<SiegeTimeOfDay, string>;
597
604
  //# sourceMappingURL=consts.d.ts.map
598
605
  //#endregion
599
606
  //#region src/module.d.ts
@@ -658,7 +665,7 @@ declare function module(): {
658
665
  value: string;
659
666
  };
660
667
  time_of_day: {
661
- id: number;
668
+ id: SiegeTimeOfDay;
662
669
  value: string;
663
670
  };
664
671
  };
@@ -670,11 +677,11 @@ declare function module(): {
670
677
  segment_size: number;
671
678
  segment_index: number;
672
679
  team_0: {
673
- role: "attacker" | "defender" | "both" | "invalid";
680
+ role: "invalid" | "attacker" | "defender" | "both";
674
681
  state: SiegeRoundState;
675
682
  };
676
683
  team_1: {
677
- role: "attacker" | "defender" | "both" | "invalid";
684
+ role: "invalid" | "attacker" | "defender" | "both";
678
685
  state: SiegeRoundState;
679
686
  };
680
687
  }[];
@@ -695,7 +702,7 @@ declare function module(): {
695
702
  value: string;
696
703
  };
697
704
  time_of_day: {
698
- id: number;
705
+ id: SiegeTimeOfDay;
699
706
  value: string;
700
707
  };
701
708
  };
@@ -707,7 +714,7 @@ declare function module(): {
707
714
  content: {
708
715
  index: number;
709
716
  team: 0 | 1;
710
- side: "attacker" | "defender" | "both" | "invalid";
717
+ side: "invalid" | "attacker" | "defender" | "both";
711
718
  operator_name: {
712
719
  id: SiegeOperatorNameId;
713
720
  value: string;
@@ -724,11 +731,11 @@ declare function module(): {
724
731
  segment_size: number;
725
732
  segment_index: number;
726
733
  team_0: {
727
- role: "attacker" | "defender" | "both" | "invalid";
734
+ role: "invalid" | "attacker" | "defender" | "both";
728
735
  state: SiegeRoundState;
729
736
  };
730
737
  team_1: {
731
- role: "attacker" | "defender" | "both" | "invalid";
738
+ role: "invalid" | "attacker" | "defender" | "both";
732
739
  state: SiegeRoundState;
733
740
  };
734
741
  };
@@ -739,15 +746,15 @@ declare function module(): {
739
746
  remaining_health: number;
740
747
  pre_damage_health: number;
741
748
  max_health: number;
742
- 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";
743
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
749
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
750
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
744
751
  damage_item_id: SiegeItemObjectId | null;
745
752
  damage_time: number;
746
753
  }[];
747
754
  players: {
748
755
  player_id: SiegePlayerId;
749
756
  final_health: number;
750
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
757
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
751
758
  operator_name: {
752
759
  id: SiegeOperatorNameId;
753
760
  value: string;
@@ -759,7 +766,7 @@ declare function module(): {
759
766
  type: "phase_changed";
760
767
  creation_time: number;
761
768
  content: {
762
- phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
769
+ phase: "intro" | "planning" | "prep" | "action" | "results" | "invalid";
763
770
  };
764
771
  } | ((In: {
765
772
  game: "siege";
@@ -773,7 +780,7 @@ declare function module(): {
773
780
  is_squad_member: boolean;
774
781
  is_local_player: boolean;
775
782
  username: string;
776
- side: "attacker" | "defender" | "both" | "invalid";
783
+ side: "invalid" | "attacker" | "defender" | "both";
777
784
  team: 0 | 1;
778
785
  is_privacy_username: boolean;
779
786
  has_avatar_hidden: boolean;
@@ -786,12 +793,12 @@ declare function module(): {
786
793
  plants: number;
787
794
  score: number;
788
795
  };
789
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
796
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
790
797
  ping: number;
791
798
  };
792
799
  }) => arktype2.Out<{
793
800
  content: {
794
- starting_side: "attacker" | "defender" | "both" | "invalid";
801
+ starting_side: "invalid" | "attacker" | "defender" | "both";
795
802
  player_id: SiegePlayerId;
796
803
  profile_id: string;
797
804
  is_bot: boolean;
@@ -799,7 +806,7 @@ declare function module(): {
799
806
  is_squad_member: boolean;
800
807
  is_local_player: boolean;
801
808
  username: string;
802
- side: "attacker" | "defender" | "both" | "invalid";
809
+ side: "invalid" | "attacker" | "defender" | "both";
803
810
  team: 0 | 1;
804
811
  is_privacy_username: boolean;
805
812
  has_avatar_hidden: boolean;
@@ -812,7 +819,7 @@ declare function module(): {
812
819
  plants: number;
813
820
  score: number;
814
821
  };
815
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
822
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
816
823
  ping: number;
817
824
  };
818
825
  game: "siege";
@@ -850,7 +857,7 @@ declare function module(): {
850
857
  creation_time: number;
851
858
  content: {
852
859
  player_id: SiegePlayerId;
853
- side: "attacker" | "defender" | "both" | "invalid";
860
+ side: "invalid" | "attacker" | "defender" | "both";
854
861
  };
855
862
  } | {
856
863
  game: "siege";
@@ -909,7 +916,7 @@ declare function module(): {
909
916
  creation_time: number;
910
917
  content: {
911
918
  player_id: SiegePlayerId;
912
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
919
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
913
920
  };
914
921
  } | {
915
922
  game: "siege";
@@ -1008,7 +1015,7 @@ declare function module(): {
1008
1015
  value: string;
1009
1016
  };
1010
1017
  time_of_day: {
1011
- id: number;
1018
+ id: SiegeTimeOfDay;
1012
1019
  value: string;
1013
1020
  };
1014
1021
  };
@@ -1020,11 +1027,11 @@ declare function module(): {
1020
1027
  segment_size: number;
1021
1028
  segment_index: number;
1022
1029
  team_0: {
1023
- role: "attacker" | "defender" | "both" | "invalid";
1030
+ role: "invalid" | "attacker" | "defender" | "both";
1024
1031
  state: SiegeRoundState;
1025
1032
  };
1026
1033
  team_1: {
1027
- role: "attacker" | "defender" | "both" | "invalid";
1034
+ role: "invalid" | "attacker" | "defender" | "both";
1028
1035
  state: SiegeRoundState;
1029
1036
  };
1030
1037
  }[];
@@ -1047,7 +1054,7 @@ declare function module(): {
1047
1054
  value: string;
1048
1055
  };
1049
1056
  time_of_day: {
1050
- id: number;
1057
+ id: SiegeTimeOfDay;
1051
1058
  value: string;
1052
1059
  };
1053
1060
  };
@@ -1060,7 +1067,7 @@ declare function module(): {
1060
1067
  content: {
1061
1068
  index: number;
1062
1069
  team: 0 | 1;
1063
- side: "attacker" | "defender" | "both" | "invalid";
1070
+ side: "invalid" | "attacker" | "defender" | "both";
1064
1071
  operator_name: {
1065
1072
  id: SiegeOperatorNameId;
1066
1073
  value: string;
@@ -1078,11 +1085,11 @@ declare function module(): {
1078
1085
  segment_size: number;
1079
1086
  segment_index: number;
1080
1087
  team_0: {
1081
- role: "attacker" | "defender" | "both" | "invalid";
1088
+ role: "invalid" | "attacker" | "defender" | "both";
1082
1089
  state: SiegeRoundState;
1083
1090
  };
1084
1091
  team_1: {
1085
- role: "attacker" | "defender" | "both" | "invalid";
1092
+ role: "invalid" | "attacker" | "defender" | "both";
1086
1093
  state: SiegeRoundState;
1087
1094
  };
1088
1095
  };
@@ -1093,15 +1100,15 @@ declare function module(): {
1093
1100
  remaining_health: number;
1094
1101
  pre_damage_health: number;
1095
1102
  max_health: number;
1096
- 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";
1097
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
1103
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
1104
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
1098
1105
  damage_item_id: SiegeItemObjectId | null;
1099
1106
  damage_time: number;
1100
1107
  }[];
1101
1108
  players: {
1102
1109
  player_id: SiegePlayerId;
1103
1110
  final_health: number;
1104
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1111
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1105
1112
  operator_name: {
1106
1113
  id: SiegeOperatorNameId;
1107
1114
  value: string;
@@ -1114,7 +1121,7 @@ declare function module(): {
1114
1121
  type: "phase_changed";
1115
1122
  creation_time: number;
1116
1123
  content: {
1117
- phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
1124
+ phase: "intro" | "planning" | "prep" | "action" | "results" | "invalid";
1118
1125
  };
1119
1126
  };
1120
1127
  player_joined: (In: {
@@ -1129,7 +1136,7 @@ declare function module(): {
1129
1136
  is_squad_member: boolean;
1130
1137
  is_local_player: boolean;
1131
1138
  username: string;
1132
- side: "attacker" | "defender" | "both" | "invalid";
1139
+ side: "invalid" | "attacker" | "defender" | "both";
1133
1140
  team: 0 | 1;
1134
1141
  is_privacy_username: boolean;
1135
1142
  has_avatar_hidden: boolean;
@@ -1142,12 +1149,12 @@ declare function module(): {
1142
1149
  plants: number;
1143
1150
  score: number;
1144
1151
  };
1145
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1152
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1146
1153
  ping: number;
1147
1154
  };
1148
1155
  }) => arktype2.Out<{
1149
1156
  content: {
1150
- starting_side: "attacker" | "defender" | "both" | "invalid";
1157
+ starting_side: "invalid" | "attacker" | "defender" | "both";
1151
1158
  player_id: SiegePlayerId;
1152
1159
  profile_id: string;
1153
1160
  is_bot: boolean;
@@ -1155,7 +1162,7 @@ declare function module(): {
1155
1162
  is_squad_member: boolean;
1156
1163
  is_local_player: boolean;
1157
1164
  username: string;
1158
- side: "attacker" | "defender" | "both" | "invalid";
1165
+ side: "invalid" | "attacker" | "defender" | "both";
1159
1166
  team: 0 | 1;
1160
1167
  is_privacy_username: boolean;
1161
1168
  has_avatar_hidden: boolean;
@@ -1168,7 +1175,7 @@ declare function module(): {
1168
1175
  plants: number;
1169
1176
  score: number;
1170
1177
  };
1171
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1178
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1172
1179
  ping: number;
1173
1180
  };
1174
1181
  game: "siege";
@@ -1210,7 +1217,7 @@ declare function module(): {
1210
1217
  creation_time: number;
1211
1218
  content: {
1212
1219
  player_id: SiegePlayerId;
1213
- side: "attacker" | "defender" | "both" | "invalid";
1220
+ side: "invalid" | "attacker" | "defender" | "both";
1214
1221
  };
1215
1222
  };
1216
1223
  player_stats_changed: {
@@ -1276,7 +1283,7 @@ declare function module(): {
1276
1283
  creation_time: number;
1277
1284
  content: {
1278
1285
  player_id: SiegePlayerId;
1279
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1286
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1280
1287
  };
1281
1288
  };
1282
1289
  player_died: {
@@ -1363,8 +1370,8 @@ declare const PlayerDamageDataSchema: arktype_internal_methods_object_ts0.Object
1363
1370
  remaining_health: number;
1364
1371
  pre_damage_health: number;
1365
1372
  max_health: number;
1366
- 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";
1367
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
1373
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
1374
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
1368
1375
  damage_item_id: SiegeItemObjectId | null;
1369
1376
  damage_time: number;
1370
1377
  }, {}>;
@@ -1375,11 +1382,11 @@ declare const MatchRoundDataSchema: arktype_internal_methods_object_ts0.ObjectTy
1375
1382
  segment_size: number;
1376
1383
  segment_index: number;
1377
1384
  team_0: {
1378
- role: "attacker" | "defender" | "both" | "invalid";
1385
+ role: "invalid" | "attacker" | "defender" | "both";
1379
1386
  state: SiegeRoundState;
1380
1387
  };
1381
1388
  team_1: {
1382
- role: "attacker" | "defender" | "both" | "invalid";
1389
+ role: "invalid" | "attacker" | "defender" | "both";
1383
1390
  state: SiegeRoundState;
1384
1391
  };
1385
1392
  }, {}>;
@@ -1391,7 +1398,7 @@ declare const MapDataSchema: arktype_internal_methods_object_ts0.ObjectType<{
1391
1398
  value: string;
1392
1399
  };
1393
1400
  time_of_day: {
1394
- id: number;
1401
+ id: SiegeTimeOfDay;
1395
1402
  value: string;
1396
1403
  };
1397
1404
  }, {}>;
@@ -1399,7 +1406,7 @@ type MapData = typeof MapDataSchema.infer;
1399
1406
  declare const RoundEndPlayerDataSchema: arktype_internal_methods_object_ts0.ObjectType<{
1400
1407
  player_id: SiegePlayerId;
1401
1408
  final_health: number;
1402
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1409
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1403
1410
  operator_name: {
1404
1411
  id: SiegeOperatorNameId;
1405
1412
  value: string;
@@ -1413,11 +1420,11 @@ declare const RoundEndDataSchema: arktype_internal_methods_object_ts0.ObjectType
1413
1420
  segment_size: number;
1414
1421
  segment_index: number;
1415
1422
  team_0: {
1416
- role: "attacker" | "defender" | "both" | "invalid";
1423
+ role: "invalid" | "attacker" | "defender" | "both";
1417
1424
  state: SiegeRoundState;
1418
1425
  };
1419
1426
  team_1: {
1420
- role: "attacker" | "defender" | "both" | "invalid";
1427
+ role: "invalid" | "attacker" | "defender" | "both";
1421
1428
  state: SiegeRoundState;
1422
1429
  };
1423
1430
  };
@@ -1428,15 +1435,15 @@ declare const RoundEndDataSchema: arktype_internal_methods_object_ts0.ObjectType
1428
1435
  remaining_health: number;
1429
1436
  pre_damage_health: number;
1430
1437
  max_health: number;
1431
- 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";
1432
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
1438
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
1439
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
1433
1440
  damage_item_id: SiegeItemObjectId | null;
1434
1441
  damage_time: number;
1435
1442
  }[];
1436
1443
  players: {
1437
1444
  player_id: SiegePlayerId;
1438
1445
  final_health: number;
1439
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1446
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1440
1447
  operator_name: {
1441
1448
  id: SiegeOperatorNameId;
1442
1449
  value: string;
@@ -1478,7 +1485,7 @@ declare const MatchStarted: arktype_internal_methods_object_ts0.ObjectType<{
1478
1485
  value: string;
1479
1486
  };
1480
1487
  time_of_day: {
1481
- id: number;
1488
+ id: SiegeTimeOfDay;
1482
1489
  value: string;
1483
1490
  };
1484
1491
  };
@@ -1490,11 +1497,11 @@ declare const MatchStarted: arktype_internal_methods_object_ts0.ObjectType<{
1490
1497
  segment_size: number;
1491
1498
  segment_index: number;
1492
1499
  team_0: {
1493
- role: "attacker" | "defender" | "both" | "invalid";
1500
+ role: "invalid" | "attacker" | "defender" | "both";
1494
1501
  state: SiegeRoundState;
1495
1502
  };
1496
1503
  team_1: {
1497
- role: "attacker" | "defender" | "both" | "invalid";
1504
+ role: "invalid" | "attacker" | "defender" | "both";
1498
1505
  state: SiegeRoundState;
1499
1506
  };
1500
1507
  }[];
@@ -1582,7 +1589,7 @@ declare const MapChanged: arktype_internal_methods_object_ts0.ObjectType<{
1582
1589
  value: string;
1583
1590
  };
1584
1591
  time_of_day: {
1585
- id: number;
1592
+ id: SiegeTimeOfDay;
1586
1593
  value: string;
1587
1594
  };
1588
1595
  };
@@ -1599,7 +1606,7 @@ declare const OperatorBanned: arktype_internal_methods_object_ts0.ObjectType<{
1599
1606
  content: {
1600
1607
  index: number;
1601
1608
  team: 0 | 1;
1602
- side: "attacker" | "defender" | "both" | "invalid";
1609
+ side: "invalid" | "attacker" | "defender" | "both";
1603
1610
  operator_name: {
1604
1611
  id: SiegeOperatorNameId;
1605
1612
  value: string;
@@ -1621,11 +1628,11 @@ declare const RoundEnded: arktype_internal_methods_object_ts0.ObjectType<{
1621
1628
  segment_size: number;
1622
1629
  segment_index: number;
1623
1630
  team_0: {
1624
- role: "attacker" | "defender" | "both" | "invalid";
1631
+ role: "invalid" | "attacker" | "defender" | "both";
1625
1632
  state: SiegeRoundState;
1626
1633
  };
1627
1634
  team_1: {
1628
- role: "attacker" | "defender" | "both" | "invalid";
1635
+ role: "invalid" | "attacker" | "defender" | "both";
1629
1636
  state: SiegeRoundState;
1630
1637
  };
1631
1638
  };
@@ -1636,15 +1643,15 @@ declare const RoundEnded: arktype_internal_methods_object_ts0.ObjectType<{
1636
1643
  remaining_health: number;
1637
1644
  pre_damage_health: number;
1638
1645
  max_health: number;
1639
- 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";
1640
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
1646
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
1647
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
1641
1648
  damage_item_id: SiegeItemObjectId | null;
1642
1649
  damage_time: number;
1643
1650
  }[];
1644
1651
  players: {
1645
1652
  player_id: SiegePlayerId;
1646
1653
  final_health: number;
1647
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1654
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1648
1655
  operator_name: {
1649
1656
  id: SiegeOperatorNameId;
1650
1657
  value: string;
@@ -1661,7 +1668,7 @@ declare const PhaseChanged: arktype_internal_methods_object_ts0.ObjectType<{
1661
1668
  type: "phase_changed";
1662
1669
  creation_time: number;
1663
1670
  content: {
1664
- phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
1671
+ phase: "intro" | "planning" | "prep" | "action" | "results" | "invalid";
1665
1672
  };
1666
1673
  }, {}>;
1667
1674
  type PhaseChangedEvent = typeof PhaseChanged.infer;
@@ -1680,7 +1687,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1680
1687
  is_squad_member: boolean;
1681
1688
  is_local_player: boolean;
1682
1689
  username: string;
1683
- side: "attacker" | "defender" | "both" | "invalid";
1690
+ side: "invalid" | "attacker" | "defender" | "both";
1684
1691
  team: 0 | 1;
1685
1692
  is_privacy_username: boolean;
1686
1693
  has_avatar_hidden: boolean;
@@ -1693,12 +1700,12 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1693
1700
  plants: number;
1694
1701
  score: number;
1695
1702
  };
1696
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1703
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1697
1704
  ping: number;
1698
1705
  };
1699
1706
  }) => arktype2.Out<{
1700
1707
  content: {
1701
- starting_side: "attacker" | "defender" | "both" | "invalid";
1708
+ starting_side: "invalid" | "attacker" | "defender" | "both";
1702
1709
  player_id: SiegePlayerId;
1703
1710
  profile_id: string;
1704
1711
  is_bot: boolean;
@@ -1706,7 +1713,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1706
1713
  is_squad_member: boolean;
1707
1714
  is_local_player: boolean;
1708
1715
  username: string;
1709
- side: "attacker" | "defender" | "both" | "invalid";
1716
+ side: "invalid" | "attacker" | "defender" | "both";
1710
1717
  team: 0 | 1;
1711
1718
  is_privacy_username: boolean;
1712
1719
  has_avatar_hidden: boolean;
@@ -1719,7 +1726,7 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1719
1726
  plants: number;
1720
1727
  score: number;
1721
1728
  };
1722
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1729
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1723
1730
  ping: number;
1724
1731
  };
1725
1732
  game: "siege";
@@ -1777,7 +1784,7 @@ declare const PlayerSideChanged: arktype_internal_methods_object_ts0.ObjectType<
1777
1784
  creation_time: number;
1778
1785
  content: {
1779
1786
  player_id: SiegePlayerId;
1780
- side: "attacker" | "defender" | "both" | "invalid";
1787
+ side: "invalid" | "attacker" | "defender" | "both";
1781
1788
  };
1782
1789
  }, {}>;
1783
1790
  type PlayerSideChangedEvent = typeof PlayerSideChanged.infer;
@@ -1871,7 +1878,7 @@ declare const PlayerLifeStateChanged: arktype_internal_methods_object_ts0.Object
1871
1878
  creation_time: number;
1872
1879
  content: {
1873
1880
  player_id: SiegePlayerId;
1874
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
1881
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
1875
1882
  };
1876
1883
  }, {}>;
1877
1884
  type PlayerLifeStateChangedEvent = typeof PlayerLifeStateChanged.infer;
@@ -1990,7 +1997,7 @@ declare const events: arktype2.Module<{
1990
1997
  value: string;
1991
1998
  };
1992
1999
  time_of_day: {
1993
- id: number;
2000
+ id: SiegeTimeOfDay;
1994
2001
  value: string;
1995
2002
  };
1996
2003
  };
@@ -2002,11 +2009,11 @@ declare const events: arktype2.Module<{
2002
2009
  segment_size: number;
2003
2010
  segment_index: number;
2004
2011
  team_0: {
2005
- role: "attacker" | "defender" | "both" | "invalid";
2012
+ role: "invalid" | "attacker" | "defender" | "both";
2006
2013
  state: SiegeRoundState;
2007
2014
  };
2008
2015
  team_1: {
2009
- role: "attacker" | "defender" | "both" | "invalid";
2016
+ role: "invalid" | "attacker" | "defender" | "both";
2010
2017
  state: SiegeRoundState;
2011
2018
  };
2012
2019
  }[];
@@ -2027,7 +2034,7 @@ declare const events: arktype2.Module<{
2027
2034
  value: string;
2028
2035
  };
2029
2036
  time_of_day: {
2030
- id: number;
2037
+ id: SiegeTimeOfDay;
2031
2038
  value: string;
2032
2039
  };
2033
2040
  };
@@ -2039,7 +2046,7 @@ declare const events: arktype2.Module<{
2039
2046
  content: {
2040
2047
  index: number;
2041
2048
  team: 0 | 1;
2042
- side: "attacker" | "defender" | "both" | "invalid";
2049
+ side: "invalid" | "attacker" | "defender" | "both";
2043
2050
  operator_name: {
2044
2051
  id: SiegeOperatorNameId;
2045
2052
  value: string;
@@ -2056,11 +2063,11 @@ declare const events: arktype2.Module<{
2056
2063
  segment_size: number;
2057
2064
  segment_index: number;
2058
2065
  team_0: {
2059
- role: "attacker" | "defender" | "both" | "invalid";
2066
+ role: "invalid" | "attacker" | "defender" | "both";
2060
2067
  state: SiegeRoundState;
2061
2068
  };
2062
2069
  team_1: {
2063
- role: "attacker" | "defender" | "both" | "invalid";
2070
+ role: "invalid" | "attacker" | "defender" | "both";
2064
2071
  state: SiegeRoundState;
2065
2072
  };
2066
2073
  };
@@ -2071,15 +2078,15 @@ declare const events: arktype2.Module<{
2071
2078
  remaining_health: number;
2072
2079
  pre_damage_health: number;
2073
2080
  max_health: number;
2074
- 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";
2075
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
2081
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
2082
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
2076
2083
  damage_item_id: SiegeItemObjectId | null;
2077
2084
  damage_time: number;
2078
2085
  }[];
2079
2086
  players: {
2080
2087
  player_id: SiegePlayerId;
2081
2088
  final_health: number;
2082
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2089
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2083
2090
  operator_name: {
2084
2091
  id: SiegeOperatorNameId;
2085
2092
  value: string;
@@ -2091,7 +2098,7 @@ declare const events: arktype2.Module<{
2091
2098
  type: "phase_changed";
2092
2099
  creation_time: number;
2093
2100
  content: {
2094
- phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
2101
+ phase: "intro" | "planning" | "prep" | "action" | "results" | "invalid";
2095
2102
  };
2096
2103
  } | ((In: {
2097
2104
  game: "siege";
@@ -2105,7 +2112,7 @@ declare const events: arktype2.Module<{
2105
2112
  is_squad_member: boolean;
2106
2113
  is_local_player: boolean;
2107
2114
  username: string;
2108
- side: "attacker" | "defender" | "both" | "invalid";
2115
+ side: "invalid" | "attacker" | "defender" | "both";
2109
2116
  team: 0 | 1;
2110
2117
  is_privacy_username: boolean;
2111
2118
  has_avatar_hidden: boolean;
@@ -2118,12 +2125,12 @@ declare const events: arktype2.Module<{
2118
2125
  plants: number;
2119
2126
  score: number;
2120
2127
  };
2121
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2128
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2122
2129
  ping: number;
2123
2130
  };
2124
2131
  }) => arktype2.Out<{
2125
2132
  content: {
2126
- starting_side: "attacker" | "defender" | "both" | "invalid";
2133
+ starting_side: "invalid" | "attacker" | "defender" | "both";
2127
2134
  player_id: SiegePlayerId;
2128
2135
  profile_id: string;
2129
2136
  is_bot: boolean;
@@ -2131,7 +2138,7 @@ declare const events: arktype2.Module<{
2131
2138
  is_squad_member: boolean;
2132
2139
  is_local_player: boolean;
2133
2140
  username: string;
2134
- side: "attacker" | "defender" | "both" | "invalid";
2141
+ side: "invalid" | "attacker" | "defender" | "both";
2135
2142
  team: 0 | 1;
2136
2143
  is_privacy_username: boolean;
2137
2144
  has_avatar_hidden: boolean;
@@ -2144,7 +2151,7 @@ declare const events: arktype2.Module<{
2144
2151
  plants: number;
2145
2152
  score: number;
2146
2153
  };
2147
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2154
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2148
2155
  ping: number;
2149
2156
  };
2150
2157
  game: "siege";
@@ -2182,7 +2189,7 @@ declare const events: arktype2.Module<{
2182
2189
  creation_time: number;
2183
2190
  content: {
2184
2191
  player_id: SiegePlayerId;
2185
- side: "attacker" | "defender" | "both" | "invalid";
2192
+ side: "invalid" | "attacker" | "defender" | "both";
2186
2193
  };
2187
2194
  } | {
2188
2195
  game: "siege";
@@ -2241,7 +2248,7 @@ declare const events: arktype2.Module<{
2241
2248
  creation_time: number;
2242
2249
  content: {
2243
2250
  player_id: SiegePlayerId;
2244
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2251
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2245
2252
  };
2246
2253
  } | {
2247
2254
  game: "siege";
@@ -2340,7 +2347,7 @@ declare const events: arktype2.Module<{
2340
2347
  value: string;
2341
2348
  };
2342
2349
  time_of_day: {
2343
- id: number;
2350
+ id: SiegeTimeOfDay;
2344
2351
  value: string;
2345
2352
  };
2346
2353
  };
@@ -2352,11 +2359,11 @@ declare const events: arktype2.Module<{
2352
2359
  segment_size: number;
2353
2360
  segment_index: number;
2354
2361
  team_0: {
2355
- role: "attacker" | "defender" | "both" | "invalid";
2362
+ role: "invalid" | "attacker" | "defender" | "both";
2356
2363
  state: SiegeRoundState;
2357
2364
  };
2358
2365
  team_1: {
2359
- role: "attacker" | "defender" | "both" | "invalid";
2366
+ role: "invalid" | "attacker" | "defender" | "both";
2360
2367
  state: SiegeRoundState;
2361
2368
  };
2362
2369
  }[];
@@ -2379,7 +2386,7 @@ declare const events: arktype2.Module<{
2379
2386
  value: string;
2380
2387
  };
2381
2388
  time_of_day: {
2382
- id: number;
2389
+ id: SiegeTimeOfDay;
2383
2390
  value: string;
2384
2391
  };
2385
2392
  };
@@ -2392,7 +2399,7 @@ declare const events: arktype2.Module<{
2392
2399
  content: {
2393
2400
  index: number;
2394
2401
  team: 0 | 1;
2395
- side: "attacker" | "defender" | "both" | "invalid";
2402
+ side: "invalid" | "attacker" | "defender" | "both";
2396
2403
  operator_name: {
2397
2404
  id: SiegeOperatorNameId;
2398
2405
  value: string;
@@ -2410,11 +2417,11 @@ declare const events: arktype2.Module<{
2410
2417
  segment_size: number;
2411
2418
  segment_index: number;
2412
2419
  team_0: {
2413
- role: "attacker" | "defender" | "both" | "invalid";
2420
+ role: "invalid" | "attacker" | "defender" | "both";
2414
2421
  state: SiegeRoundState;
2415
2422
  };
2416
2423
  team_1: {
2417
- role: "attacker" | "defender" | "both" | "invalid";
2424
+ role: "invalid" | "attacker" | "defender" | "both";
2418
2425
  state: SiegeRoundState;
2419
2426
  };
2420
2427
  };
@@ -2425,15 +2432,15 @@ declare const events: arktype2.Module<{
2425
2432
  remaining_health: number;
2426
2433
  pre_damage_health: number;
2427
2434
  max_health: number;
2428
- 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";
2429
- damage_team_type: "unknown" | "invalid" | "enemy" | "friendly";
2435
+ damage_type: "invalid" | "unknown" | "downed" | "bullet" | "melee" | "explosive" | "falling" | "regeneration" | "debris" | "projectile" | "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";
2436
+ damage_team_type: "invalid" | "unknown" | "enemy" | "friendly";
2430
2437
  damage_item_id: SiegeItemObjectId | null;
2431
2438
  damage_time: number;
2432
2439
  }[];
2433
2440
  players: {
2434
2441
  player_id: SiegePlayerId;
2435
2442
  final_health: number;
2436
- final_life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2443
+ final_life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2437
2444
  operator_name: {
2438
2445
  id: SiegeOperatorNameId;
2439
2446
  value: string;
@@ -2446,7 +2453,7 @@ declare const events: arktype2.Module<{
2446
2453
  type: "phase_changed";
2447
2454
  creation_time: number;
2448
2455
  content: {
2449
- phase: "invalid" | "intro" | "planning" | "prep" | "action" | "results";
2456
+ phase: "intro" | "planning" | "prep" | "action" | "results" | "invalid";
2450
2457
  };
2451
2458
  };
2452
2459
  player_joined: (In: {
@@ -2461,7 +2468,7 @@ declare const events: arktype2.Module<{
2461
2468
  is_squad_member: boolean;
2462
2469
  is_local_player: boolean;
2463
2470
  username: string;
2464
- side: "attacker" | "defender" | "both" | "invalid";
2471
+ side: "invalid" | "attacker" | "defender" | "both";
2465
2472
  team: 0 | 1;
2466
2473
  is_privacy_username: boolean;
2467
2474
  has_avatar_hidden: boolean;
@@ -2474,12 +2481,12 @@ declare const events: arktype2.Module<{
2474
2481
  plants: number;
2475
2482
  score: number;
2476
2483
  };
2477
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2484
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2478
2485
  ping: number;
2479
2486
  };
2480
2487
  }) => arktype2.Out<{
2481
2488
  content: {
2482
- starting_side: "attacker" | "defender" | "both" | "invalid";
2489
+ starting_side: "invalid" | "attacker" | "defender" | "both";
2483
2490
  player_id: SiegePlayerId;
2484
2491
  profile_id: string;
2485
2492
  is_bot: boolean;
@@ -2487,7 +2494,7 @@ declare const events: arktype2.Module<{
2487
2494
  is_squad_member: boolean;
2488
2495
  is_local_player: boolean;
2489
2496
  username: string;
2490
- side: "attacker" | "defender" | "both" | "invalid";
2497
+ side: "invalid" | "attacker" | "defender" | "both";
2491
2498
  team: 0 | 1;
2492
2499
  is_privacy_username: boolean;
2493
2500
  has_avatar_hidden: boolean;
@@ -2500,7 +2507,7 @@ declare const events: arktype2.Module<{
2500
2507
  plants: number;
2501
2508
  score: number;
2502
2509
  };
2503
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2510
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2504
2511
  ping: number;
2505
2512
  };
2506
2513
  game: "siege";
@@ -2542,7 +2549,7 @@ declare const events: arktype2.Module<{
2542
2549
  creation_time: number;
2543
2550
  content: {
2544
2551
  player_id: SiegePlayerId;
2545
- side: "attacker" | "defender" | "both" | "invalid";
2552
+ side: "invalid" | "attacker" | "defender" | "both";
2546
2553
  };
2547
2554
  };
2548
2555
  player_stats_changed: {
@@ -2608,7 +2615,7 @@ declare const events: arktype2.Module<{
2608
2615
  creation_time: number;
2609
2616
  content: {
2610
2617
  player_id: SiegePlayerId;
2611
- life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
2618
+ life_state: "normal" | "overhealed" | "low_health" | "downed" | "dead" | "respawning";
2612
2619
  };
2613
2620
  };
2614
2621
  player_died: {
@@ -2654,4 +2661,4 @@ type SiegeEventType = SiegeEvent["type"];
2654
2661
 
2655
2662
  //#endregion
2656
2663
  //#endregion
2657
- export { BaseEvent, type DefuserDroppedEvent, type DefuserPickedUpEvent, type DefuserPlantedEvent, type DefuserSabotagedEvent, type LocalPlayerEvent, type MapChangedEvent, MapData, MapDataSchema, type MatchEndedEvent, MatchRoundData, MatchRoundDataSchema, type MatchStartedEvent, type ModuleLoadedEvent, type ModuleUnloadedEvent, type OperatorBannedEvent, type PhaseChangedEvent, PlayerDamageData, PlayerDamageDataSchema, type PlayerDiedEvent, type PlayerDownedEvent, type PlayerJoinedEvent, type PlayerLeftEvent, type PlayerLifeStateChangedEvent, type PlayerLocationChangedEvent, PlayerMatchStatsData, PlayerMatchStatsDataSchema, type PlayerOperatorChangedEvent, type PlayerPingIdChangedEvent, type PlayerPingUpdatedEvent, type PlayerSideChangedEvent, type PlayerStatsChangedEvent, type PlayerTeamChangedEvent, RoundEndData, RoundEndDataSchema, RoundEndPlayerData, RoundEndPlayerDataSchema, type RoundEndedEvent, SIEGE_BOT_ID, SIEGE_DAMAGE_TEAM_TYPES, SIEGE_DAMAGE_TYPES, SIEGE_GAME_MODES_TO_ID, SIEGE_GAME_MODE_LABELS, SIEGE_GAME_MODE_PHASES, SIEGE_GAME_MODE_TYPES_TO_ID, SIEGE_GAME_MODE_TYPE_LABELS, SIEGE_MAP_LABELS, SIEGE_MAP_TO_ID, SIEGE_MATCH_TYPES_TO_ID, SIEGE_MATCH_TYPE_LABELS, SIEGE_OPERATOR_LABELS, SIEGE_OPERATOR_META, SIEGE_OPERATOR_TO_ID, SIEGE_PLAYER_LIFE_STATES, SIEGE_ROUND_STATES_TO_ID, SIEGE_ROUND_STATE_LABELS, SIEGE_SIDES, SIEGE_SIDE_OPERATORS, SIEGE_TEAMS, SiegeDamageTeamType, SiegeDamageTeamTypeSchema, SiegeDamageType, SiegeDamageTypeSchema, SiegeEvent, SiegeEventType, SiegeGameMode, SiegeGameModePhase, SiegeGameModePhaseSchema, SiegeGameModeTypeNameId, SiegeItemObjectId, SiegeMapNameId, SiegeMatchId, SiegeMatchType, SiegeOperatorMeta, SiegeOperatorMetaFull, SiegeOperatorNameId, SiegePlayerId, SiegePlayerLifeState, SiegePlayerLifeStateSchema, SiegeProfileId, SiegeRoundState, SiegeSide, SiegeSideSchema, SiegeTeam, SiegeTeamSchema, type StartedQueuingEvent, type StoppedQueueingEvent, Translation, TranslationSchema, type UnsupportedGameVersionEvent, events, isSiegeRoundStateCompleted, isSiegeRoundStateVictory, module };
2664
+ export { BaseEvent, type DefuserDroppedEvent, type DefuserPickedUpEvent, type DefuserPlantedEvent, type DefuserSabotagedEvent, type LocalPlayerEvent, type MapChangedEvent, MapData, MapDataSchema, type MatchEndedEvent, MatchRoundData, MatchRoundDataSchema, type MatchStartedEvent, type ModuleLoadedEvent, type ModuleUnloadedEvent, type OperatorBannedEvent, type PhaseChangedEvent, PlayerDamageData, PlayerDamageDataSchema, type PlayerDiedEvent, type PlayerDownedEvent, type PlayerJoinedEvent, type PlayerLeftEvent, type PlayerLifeStateChangedEvent, type PlayerLocationChangedEvent, PlayerMatchStatsData, PlayerMatchStatsDataSchema, type PlayerOperatorChangedEvent, type PlayerPingIdChangedEvent, type PlayerPingUpdatedEvent, type PlayerSideChangedEvent, type PlayerStatsChangedEvent, type PlayerTeamChangedEvent, RoundEndData, RoundEndDataSchema, RoundEndPlayerData, RoundEndPlayerDataSchema, type RoundEndedEvent, SIEGE_BOT_ID, SIEGE_DAMAGE_TEAM_TYPES, SIEGE_DAMAGE_TYPES, SIEGE_GAME_MODES_TO_ID, SIEGE_GAME_MODE_LABELS, SIEGE_GAME_MODE_PHASES, SIEGE_GAME_MODE_TYPES_TO_ID, SIEGE_GAME_MODE_TYPE_LABELS, SIEGE_MAP_LABELS, SIEGE_MAP_TO_ID, SIEGE_MATCH_TYPES_TO_ID, SIEGE_MATCH_TYPE_LABELS, SIEGE_OPERATOR_LABELS, SIEGE_OPERATOR_META, SIEGE_OPERATOR_TO_ID, SIEGE_PLAYER_LIFE_STATES, SIEGE_ROUND_STATES_TO_ID, SIEGE_ROUND_STATE_LABELS, SIEGE_SIDES, SIEGE_SIDE_OPERATORS, SIEGE_TEAMS, SIEGE_TIME_OF_DAY_LABELS, SIEGE_TIME_OF_DAY_TO_ID, SiegeDamageTeamType, SiegeDamageTeamTypeSchema, SiegeDamageType, SiegeDamageTypeSchema, SiegeEvent, SiegeEventType, SiegeGameMode, SiegeGameModePhase, SiegeGameModePhaseSchema, SiegeGameModeTypeNameId, SiegeItemObjectId, SiegeMapNameId, SiegeMatchId, SiegeMatchType, SiegeOperatorMeta, SiegeOperatorMetaFull, SiegeOperatorNameId, SiegePlayerId, SiegePlayerLifeState, SiegePlayerLifeStateSchema, SiegeProfileId, SiegeRoundState, SiegeSide, SiegeSideSchema, SiegeTeam, SiegeTeamSchema, SiegeTimeOfDay, type StartedQueuingEvent, type StoppedQueueingEvent, Translation, TranslationSchema, type UnsupportedGameVersionEvent, events, isSiegeRoundStateCompleted, isSiegeRoundStateVictory, module };
package/dist/siege.js CHANGED
@@ -1 +1 @@
1
- import{Type as e,scope as t,type as n}from"arktype";function r(e){return e}function ee(e){return e}function i(e){return e?t=>(e(t),t):ee}const a=i(),o=i(),s=i(),c=i(),l=i(),u=i(),d=i(),f=i(),p=i(),m=i(),h=`00000000-0000-0000-0000-000000000000`,g=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`],_=n(`===`,...g),v=[0,1],y=n(`===`,...v),b=[`attacker`,`defender`,`both`,`invalid`],x=n(`===`,...b),S=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],C=n(`===`,...S),w=`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`.split(`.`),T=n(`===`,...w),E=[`unknown`,`enemy`,`friendly`,`invalid`],D=n(`===`,...E),O=Object.freeze({quickPlay:p(`QUICK PLAY`),versusAi:p(`VERSUS AI`),standard:p(`STANDARD`),ranked:p(`RANKED`)}),k=Object.freeze({[O.quickPlay]:`Quick Play`,[O.versusAi]:`Versus AI`,[O.standard]:`Standard`,[O.ranked]:`Ranked`}),A=Object.freeze({teamDeathmatch:m(`TEAM DEATHMATCH`),goldenGun:m(`GOLDEN GUN`),freeForAll:m(`FREE FOR ALL`),weaponRoulette:m(`WEAPON ROULETTE`),dualFront:m(`DUAL FRONT`),bomb:m(`BOMB`),versusAi:m(`VERSUS AI`),hostage:m(`HOSTAGE`),threeVsThreeSecureArea:m(`3 VS 3 SECURE AREA`),targetDrill:m(`TARGET DRILL`),rengoku:m(`RENGOKU`)}),j=Object.freeze({[A.teamDeathmatch]:`Team Deathmatch`,[A.goldenGun]:`Golden Gun`,[A.freeForAll]:`Free For All`,[A.weaponRoulette]:`Weapon Roulette`,[A.dualFront]:`Dual Front`,[A.bomb]:`Bomb`,[A.versusAi]:`Versus AI`,[A.hostage]:`Hostage`,[A.threeVsThreeSecureArea]:`3v3 Secure Area`,[A.targetDrill]:`Target Drill`,[A.rengoku]:`Rengoku`}),M=Object.freeze({ranked:a(205379),quickMatch:a(138115),customGame:a(62008),versusAi:a(397300),standard:a(393930),arcade:a(320109),siegeCup:a(414089),dualFront:a(420611),showdown:a(305544),trainingGrounds:a(-1)}),N=Object.freeze({[M.quickMatch]:`Quick Match`,[M.ranked]:`Ranked`,[M.customGame]:`Custom Game`,[M.versusAi]:`Versus AI`,[M.standard]:`Standard`,[M.arcade]:`Arcade`,[M.siegeCup]:`Siege Cup`,[M.dualFront]:`Dual Front`,[M.showdown]:`Showdown`,[M.trainingGrounds]:`Training Grounds`}),P=Object.freeze({glaz:o(62242),blitz:o(62243),buck:o(62244),sledge:o(62245),ash:o(62246),thermite:o(62247),castle:o(62248),rook:o(62249),pulse:o(62250),doc:o(62251),mute:o(62252),smoke:o(62253),recruit:o(62555),thatcher:o(65143),twitch:o(65156),montagne:o(65159),bandit:o(65165),fuze:o(65168),kapkan:o(65171),tachanka:o(65174),jager:o(113049),iq:o(113052),frost:o(186159),blackbeard:o(187249),valkyrie:o(187252),caveira:o(207671),capitao:o(207674),echo:o(209180),hibana:o(209183),mira:o(222172),jackal:o(222182),ying:o(239334),lesion:o(239337),ela:o(254595),zofia:o(254606),dokkaebi:o(273652),vigil:o(273663),finka:o(281457),lion:o(281463),alibi:o(282399),maestro:o(285888),maverick:o(288504),clash:o(288526),nomad:o(293435),kaid:o(293436),gridlock:o(298589),mozzie:o(298616),nokk:o(299657),warden:o(299668),goyo:o(304196),amaru:o(308469),kali:o(310757),wamai:o(310768),oryx:o(317965),iana:o(317976),melusi:o(320062),ace:o(320073),zero:o(328927),aruni:o(328940),flores:o(334086),thunderbird:o(336466),osa:o(344493),thorn:o(349405),azami:o(354314),sens:o(357386),grim:o(365404),solis:o(376836),brava:o(382419),fenrir:o(386388),ram:o(392904),tubarao:o(395594),deimos:o(400504),striker:o(404278),sentry:o(404290),skopos:o(408405),rauora:o(421052)}),te=Object.freeze({[P.glaz]:`glaz`,[P.blitz]:`blitz`,[P.buck]:`buck`,[P.sledge]:`sledge`,[P.ash]:`ash`,[P.thermite]:`thermite`,[P.castle]:`castle`,[P.rook]:`rook`,[P.pulse]:`pulse`,[P.doc]:`doc`,[P.mute]:`mute`,[P.smoke]:`smoke`,[P.recruit]:`recruit`,[P.thatcher]:`thatcher`,[P.twitch]:`twitch`,[P.montagne]:`montagne`,[P.bandit]:`bandit`,[P.fuze]:`fuze`,[P.kapkan]:`kapkan`,[P.tachanka]:`tachanka`,[P.jager]:`jager`,[P.iq]:`iq`,[P.frost]:`frost`,[P.blackbeard]:`blackbeard`,[P.valkyrie]:`valkyrie`,[P.caveira]:`caveira`,[P.capitao]:`capitao`,[P.echo]:`echo`,[P.hibana]:`hibana`,[P.mira]:`mira`,[P.jackal]:`jackal`,[P.ying]:`ying`,[P.lesion]:`lesion`,[P.ela]:`ela`,[P.zofia]:`zofia`,[P.dokkaebi]:`dokkaebi`,[P.vigil]:`vigil`,[P.finka]:`finka`,[P.lion]:`lion`,[P.alibi]:`alibi`,[P.maestro]:`maestro`,[P.maverick]:`maverick`,[P.clash]:`clash`,[P.nomad]:`nomad`,[P.kaid]:`kaid`,[P.gridlock]:`gridlock`,[P.mozzie]:`mozzie`,[P.nokk]:`nokk`,[P.warden]:`warden`,[P.goyo]:`goyo`,[P.amaru]:`amaru`,[P.kali]:`kali`,[P.wamai]:`wamai`,[P.oryx]:`oryx`,[P.iana]:`iana`,[P.melusi]:`melusi`,[P.ace]:`ace`,[P.zero]:`zero`,[P.aruni]:`aruni`,[P.flores]:`flores`,[P.thunderbird]:`thunderbird`,[P.osa]:`osa`,[P.thorn]:`thorn`,[P.azami]:`azami`,[P.sens]:`sens`,[P.grim]:`grim`,[P.solis]:`solis`,[P.brava]:`brava`,[P.fenrir]:`fenrir`,[P.ram]:`ram`,[P.tubarao]:`tubarao`,[P.deimos]:`deimos`,[P.striker]:`striker`,[P.sentry]:`sentry`,[P.skopos]:`skopos`,[P.rauora]:`rauora`}),F=Object.freeze({[P.striker]:{name:`Striker`,role:`attacker`},[P.sledge]:{name:`Sledge`,role:`attacker`},[P.thatcher]:{name:`Thatcher`,role:`attacker`},[P.ash]:{name:`Ash`,role:`attacker`},[P.thermite]:{name:`Thermite`,role:`attacker`},[P.twitch]:{name:`Twitch`,role:`attacker`},[P.montagne]:{name:`Montagne`,role:`attacker`},[P.glaz]:{name:`Glaz`,role:`attacker`},[P.fuze]:{name:`Fuze`,role:`attacker`},[P.blitz]:{name:`Blitz`,role:`attacker`},[P.iq]:{name:`IQ`,role:`attacker`},[P.buck]:{name:`Buck`,role:`attacker`},[P.blackbeard]:{name:`Blackbeard`,role:`attacker`},[P.capitao]:{name:`Capitão`,role:`attacker`},[P.hibana]:{name:`Hibana`,role:`attacker`},[P.jackal]:{name:`Jackal`,role:`attacker`},[P.ying]:{name:`Ying`,role:`attacker`},[P.zofia]:{name:`Zofia`,role:`attacker`},[P.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[P.lion]:{name:`Lion`,role:`attacker`},[P.finka]:{name:`Finka`,role:`attacker`},[P.maverick]:{name:`Maverick`,role:`attacker`},[P.nomad]:{name:`Nomad`,role:`attacker`},[P.gridlock]:{name:`Gridlock`,role:`attacker`},[P.nokk]:{name:`Nøkk`,role:`attacker`},[P.amaru]:{name:`Amaru`,role:`attacker`},[P.kali]:{name:`Kali`,role:`attacker`},[P.iana]:{name:`Iana`,role:`attacker`},[P.ace]:{name:`Ace`,role:`attacker`},[P.zero]:{name:`Zero`,role:`attacker`},[P.flores]:{name:`Flores`,role:`attacker`},[P.osa]:{name:`Osa`,role:`attacker`},[P.sens]:{name:`Sens`,role:`attacker`},[P.grim]:{name:`Grim`,role:`attacker`},[P.brava]:{name:`Brava`,role:`attacker`},[P.ram]:{name:`Ram`,role:`attacker`},[P.deimos]:{name:`Deimos`,role:`attacker`},[P.rauora]:{name:`Rauora`,role:`attacker`},[P.sentry]:{name:`Sentry`,role:`defender`},[P.smoke]:{name:`Smoke`,role:`defender`},[P.mute]:{name:`Mute`,role:`defender`},[P.castle]:{name:`Castle`,role:`defender`},[P.pulse]:{name:`Pulse`,role:`defender`},[P.doc]:{name:`Doc`,role:`defender`},[P.rook]:{name:`Rook`,role:`defender`},[P.kapkan]:{name:`Kapkan`,role:`defender`},[P.tachanka]:{name:`Tachanka`,role:`defender`},[P.jager]:{name:`Jäger`,role:`defender`},[P.bandit]:{name:`Bandit`,role:`defender`},[P.frost]:{name:`Frost`,role:`defender`},[P.valkyrie]:{name:`Valkyrie`,role:`defender`},[P.caveira]:{name:`Caveira`,role:`defender`},[P.echo]:{name:`Echo`,role:`defender`},[P.mira]:{name:`Mira`,role:`defender`},[P.lesion]:{name:`Lesion`,role:`defender`},[P.ela]:{name:`Ela`,role:`defender`},[P.vigil]:{name:`Vigil`,role:`defender`},[P.alibi]:{name:`Alibi`,role:`defender`},[P.maestro]:{name:`Maestro`,role:`defender`},[P.clash]:{name:`Clash`,role:`defender`},[P.kaid]:{name:`Kaid`,role:`defender`},[P.mozzie]:{name:`Mozzie`,role:`defender`},[P.warden]:{name:`Warden`,role:`defender`},[P.goyo]:{name:`Goyo`,role:`defender`},[P.wamai]:{name:`Wamai`,role:`defender`},[P.oryx]:{name:`Oryx`,role:`defender`},[P.melusi]:{name:`Melusi`,role:`defender`},[P.aruni]:{name:`Aruni`,role:`defender`},[P.thunderbird]:{name:`Thunderbird`,role:`defender`},[P.thorn]:{name:`Thorn`,role:`defender`},[P.azami]:{name:`Azami`,role:`defender`},[P.solis]:{name:`Solis`,role:`defender`},[P.fenrir]:{name:`Fenrir`,role:`defender`},[P.tubarao]:{name:`Tubarao`,role:`defender`},[P.skopos]:{name:`Skopós`,role:`defender`}}),I=Object.freeze({attacker:Object.entries(F).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...F[o(Number(e))],id:o(Number(e))})),defender:Object.entries(F).filter(([e,t])=>t.role===`defender`).map(([e])=>({...F[o(Number(e))],id:o(Number(e))}))}),L=Object.freeze({favela:s(202283),fortress:s(293334),villa:s(286407),neighborhood:s(333785),article5:s(196214),themePark:s(229325),stadium:s(338641),outback:s(299162),yacht:s(62226),emeraldPlains:s(358871),chalet:s(62230),coastline:s(217482),bank:s(62228),consulate:s(62227),tower:s(255669),nighthavenLabs:s(375492),presidentialPlane:s(62225),house:s(62221),kafeDostoyevsky:s(62232),border:s(201746),closeQuarter:s(365400),bartlettU:s(62231),lair:s(396234),herefordBase:s(62223),skyscraper:s(208094),cqbBasics:s(196157),oregon:s(62222),fortTruth:s(307723),kanal:s(62229),stadium2020:s(357300),clubhouse:s(62224),district:s(1193341205),shinden:s(359432)}),R=Object.freeze({202283:`Favela`,293334:`Fortress`,286407:`Villa`,333785:`Neighborhood`,196214:`Article 5`,229325:`Theme Park`,338641:`Stadium`,299162:`Outback`,62226:`Yacht`,358871:`Emerald Plains`,62230:`Chalet`,217482:`Coastline`,62228:`Bank`,62227:`Consulate`,255669:`Tower`,375492:`Nighthaven Labs`,62225:`Presidential Plane`,187984:`Article 5`,62221:`House`,62232:`Kafe Dostoyevsky`,201746:`Border`,365400:`Close Quarter`,299161:`Outback`,62231:`Bartlett U.`,396234:`Lair`,62223:`Hereford Base`,208094:`Skyscraper`,196157:`CQB Basics`,62222:`Oregon`,299534:`Outback`,318512:`Stadium`,307723:`Fort Truth`,195681:`Article 5`,62229:`Kanal`,177763:`CQB Basics`,357300:`Stadium 2020`,62224:`Clubhouse`,1193341205:`District`,359432:`Shinden`}),z=Object.freeze({notPlayed:c(0),inProgress:c(1),lost:c(2),enemiesEliminated:c(3),objectiveComplete:c(4),timeRanOut:c(5),enemiesSurrendered:c(6),unknownReason:c(7),matchCancelled:c(8)}),B=Object.freeze({[z.notPlayed]:`Not Played`,[z.inProgress]:`In Progress`,[z.lost]:`Lost`,[z.enemiesEliminated]:`Enemies Eliminated`,[z.objectiveComplete]:`Objective Complete`,[z.timeRanOut]:`Time ran out`,[z.enemiesSurrendered]:`Enemies Surrendered`,[z.unknownReason]:`Unknown Reason`,[z.matchCancelled]:`Match Cancelled`}),V=n({game:`string`,type:`string`,creation_time:`number`}),H=[z.enemiesEliminated,z.objectiveComplete,z.timeRanOut,z.enemiesSurrendered,z.unknownReason];function U(e){return H.includes(e)}const W=[z.notPlayed,z.inProgress];function G(e){return!W.includes(e)}const K=V.and({game:`'siege'`}),q=K.and({type:`'local_player'`,content:{profile_id:r(n.string)}}),J=()=>n({id:`number`,value:`string`}),Y=n({kills:`number`,deaths:`number`,assists:`number`,plants:`number`,score:`number`}),X=n({instigator_player_id:r(n.number),receiver_player_id:r(n.number),damage_amount:`number`,remaining_health:`number`,pre_damage_health:`number`,max_health:`number`,damage_type:T,damage_team_type:D,damage_item_id:r(n.number).or(`null`),damage_time:`number`}),Z=n({index:`number`,rounds_until_next_segment:`number`,segment_size:`number`,segment_index:`number`,team_0:{role:x,state:r(n.number)},team_1:{role:x,state:r(n.number)}}),Q=n({id:`number`,name:J(),time_of_day:J()}),ne=n({player_id:r(n.number),final_health:`number`,final_life_state:C,operator_name:J().or(`null`)}),re=n({round_data:Z,damage_events:X.array(),players:ne.array()}),ie=K.and({type:`'match_started'`,content:{game_mode:r(n.string),game_type:J(),match_type:r(n.string),match_id:r(n.string),map:Q,is_round_based:`boolean`,current_round_index:`number`,rounds:Z.array()}}),ae=K.and({type:`'module_loaded'`}),oe=K.and({type:`'module_unloaded'`}),se=K.and({type:`'started_queuing'`,content:{game_mode:r(n.string),game_type:J(),match_type:r(n.string)}}),ce=K.and({type:`'stopped_queuing'`}),le=K.and({type:`'unsupported_game_version'`,content:{hash:`string | null`,version:`string | null`}}),ue=K.and({type:`'match_ended'`}),de=K.and({type:`'map_changed'`,content:{map:Q}}),fe=K.and({type:`'operator_banned'`,content:{index:`number`,team:y,side:x,operator_name:J().or(`null`)}}),pe=K.and({type:`'round_ended'`,content:re}),me=K.and({type:`'phase_changed'`,content:{phase:_}}),he=K.and({type:`'player_joined'`,content:{player_id:r(n.number),profile_id:`string.uuid`,is_bot:`boolean`,is_enemy:`boolean`,is_squad_member:`boolean`,is_local_player:`boolean`,username:`string`,side:x,team:y,is_privacy_username:`boolean`,has_avatar_hidden:`boolean`,has_commend_streak:`boolean`,ping_id:`number`,match_stats:Y,life_state:C,ping:`number`}}).pipe(e=>({...e,content:{...e.content,starting_side:e.content.side}})),ge=K.and({type:`'player_left'`,content:{player_id:r(n.number)}}),_e=K.and({type:`'player_operator_changed'`,content:{player_id:r(n.number),operator_name:J().or(`null`)}}),ve=K.and({type:`'player_location_changed'`,content:{player_id:r(n.number),location_name:`string`}}),ye=K.and({type:`'player_side_changed'`,content:{player_id:r(n.number),side:x}}),be=K.and({type:`'player_stats_changed'`,content:{player_id:r(n.number),match_stats:Y}}),$=K.and({type:`'player_ping_updated'`,content:{player_id:r(n.number),ping:`number`}}),xe=K.and({type:`'defuser_planted'`,content:{player_id:r(n.number)}}),Se=K.and({type:`'defuser_sabotaged'`,content:{player_id:r(n.number)}}),Ce=K.and({type:`'defuser_picked_up'`,content:{player_id:r(n.number),initial:`boolean`}}),we=K.and({type:`'defuser_dropped'`,content:{player_id:r(n.number)}}),Te=K.and({type:`'player_life_state_changed'`,content:{player_id:r(n.number),life_state:C}}),Ee=K.and({type:`'player_died'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),De=K.and({type:`'player_downed'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),Oe=K.and({type:`'player_ping_id_changed'`,content:{player_id:r(n.number),ping_id:`number`}}),ke=K.and({type:`'player_team_changed'`,content:{player_id:r(n.number),team:y}}),Ae=t({"#event1":`module_loaded | module_unloaded | unsupported_game_version | local_player | started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_banned | round_ended | phase_changed | player_joined | player_left | player_operator_changed | player_location_changed | player_side_changed | player_stats_changed`,"#event2":`player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated`,event:`event1 | event2`,module_loaded:ae,module_unloaded:oe,unsupported_game_version:le,local_player:q,started_queuing:se,stopped_queuing:ce,match_started:ie,match_ended:ue,map_changed:de,operator_banned:fe,round_ended:pe,phase_changed:me,player_joined:he,player_left:ge,player_operator_changed:_e,player_location_changed:ve,player_side_changed:ye,player_stats_changed:be,defuser_planted:xe,defuser_sabotaged:Se,defuser_picked_up:Ce,defuser_dropped:we,player_ping_updated:$,player_life_state_changed:Te,player_died:Ee,player_downed:De,player_ping_id_changed:Oe,player_team_changed:ke}).export();function je(){return{key:`siege`,events:Ae}}export{V as BaseEvent,h as SIEGE_BOT_ID,E as SIEGE_DAMAGE_TEAM_TYPES,w as SIEGE_DAMAGE_TYPES,A as SIEGE_GAME_MODES_TO_ID,j as SIEGE_GAME_MODE_LABELS,g as SIEGE_GAME_MODE_PHASES,M as SIEGE_GAME_MODE_TYPES_TO_ID,N as SIEGE_GAME_MODE_TYPE_LABELS,R as SIEGE_MAP_LABELS,L as SIEGE_MAP_TO_ID,O as SIEGE_MATCH_TYPES_TO_ID,k as SIEGE_MATCH_TYPE_LABELS,te as SIEGE_OPERATOR_LABELS,F as SIEGE_OPERATOR_META,P as SIEGE_OPERATOR_TO_ID,S as SIEGE_PLAYER_LIFE_STATES,z as SIEGE_ROUND_STATES_TO_ID,B as SIEGE_ROUND_STATE_LABELS,b as SIEGE_SIDES,I as SIEGE_SIDE_OPERATORS,v as SIEGE_TEAMS,D as SiegeDamageTeamTypeSchema,T as SiegeDamageTypeSchema,m as SiegeGameMode,_ as SiegeGameModePhaseSchema,a as SiegeGameModeTypeNameId,f as SiegeItemObjectId,s as SiegeMapNameId,l as SiegeMatchId,p as SiegeMatchType,o as SiegeOperatorNameId,u as SiegePlayerId,C as SiegePlayerLifeStateSchema,d as SiegeProfileId,c as SiegeRoundState,x as SiegeSideSchema,y as SiegeTeamSchema,G as isSiegeRoundStateCompleted,U as isSiegeRoundStateVictory,je as module};
1
+ import{Type as e,scope as t,type as n}from"arktype";function r(e){return e}function ee(e){return e}function i(e){return e?t=>(e(t),t):ee}const a=i(),o=i(),s=i(),c=i(),l=i(),u=i(),te=i(),d=i(),f=i(),p=i(),m=i(),ne=`00000000-0000-0000-0000-000000000000`,h=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`],g=n(`===`,...h),_=[0,1],v=n(`===`,..._),y=[`attacker`,`defender`,`both`,`invalid`],b=n(`===`,...y),x=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],S=n(`===`,...x),C=`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`.split(`.`),w=n(`===`,...C),T=[`unknown`,`enemy`,`friendly`,`invalid`],E=n(`===`,...T),D=Object.freeze({quickPlay:f(`QUICK PLAY`),versusAi:f(`VERSUS AI`),standard:f(`STANDARD`),ranked:f(`RANKED`)}),O=Object.freeze({[D.quickPlay]:`Quick Play`,[D.versusAi]:`Versus AI`,[D.standard]:`Standard`,[D.ranked]:`Ranked`}),k=Object.freeze({teamDeathmatch:p(`TEAM DEATHMATCH`),goldenGun:p(`GOLDEN GUN`),freeForAll:p(`FREE FOR ALL`),weaponRoulette:p(`WEAPON ROULETTE`),dualFront:p(`DUAL FRONT`),bomb:p(`BOMB`),versusAi:p(`VERSUS AI`),hostage:p(`HOSTAGE`),threeVsThreeSecureArea:p(`3 VS 3 SECURE AREA`),targetDrill:p(`TARGET DRILL`),rengoku:p(`RENGOKU`)}),A=Object.freeze({[k.teamDeathmatch]:`Team Deathmatch`,[k.goldenGun]:`Golden Gun`,[k.freeForAll]:`Free For All`,[k.weaponRoulette]:`Weapon Roulette`,[k.dualFront]:`Dual Front`,[k.bomb]:`Bomb`,[k.versusAi]:`Versus AI`,[k.hostage]:`Hostage`,[k.threeVsThreeSecureArea]:`3v3 Secure Area`,[k.targetDrill]:`Target Drill`,[k.rengoku]:`Rengoku`}),j=Object.freeze({ranked:a(205379),quickMatch:a(138115),customGame:a(62008),versusAi:a(397300),standard:a(393930),arcade:a(320109),siegeCup:a(414089),dualFront:a(420611),showdown:a(305544),trainingGrounds:a(-1)}),M=Object.freeze({[j.quickMatch]:`Quick Match`,[j.ranked]:`Ranked`,[j.customGame]:`Custom Game`,[j.versusAi]:`Versus AI`,[j.standard]:`Standard`,[j.arcade]:`Arcade`,[j.siegeCup]:`Siege Cup`,[j.dualFront]:`Dual Front`,[j.showdown]:`Showdown`,[j.trainingGrounds]:`Training Grounds`}),N=Object.freeze({glaz:o(62242),blitz:o(62243),buck:o(62244),sledge:o(62245),ash:o(62246),thermite:o(62247),castle:o(62248),rook:o(62249),pulse:o(62250),doc:o(62251),mute:o(62252),smoke:o(62253),recruit:o(62555),thatcher:o(65143),twitch:o(65156),montagne:o(65159),bandit:o(65165),fuze:o(65168),kapkan:o(65171),tachanka:o(65174),jager:o(113049),iq:o(113052),frost:o(186159),blackbeard:o(187249),valkyrie:o(187252),caveira:o(207671),capitao:o(207674),echo:o(209180),hibana:o(209183),mira:o(222172),jackal:o(222182),ying:o(239334),lesion:o(239337),ela:o(254595),zofia:o(254606),dokkaebi:o(273652),vigil:o(273663),finka:o(281457),lion:o(281463),alibi:o(282399),maestro:o(285888),maverick:o(288504),clash:o(288526),nomad:o(293435),kaid:o(293436),gridlock:o(298589),mozzie:o(298616),nokk:o(299657),warden:o(299668),goyo:o(304196),amaru:o(308469),kali:o(310757),wamai:o(310768),oryx:o(317965),iana:o(317976),melusi:o(320062),ace:o(320073),zero:o(328927),aruni:o(328940),flores:o(334086),thunderbird:o(336466),osa:o(344493),thorn:o(349405),azami:o(354314),sens:o(357386),grim:o(365404),solis:o(376836),brava:o(382419),fenrir:o(386388),ram:o(392904),tubarao:o(395594),deimos:o(400504),striker:o(404278),sentry:o(404290),skopos:o(408405),rauora:o(421052)}),re=Object.freeze({[N.glaz]:`glaz`,[N.blitz]:`blitz`,[N.buck]:`buck`,[N.sledge]:`sledge`,[N.ash]:`ash`,[N.thermite]:`thermite`,[N.castle]:`castle`,[N.rook]:`rook`,[N.pulse]:`pulse`,[N.doc]:`doc`,[N.mute]:`mute`,[N.smoke]:`smoke`,[N.recruit]:`recruit`,[N.thatcher]:`thatcher`,[N.twitch]:`twitch`,[N.montagne]:`montagne`,[N.bandit]:`bandit`,[N.fuze]:`fuze`,[N.kapkan]:`kapkan`,[N.tachanka]:`tachanka`,[N.jager]:`jager`,[N.iq]:`iq`,[N.frost]:`frost`,[N.blackbeard]:`blackbeard`,[N.valkyrie]:`valkyrie`,[N.caveira]:`caveira`,[N.capitao]:`capitao`,[N.echo]:`echo`,[N.hibana]:`hibana`,[N.mira]:`mira`,[N.jackal]:`jackal`,[N.ying]:`ying`,[N.lesion]:`lesion`,[N.ela]:`ela`,[N.zofia]:`zofia`,[N.dokkaebi]:`dokkaebi`,[N.vigil]:`vigil`,[N.finka]:`finka`,[N.lion]:`lion`,[N.alibi]:`alibi`,[N.maestro]:`maestro`,[N.maverick]:`maverick`,[N.clash]:`clash`,[N.nomad]:`nomad`,[N.kaid]:`kaid`,[N.gridlock]:`gridlock`,[N.mozzie]:`mozzie`,[N.nokk]:`nokk`,[N.warden]:`warden`,[N.goyo]:`goyo`,[N.amaru]:`amaru`,[N.kali]:`kali`,[N.wamai]:`wamai`,[N.oryx]:`oryx`,[N.iana]:`iana`,[N.melusi]:`melusi`,[N.ace]:`ace`,[N.zero]:`zero`,[N.aruni]:`aruni`,[N.flores]:`flores`,[N.thunderbird]:`thunderbird`,[N.osa]:`osa`,[N.thorn]:`thorn`,[N.azami]:`azami`,[N.sens]:`sens`,[N.grim]:`grim`,[N.solis]:`solis`,[N.brava]:`brava`,[N.fenrir]:`fenrir`,[N.ram]:`ram`,[N.tubarao]:`tubarao`,[N.deimos]:`deimos`,[N.striker]:`striker`,[N.sentry]:`sentry`,[N.skopos]:`skopos`,[N.rauora]:`rauora`}),P=Object.freeze({[N.striker]:{name:`Striker`,role:`attacker`},[N.sledge]:{name:`Sledge`,role:`attacker`},[N.thatcher]:{name:`Thatcher`,role:`attacker`},[N.ash]:{name:`Ash`,role:`attacker`},[N.thermite]:{name:`Thermite`,role:`attacker`},[N.twitch]:{name:`Twitch`,role:`attacker`},[N.montagne]:{name:`Montagne`,role:`attacker`},[N.glaz]:{name:`Glaz`,role:`attacker`},[N.fuze]:{name:`Fuze`,role:`attacker`},[N.blitz]:{name:`Blitz`,role:`attacker`},[N.iq]:{name:`IQ`,role:`attacker`},[N.buck]:{name:`Buck`,role:`attacker`},[N.blackbeard]:{name:`Blackbeard`,role:`attacker`},[N.capitao]:{name:`Capitão`,role:`attacker`},[N.hibana]:{name:`Hibana`,role:`attacker`},[N.jackal]:{name:`Jackal`,role:`attacker`},[N.ying]:{name:`Ying`,role:`attacker`},[N.zofia]:{name:`Zofia`,role:`attacker`},[N.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[N.lion]:{name:`Lion`,role:`attacker`},[N.finka]:{name:`Finka`,role:`attacker`},[N.maverick]:{name:`Maverick`,role:`attacker`},[N.nomad]:{name:`Nomad`,role:`attacker`},[N.gridlock]:{name:`Gridlock`,role:`attacker`},[N.nokk]:{name:`Nøkk`,role:`attacker`},[N.amaru]:{name:`Amaru`,role:`attacker`},[N.kali]:{name:`Kali`,role:`attacker`},[N.iana]:{name:`Iana`,role:`attacker`},[N.ace]:{name:`Ace`,role:`attacker`},[N.zero]:{name:`Zero`,role:`attacker`},[N.flores]:{name:`Flores`,role:`attacker`},[N.osa]:{name:`Osa`,role:`attacker`},[N.sens]:{name:`Sens`,role:`attacker`},[N.grim]:{name:`Grim`,role:`attacker`},[N.brava]:{name:`Brava`,role:`attacker`},[N.ram]:{name:`Ram`,role:`attacker`},[N.deimos]:{name:`Deimos`,role:`attacker`},[N.rauora]:{name:`Rauora`,role:`attacker`},[N.sentry]:{name:`Sentry`,role:`defender`},[N.smoke]:{name:`Smoke`,role:`defender`},[N.mute]:{name:`Mute`,role:`defender`},[N.castle]:{name:`Castle`,role:`defender`},[N.pulse]:{name:`Pulse`,role:`defender`},[N.doc]:{name:`Doc`,role:`defender`},[N.rook]:{name:`Rook`,role:`defender`},[N.kapkan]:{name:`Kapkan`,role:`defender`},[N.tachanka]:{name:`Tachanka`,role:`defender`},[N.jager]:{name:`Jäger`,role:`defender`},[N.bandit]:{name:`Bandit`,role:`defender`},[N.frost]:{name:`Frost`,role:`defender`},[N.valkyrie]:{name:`Valkyrie`,role:`defender`},[N.caveira]:{name:`Caveira`,role:`defender`},[N.echo]:{name:`Echo`,role:`defender`},[N.mira]:{name:`Mira`,role:`defender`},[N.lesion]:{name:`Lesion`,role:`defender`},[N.ela]:{name:`Ela`,role:`defender`},[N.vigil]:{name:`Vigil`,role:`defender`},[N.alibi]:{name:`Alibi`,role:`defender`},[N.maestro]:{name:`Maestro`,role:`defender`},[N.clash]:{name:`Clash`,role:`defender`},[N.kaid]:{name:`Kaid`,role:`defender`},[N.mozzie]:{name:`Mozzie`,role:`defender`},[N.warden]:{name:`Warden`,role:`defender`},[N.goyo]:{name:`Goyo`,role:`defender`},[N.wamai]:{name:`Wamai`,role:`defender`},[N.oryx]:{name:`Oryx`,role:`defender`},[N.melusi]:{name:`Melusi`,role:`defender`},[N.aruni]:{name:`Aruni`,role:`defender`},[N.thunderbird]:{name:`Thunderbird`,role:`defender`},[N.thorn]:{name:`Thorn`,role:`defender`},[N.azami]:{name:`Azami`,role:`defender`},[N.solis]:{name:`Solis`,role:`defender`},[N.fenrir]:{name:`Fenrir`,role:`defender`},[N.tubarao]:{name:`Tubarao`,role:`defender`},[N.skopos]:{name:`Skopós`,role:`defender`}}),F=Object.freeze({attacker:Object.entries(P).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...P[o(Number(e))],id:o(Number(e))})),defender:Object.entries(P).filter(([e,t])=>t.role===`defender`).map(([e])=>({...P[o(Number(e))],id:o(Number(e))}))}),I=Object.freeze({favela:s(202283),fortress:s(293334),villa:s(286407),neighborhood:s(333785),article5:s(196214),themePark:s(229325),stadium:s(338641),outback:s(299162),yacht:s(62226),emeraldPlains:s(358871),chalet:s(62230),coastline:s(217482),bank:s(62228),consulate:s(62227),tower:s(255669),nighthavenLabs:s(375492),presidentialPlane:s(62225),house:s(62221),kafeDostoyevsky:s(62232),border:s(201746),closeQuarter:s(365400),bartlettU:s(62231),lair:s(396234),herefordBase:s(62223),skyscraper:s(208094),cqbBasics:s(196157),oregon:s(62222),fortTruth:s(307723),kanal:s(62229),stadium2020:s(357300),clubhouse:s(62224),district:s(1193341205),shinden:s(359432)}),L=Object.freeze({202283:`Favela`,293334:`Fortress`,286407:`Villa`,333785:`Neighborhood`,196214:`Article 5`,229325:`Theme Park`,338641:`Stadium`,299162:`Outback`,62226:`Yacht`,358871:`Emerald Plains`,62230:`Chalet`,217482:`Coastline`,62228:`Bank`,62227:`Consulate`,255669:`Tower`,375492:`Nighthaven Labs`,62225:`Presidential Plane`,187984:`Article 5`,62221:`House`,62232:`Kafe Dostoyevsky`,201746:`Border`,365400:`Close Quarter`,299161:`Outback`,62231:`Bartlett U.`,396234:`Lair`,62223:`Hereford Base`,208094:`Skyscraper`,196157:`CQB Basics`,62222:`Oregon`,299534:`Outback`,318512:`Stadium`,307723:`Fort Truth`,195681:`Article 5`,62229:`Kanal`,177763:`CQB Basics`,357300:`Stadium 2020`,62224:`Clubhouse`,1193341205:`District`,359432:`Shinden`}),R=Object.freeze({notPlayed:c(0),inProgress:c(1),lost:c(2),enemiesEliminated:c(3),objectiveComplete:c(4),timeRanOut:c(5),enemiesSurrendered:c(6),unknownReason:c(7),matchCancelled:c(8)}),z=Object.freeze({[R.notPlayed]:`Not Played`,[R.inProgress]:`In Progress`,[R.lost]:`Lost`,[R.enemiesEliminated]:`Enemies Eliminated`,[R.objectiveComplete]:`Objective Complete`,[R.timeRanOut]:`Time ran out`,[R.enemiesSurrendered]:`Enemies Surrendered`,[R.unknownReason]:`Unknown Reason`,[R.matchCancelled]:`Match Cancelled`}),B=Object.freeze({day:m(177839),night:m(177840)}),V=Object.freeze({[B.day]:`Day`,[B.night]:`Night`}),H=n({game:`string`,type:`string`,creation_time:`number`}),U=[R.enemiesEliminated,R.objectiveComplete,R.timeRanOut,R.enemiesSurrendered,R.unknownReason];function W(e){return U.includes(e)}const G=[R.notPlayed,R.inProgress];function K(e){return!G.includes(e)}const q=H.and({game:`'siege'`}),J=q.and({type:`'local_player'`,content:{profile_id:r(n.string)}}),Y=()=>n({id:`number`,value:`string`}),X=n({kills:`number`,deaths:`number`,assists:`number`,plants:`number`,score:`number`}),ie=n({instigator_player_id:r(n.number),receiver_player_id:r(n.number),damage_amount:`number`,remaining_health:`number`,pre_damage_health:`number`,max_health:`number`,damage_type:w,damage_team_type:E,damage_item_id:r(n.number).or(`null`),damage_time:`number`}),Z=n({index:`number`,rounds_until_next_segment:`number`,segment_size:`number`,segment_index:`number`,team_0:{role:b,state:r(n.number)},team_1:{role:b,state:r(n.number)}}),Q=n({id:`number`,name:Y(),time_of_day:Y()}),ae=n({player_id:r(n.number),final_health:`number`,final_life_state:S,operator_name:Y().or(`null`)}),$=n({round_data:Z,damage_events:ie.array(),players:ae.array()}),oe=q.and({type:`'match_started'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string),match_id:r(n.string),map:Q,is_round_based:`boolean`,current_round_index:`number`,rounds:Z.array()}}),se=q.and({type:`'module_loaded'`}),ce=q.and({type:`'module_unloaded'`}),le=q.and({type:`'started_queuing'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string)}}),ue=q.and({type:`'stopped_queuing'`}),de=q.and({type:`'unsupported_game_version'`,content:{hash:`string | null`,version:`string | null`}}),fe=q.and({type:`'match_ended'`}),pe=q.and({type:`'map_changed'`,content:{map:Q}}),me=q.and({type:`'operator_banned'`,content:{index:`number`,team:v,side:b,operator_name:Y().or(`null`)}}),he=q.and({type:`'round_ended'`,content:$}),ge=q.and({type:`'phase_changed'`,content:{phase:g}}),_e=q.and({type:`'player_joined'`,content:{player_id:r(n.number),profile_id:`string.uuid`,is_bot:`boolean`,is_enemy:`boolean`,is_squad_member:`boolean`,is_local_player:`boolean`,username:`string`,side:b,team:v,is_privacy_username:`boolean`,has_avatar_hidden:`boolean`,has_commend_streak:`boolean`,ping_id:`number`,match_stats:X,life_state:S,ping:`number`}}).pipe(e=>({...e,content:{...e.content,starting_side:e.content.side}})),ve=q.and({type:`'player_left'`,content:{player_id:r(n.number)}}),ye=q.and({type:`'player_operator_changed'`,content:{player_id:r(n.number),operator_name:Y().or(`null`)}}),be=q.and({type:`'player_location_changed'`,content:{player_id:r(n.number),location_name:`string`}}),xe=q.and({type:`'player_side_changed'`,content:{player_id:r(n.number),side:b}}),Se=q.and({type:`'player_stats_changed'`,content:{player_id:r(n.number),match_stats:X}}),Ce=q.and({type:`'player_ping_updated'`,content:{player_id:r(n.number),ping:`number`}}),we=q.and({type:`'defuser_planted'`,content:{player_id:r(n.number)}}),Te=q.and({type:`'defuser_sabotaged'`,content:{player_id:r(n.number)}}),Ee=q.and({type:`'defuser_picked_up'`,content:{player_id:r(n.number),initial:`boolean`}}),De=q.and({type:`'defuser_dropped'`,content:{player_id:r(n.number)}}),Oe=q.and({type:`'player_life_state_changed'`,content:{player_id:r(n.number),life_state:S}}),ke=q.and({type:`'player_died'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),Ae=q.and({type:`'player_downed'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),je=q.and({type:`'player_ping_id_changed'`,content:{player_id:r(n.number),ping_id:`number`}}),Me=q.and({type:`'player_team_changed'`,content:{player_id:r(n.number),team:v}}),Ne=t({"#event1":`module_loaded | module_unloaded | unsupported_game_version | local_player | started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_banned | round_ended | phase_changed | player_joined | player_left | player_operator_changed | player_location_changed | player_side_changed | player_stats_changed`,"#event2":`player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated`,event:`event1 | event2`,module_loaded:se,module_unloaded:ce,unsupported_game_version:de,local_player:J,started_queuing:le,stopped_queuing:ue,match_started:oe,match_ended:fe,map_changed:pe,operator_banned:me,round_ended:he,phase_changed:ge,player_joined:_e,player_left:ve,player_operator_changed:ye,player_location_changed:be,player_side_changed:xe,player_stats_changed:Se,defuser_planted:we,defuser_sabotaged:Te,defuser_picked_up:Ee,defuser_dropped:De,player_ping_updated:Ce,player_life_state_changed:Oe,player_died:ke,player_downed:Ae,player_ping_id_changed:je,player_team_changed:Me}).export();function Pe(){return{key:`siege`,events:Ne}}export{H as BaseEvent,ne as SIEGE_BOT_ID,T as SIEGE_DAMAGE_TEAM_TYPES,C as SIEGE_DAMAGE_TYPES,k as SIEGE_GAME_MODES_TO_ID,A as SIEGE_GAME_MODE_LABELS,h as SIEGE_GAME_MODE_PHASES,j as SIEGE_GAME_MODE_TYPES_TO_ID,M as SIEGE_GAME_MODE_TYPE_LABELS,L as SIEGE_MAP_LABELS,I as SIEGE_MAP_TO_ID,D as SIEGE_MATCH_TYPES_TO_ID,O as SIEGE_MATCH_TYPE_LABELS,re as SIEGE_OPERATOR_LABELS,P as SIEGE_OPERATOR_META,N as SIEGE_OPERATOR_TO_ID,x as SIEGE_PLAYER_LIFE_STATES,R as SIEGE_ROUND_STATES_TO_ID,z as SIEGE_ROUND_STATE_LABELS,y as SIEGE_SIDES,F as SIEGE_SIDE_OPERATORS,_ as SIEGE_TEAMS,V as SIEGE_TIME_OF_DAY_LABELS,B as SIEGE_TIME_OF_DAY_TO_ID,E as SiegeDamageTeamTypeSchema,w as SiegeDamageTypeSchema,p as SiegeGameMode,g as SiegeGameModePhaseSchema,a as SiegeGameModeTypeNameId,d as SiegeItemObjectId,s as SiegeMapNameId,l as SiegeMatchId,f as SiegeMatchType,o as SiegeOperatorNameId,u as SiegePlayerId,S as SiegePlayerLifeStateSchema,te as SiegeProfileId,c as SiegeRoundState,b as SiegeSideSchema,v as SiegeTeamSchema,m as SiegeTimeOfDay,K as isSiegeRoundStateCompleted,W as isSiegeRoundStateVictory,Pe as module};
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.18.3",
5
+ "version": "0.18.4",
6
6
  "description": "Overlayed app",
7
7
  "license": "SEE LICENSE IN LICENSE.md",
8
8
  "repository": {