yolkbot 1.2.1 → 1.2.2

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.
Files changed (52) hide show
  1. package/browser/build/global.js +2 -2
  2. package/browser/build/module.js +2 -2
  3. package/dist/api.js +1 -1
  4. package/dist/bot/GamePlayer.js +1 -1
  5. package/dist/bot.js +1 -1
  6. package/dist/comm/CommIn.js +1 -1
  7. package/dist/comm/CommOut.js +1 -1
  8. package/dist/constants/CommCode.js +1 -1
  9. package/dist/constants/guns.js +1 -1
  10. package/dist/dispatches/BanPlayerDispatch.js +1 -1
  11. package/dist/dispatches/BootPlayerDispatch.js +1 -1
  12. package/dist/dispatches/ChatDispatch.js +1 -1
  13. package/dist/dispatches/FireDispatch.js +1 -1
  14. package/dist/dispatches/GameOptionsDispatch.js +1 -1
  15. package/dist/dispatches/GoToAmmoDispatch.js +1 -1
  16. package/dist/dispatches/GoToCoopDispatch.js +1 -1
  17. package/dist/dispatches/GoToGrenadeDispatch.js +1 -1
  18. package/dist/dispatches/GoToPlayerDispatch.js +1 -1
  19. package/dist/dispatches/GoToSpatulaDispatch.js +1 -1
  20. package/dist/dispatches/LookAtDispatch.js +1 -1
  21. package/dist/dispatches/LookAtPosDispatch.js +1 -1
  22. package/dist/dispatches/MeleeDispatch.js +1 -1
  23. package/dist/dispatches/MovementDispatch.js +1 -1
  24. package/dist/dispatches/PauseDispatch.js +1 -1
  25. package/dist/dispatches/ReloadDispatch.js +1 -1
  26. package/dist/dispatches/ReportPlayerDispatch.js +1 -1
  27. package/dist/dispatches/SaveLoadoutDispatch.js +1 -1
  28. package/dist/dispatches/SpawnDispatch.js +1 -1
  29. package/dist/dispatches/SwapWeaponDispatch.js +1 -1
  30. package/dist/dispatches/SwitchTeamDispatch.js +1 -1
  31. package/dist/dispatches/ThrowGrenadeDispatch.js +1 -1
  32. package/dist/matchmaker.js +1 -1
  33. package/dist/pathing/astar.js +1 -1
  34. package/dist/pathing/binaryheap.js +1 -1
  35. package/dist/pathing/mapnode.js +1 -1
  36. package/dist/socket.js +1 -1
  37. package/dist/types/api.d.ts +13 -6
  38. package/dist/types/bot.d.ts +28 -25
  39. package/dist/util.js +1 -1
  40. package/dist/wasm/bytes.js +1 -1
  41. package/dist/wasm/imports.js +2 -2
  42. package/dist/wasm/utils.js +1 -1
  43. package/dist/wasm/wrapper.js +1 -1
  44. package/package.json +7 -7
  45. package/dist/constants/changelog.js +0 -3
  46. package/dist/constants/housePromo.js +0 -3
  47. package/dist/constants/language.js +0 -49
  48. package/dist/constants/notices.js +0 -3
  49. package/dist/constants/shellNews.js +0 -3
  50. package/dist/constants/shellYoutube.js +0 -3
  51. package/dist/constants/shopItems.js +0 -3
  52. package/dist/constants/sounds.js +0 -3
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- class u{constructor(t,i){this.x=i.x,this.y=i.y,this.z=i.z,this.positionStr=`${this.x},${this.y},${this.z}`,this.position={x:this.x,y:this.y,z:this.z},this.meshType=t.split(".").pop(),this.f=0,this.g=0,this.h=0,this.visited=null,this.parent=null,this.closed=null,this.links=[],this.isStair()&&(i.ry?this.ry=i.ry:this.ry=0)}isFull(){return this.meshType==="full"}canWalkThrough(){return this.meshType==="none"||this.meshType==="ladder"}canWalkOn(){return this.meshType==="full"}isLadder(){return this.meshType==="ladder"}isStair(){return this.meshType==="wedge"}isAir(){return this.meshType==="none"}canLink(t,i){const r=this.x-t.x,s=this.z-t.z,e=this.y-t.y,h=Math.abs(r),n=Math.abs(e),l=Math.abs(s);if(h+n+l===0||h+l>1||this.isFull()||t.isFull())return!1;const o=i.at(this.x,this.y-1,this.z),y=i.at(t.x,t.y-1,t.z);if(!o||!y)return!1;const a={0:{x:0,z:-1},1:{x:-1,z:0},2:{x:0,z:1},3:{x:1,z:0}};switch(this.meshType){case"none":return!!(e===1&&t.canWalkThrough()||(o.canWalkOn()||o.isLadder())&&(t.meshType==="none"||t.meshType==="ladder"&&n===0||t.meshType==="wedge"&&e===0&&r===-a[t.ry].x&&s===-a[t.ry].z));case"ladder":return!!(n===1&&t.canWalkThrough()||n===0&&o.canWalkOn()||t.meshType==="ladder"&&(n===1||o.canWalkOn()&&y.canWalkOn()));case"wedge":return this.x+a[this.ry].x===t.x&&this.z+a[this.ry].z===t.z&&this.y+1===t.y||this.x-a[this.ry].x===t.x&&this.z-a[this.ry].z===t.z&&(this.y===t.y||this.y-1===t.y);default:return!1}}flatCenter(){return{x:this.x+.5,y:this.y+0,z:this.z+.5}}flatRadialDistance(t){const i=this.flatCenter();return Math.hypot(i.x-t.x,i.z-t.z)}}class p{list=[];constructor(t){const i={};for(const s of Object.keys(t.data))for(const e of t.data[s])i[e.x<<16|e.y<<8|e.z]=!0,this.list.push(new u(s,e));for(let s=0;s<t.width;s++)for(let e=0;e<t.height;e++)for(let h=0;h<t.depth;h++)i[s<<16|e<<8|h]||this.list.push(new u("SPECIAL.air.none",{x:s,y:e,z:h}));const r=new Map;for(const s of this.list)r.set(s.positionStr,s);for(const s of this.list){const e=[{x:s.x+1,y:s.y,z:s.z},{x:s.x-1,y:s.y,z:s.z},{x:s.x,y:s.y+1,z:s.z},{x:s.x,y:s.y-1,z:s.z},{x:s.x,y:s.y,z:s.z+1},{x:s.x,y:s.y,z:s.z-1}];for(const h of e){const n=`${h.x},${h.y},${h.z}`,l=r.get(n);l&&s.canLink(l,this)&&s.links.push(l)}}}at(t,i,r){if(!this.nodeMap){this.nodeMap=new Map;for(const e of this.list){const h=`${e.x},${e.y},${e.z}`;this.nodeMap.set(h,e)}}const s=`${t},${i},${r}`;return this.nodeMap.get(s)}clean(){for(const t of this.list)t.f=0,t.g=0,t.h=0,t.visited=null,t.parent=null,t.closed=null}hasLineOfSight(t,i){const r=i.x-t.x,s=i.y-t.y,e=i.z-t.z,h=Math.max(Math.abs(r),Math.abs(s),Math.abs(e)),n=r/h,l=s/h,o=e/h;let y=t.x,a=t.y,c=t.z;for(let f=0;f<=h;f++){const x=this.at(Math.round(y),Math.round(a),Math.round(c));if(x&&x.isFull())return!1;y+=n,a+=l,c+=o}return!0}}var d=u;export{u as MapNode,p as NodeList,d as default};
3
+ var d=Object.defineProperty;var f=(c,t)=>d(c,"name",{value:t,configurable:!0});class u{static{f(this,"MapNode")}constructor(t,i){this.x=i.x,this.y=i.y,this.z=i.z,this.positionStr=`${this.x},${this.y},${this.z}`,this.position={x:this.x,y:this.y,z:this.z},this.meshType=t.split(".").pop(),this.f=0,this.g=0,this.h=0,this.visited=null,this.parent=null,this.closed=null,this.links=[],this.isStair()&&(i.ry?this.ry=i.ry:this.ry=0)}isFull(){return this.meshType==="full"}canWalkThrough(){return this.meshType==="none"||this.meshType==="ladder"}canWalkOn(){return this.meshType==="full"}isLadder(){return this.meshType==="ladder"}isStair(){return this.meshType==="wedge"}isAir(){return this.meshType==="none"}canLink(t,i){const r=this.x-t.x,s=this.z-t.z,e=this.y-t.y,h=Math.abs(r),n=Math.abs(e),l=Math.abs(s);if(h+n+l===0||h+l>1||this.isFull()||t.isFull())return!1;const o=i.at(this.x,this.y-1,this.z),y=i.at(t.x,t.y-1,t.z);if(!o||!y)return!1;const a={0:{x:0,z:-1},1:{x:-1,z:0},2:{x:0,z:1},3:{x:1,z:0}};switch(this.meshType){case"none":return!!(e===1&&t.canWalkThrough()||(o.canWalkOn()||o.isLadder())&&(t.meshType==="none"||t.meshType==="ladder"&&n===0||t.meshType==="wedge"&&e===0&&r===-a[t.ry].x&&s===-a[t.ry].z));case"ladder":return!!(n===1&&t.canWalkThrough()||n===0&&o.canWalkOn()||t.meshType==="ladder"&&(n===1||o.canWalkOn()&&y.canWalkOn()));case"wedge":return this.x+a[this.ry].x===t.x&&this.z+a[this.ry].z===t.z&&this.y+1===t.y||this.x-a[this.ry].x===t.x&&this.z-a[this.ry].z===t.z&&(this.y===t.y||this.y-1===t.y);default:return!1}}flatCenter(){return{x:this.x+.5,y:this.y+0,z:this.z+.5}}flatRadialDistance(t){const i=this.flatCenter();return Math.hypot(i.x-t.x,i.z-t.z)}}class M{static{f(this,"NodeList")}list=[];constructor(t){const i={};for(const s of Object.keys(t.data))for(const e of t.data[s])i[e.x<<16|e.y<<8|e.z]=!0,this.list.push(new u(s,e));for(let s=0;s<t.width;s++)for(let e=0;e<t.height;e++)for(let h=0;h<t.depth;h++)i[s<<16|e<<8|h]||this.list.push(new u("SPECIAL.air.none",{x:s,y:e,z:h}));const r=new Map;for(const s of this.list)r.set(s.positionStr,s);for(const s of this.list){const e=[{x:s.x+1,y:s.y,z:s.z},{x:s.x-1,y:s.y,z:s.z},{x:s.x,y:s.y+1,z:s.z},{x:s.x,y:s.y-1,z:s.z},{x:s.x,y:s.y,z:s.z+1},{x:s.x,y:s.y,z:s.z-1}];for(const h of e){const n=`${h.x},${h.y},${h.z}`,l=r.get(n);l&&s.canLink(l,this)&&s.links.push(l)}}}at(t,i,r){if(!this.nodeMap){this.nodeMap=new Map;for(const e of this.list){const h=`${e.x},${e.y},${e.z}`;this.nodeMap.set(h,e)}}const s=`${t},${i},${r}`;return this.nodeMap.get(s)}clean(){for(const t of this.list)t.f=0,t.g=0,t.h=0,t.visited=null,t.parent=null,t.closed=null}hasLineOfSight(t,i){const r=i.x-t.x,s=i.y-t.y,e=i.z-t.z,h=Math.max(Math.abs(r),Math.abs(s),Math.abs(e)),n=r/h,l=s/h,o=e/h;let y=t.x,a=t.y,x=t.z;for(let z=0;z<=h;z++){const p=this.at(Math.round(y),Math.round(a),Math.round(x));if(p&&p.isFull())return!1;y+=n,a+=l,x+=o}return!0}}var T=u;export{u as MapNode,M as NodeList,T as default};
package/dist/socket.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- import r from"./globals.js";import{IsBrowser as i,ProxiesEnabled as l,UserAgent as h}from"./constants/index.js";class k{url="";proxy="";binaryType="";maxRetries=5;constructor(e,t){this.url=e,!l&&t&&(console.error("You cannot pass a proxy to a yolkws in this environment."),process.exit(1)),this.proxy=t}async tryConnect(e=1){const t=new URL(this.url),o=async()=>e===5?!1:await this.tryConnect(e+1);try{this.socket=i?new r.WebSocket(this.url):new r.WebSocket(this.url,{agent:this.proxy?new r.SocksProxyAgent(this.proxy):void 0,headers:{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache",connection:"Upgrade",host:t.host,origin:t.origin.replace("ws","http"),pragma:"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","user-agent":h}}),this.binaryType&&(this.socket.binaryType=this.binaryType)}catch(s){return console.error(`Failed to connect on try ${e}, trying again...`,s),await o()}return new Promise(s=>{const n=setTimeout(async()=>{i?this.socket.close():this.socket.terminate(),s(await o())},5e3),c=async a=>{clearTimeout(n),console.error("WebSocket error",a),s(await o())};this.socket.addEventListener("open",async()=>{clearTimeout(n),this.socket.removeEventListener("error",c),s(!0)}),this.socket.addEventListener("error",c)})}get onmessage(){return this.socket?.onmessage}set onmessage(e){this.socket?this.socket.onmessage=e:console.error("set onmessage before socket existed")}get onclose(){return this.socket?.onclose}set onclose(e){this.socket?this.socket.onclose=e:console.error("set onclose before socket existed")}get onerror(){return this.socket?.onerror}set onerror(e){this.socket?this.socket.onerror=e:console.error("set onclose before socket existed")}send(e){return this.socket?.send(e)}close(e){return this.socket?.close(e)}}var p=k;export{p as default};
3
+ var k=Object.defineProperty;var o=(c,e)=>k(c,"name",{value:e,configurable:!0});import n from"./globals.js";import{IsBrowser as l,ProxiesEnabled as u,UserAgent as y}from"./constants/index.js";class g{static{o(this,"yolkws")}url="";proxy="";binaryType="";maxRetries=5;constructor(e,t){this.url=e,!u&&t&&(console.error("You cannot pass a proxy to a yolkws in this environment."),process.exit(1)),this.proxy=t}async tryConnect(e=1){const t=new URL(this.url),r=o(async()=>e===5?!1:await this.tryConnect(e+1),"retryOrQuit");try{this.socket=l?new n.WebSocket(this.url):new n.WebSocket(this.url,{agent:this.proxy?new n.SocksProxyAgent(this.proxy):void 0,headers:{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache",connection:"Upgrade",host:t.host,origin:t.origin.replace("ws","http"),pragma:"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","user-agent":y}}),this.binaryType&&(this.socket.binaryType=this.binaryType)}catch(s){return console.error(`Failed to connect on try ${e}, trying again...`,s),await r()}return new Promise(s=>{const i=setTimeout(async()=>{l?this.socket.close():this.socket.terminate(),s(await r())},5e3),a=o(async h=>{clearTimeout(i),console.error("WebSocket error",h),s(await r())},"errorListener");this.socket.addEventListener("open",async()=>{clearTimeout(i),this.socket.removeEventListener("error",a),s(!0)}),this.socket.addEventListener("error",a)})}get onmessage(){return this.socket?.onmessage}set onmessage(e){this.socket?this.socket.onmessage=e:console.error("set onmessage before socket existed")}get onclose(){return this.socket?.onclose}set onclose(e){this.socket?this.socket.onclose=e:console.error("set onclose before socket existed")}get onerror(){return this.socket?.onerror}set onerror(e){this.socket?this.socket.onerror=e:console.error("set onclose before socket existed")}send(e){return this.socket?.send(e)}close(e){return this.socket?.close(e)}}var f=g;export{f as default};
@@ -16,6 +16,12 @@ interface APIParams {
16
16
  suppressErrors?: boolean;
17
17
  }
18
18
 
19
+ export type QueryServicesError = 'websocket_connect_fail' | 'bad_json' | 'unknown_socket_error' | 'services_closed_early';
20
+ export type AnonError = 'firebase_network_failed' | 'firebase_no_token';
21
+ export type LoginError = AnonLogin | 'firebase_no_credentials' | 'firebase_bad_request' | 'firebase_unknown_error';
22
+ export type EmailVerifyError = 'no_idtoken_passed' | 'firebase_invalid_response';
23
+ export type OobCodeError = 'no_oob_code_passed' | 'firebase_unknown_error';
24
+
19
25
  export class API {
20
26
  instance: string;
21
27
  protocol: string;
@@ -28,11 +34,12 @@ export class API {
28
34
 
29
35
  constructor(params?: APIParams);
30
36
 
31
- queryServices(request: QueryRequest): Promise<QueryResponse | string>;
37
+ queryServices(request: QueryRequest): Promise<QueryResponse | QueryServicesError>;
32
38
 
33
- loginWithCredentials(email: string, password: string): Promise<QueryResponse | string>;
34
- loginWithRefreshToken(refreshToken: string): Promise<QueryResponse | string>;
35
- loginAnonymously(): Promise<QueryResponse | string>;
36
- createAccount(email: string, password: string): Promise<QueryResponse | string>;
37
- sendEmailVerification(idToken?: string): Promise<string>;
39
+ loginWithCredentials(email: string, password: string): Promise<QueryResponse | LoginError>;
40
+ loginWithRefreshToken(refreshToken: string): Promise<QueryResponse | LoginError>;
41
+ loginAnonymously(): Promise<QueryResponse | AnonError>;
42
+ createAccount(email: string, password: string): Promise<QueryResponse | LoginError>;
43
+ sendEmailVerification(idToken?: string): Promise<{ email: string } | EmailVerifyError>;
44
+ verifyOobCode(oobCode: string): Promise<QueryResponse | OobCodeError>;
38
45
  }
@@ -9,7 +9,6 @@ type intents = {
9
9
  LOG_PACKETS: 10,
10
10
  NO_LOGIN: 11,
11
11
  DEBUG_BUFFER: 12,
12
- DEBUG_BEST_TARGET: 14,
13
12
  NO_AFK_KICK: 16,
14
13
  LOAD_MAP: 17,
15
14
  OBSERVE_GAME: 18,
@@ -26,7 +25,7 @@ import { MapJSON } from './constants/maps';
26
25
  import { Item } from './constants/items';
27
26
  import { ADispatch } from './dispatches/index';
28
27
  import { NodeList } from './pathing/mapnode';
29
- import { API } from './api';
28
+ import { AnonError, API, LoginError, QueryServicesError } from './api';
30
29
  import { Matchmaker } from './matchmaker';
31
30
  import yolkws from './socket';
32
31
 
@@ -344,6 +343,10 @@ export interface FireBullet {
344
343
  dirZ: number;
345
344
  }
346
345
 
346
+ type FindPublicErrors = 'no_region_passed' | 'invalid_region_passed' | 'no_mode_passed' | 'invalid_mode_passed' | 'matchmaker_init_fail' | 'internal_session_error';
347
+ type CreatePrivateErrors = FindPublicErrors | 'invalid_map_passed';
348
+ type BotLoginError = 'account_banned';
349
+
347
350
  export class Bot {
348
351
  static Intents: intents;
349
352
  Intents: intents;
@@ -373,24 +376,23 @@ export class Bot {
373
376
 
374
377
  constructor(params?: BotParams);
375
378
 
376
- loginAnonymously(): Promise<Account | false>;
377
- loginWithRefreshToken(refreshToken: string): Promise<Account | false>;
378
- login(email: string, pass: string): Promise<Account | false>;
379
- createAccount(email: string, pass: string): Promise<Account | false>;
379
+ loginAnonymously(): Promise<Account | BotLoginError | AnonError>;
380
+ loginWithRefreshToken(refreshToken: string): Promise<Account | BotLoginError | LoginError>;
381
+ login(email: string, pass: string): Promise<Account | BotLoginError | LoginError>;
382
+ createAccount(email: string, pass: string): Promise<Account | BotLoginError | LoginError>;
380
383
 
381
- initMatchmaker(): Promise<boolean>;
384
+ initMatchmaker(): Promise<true | BotLoginError | AnonError | 'matchmaker_tryconnect_failed'>;
382
385
 
383
- createPrivateGame(region: string, mode: number, map: string): Promise<RawGameData | string>;
384
- findPublicGame(region: string, mode: number): Promise<RawGameData | string>;
386
+ createPrivateGame(region: string, mode: number, map: string): Promise<RawGameData | FindPublicErrors>;
387
+ findPublicGame(region: string, mode: number): Promise<RawGameData | CreatePrivateErrors>;
385
388
 
386
- join(botName: string, data: string | RawGameData): Promise<void>;
389
+ join(botName: string, data: string | RawGameData): Promise<true | 'matchmaker_init_fail' | 'game_not_found' | 'websocket_tryconnect_fail' | 'invalid_game_object'>;
387
390
 
388
391
  processPacket(data: number[]): void;
389
392
  dispatch(disp: ADispatch): boolean;
390
393
  update(): void;
391
394
 
392
395
  canSee(player: GamePlayer): boolean;
393
- getBestTarget(customFilter?: (player: GamePlayer) => boolean): { player: GamePlayer, inLoS: boolean } | undefined;
394
396
 
395
397
  onAny(cb: Function): void;
396
398
  off(event: string, cb: Function): void;
@@ -403,8 +405,6 @@ export class Bot {
403
405
  on(event: 'challengeComplete', cb: (player: GamePlayer, challengeId: number) => void): void;
404
406
  on(event: 'chat', cb: (player: GamePlayer | undefined, message: string, flags: number) => void): void;
405
407
  on(event: 'close', cb: (code: number) => void): void;
406
- on(event: 'collectAmmo', cb: (player: GamePlayer, weapon: AnyGun) => void): void;
407
- on(event: 'collectGrenade', cb: (player: GamePlayer) => void): void;
408
408
  on(event: 'error', cb: (error: string) => void): void;
409
409
  on(event: 'gameForcePause', cb: () => void): void;
410
410
  on(event: 'gameOptionsChange', cb: (oldOptions: GameOptions, newOptions: GameOptions) => void): void;
@@ -419,6 +419,8 @@ export class Bot {
419
419
  on(event: 'playerBeginStreak', cb: (player: GamePlayer, streakType: number) => void): void;
420
420
  on(event: 'playerChangeCharacter', cb: (player: GamePlayer, oldCharacter: Character, newCharacter: Character) => void): void;
421
421
  on(event: 'playerChangeGun', cb: (player: GamePlayer, oldGunId: number, newGunId: number) => void): void;
422
+ on(event: 'playerCollectAmmo', cb: (player: GamePlayer, weapon: AnyGun, itemId: number) => void): void;
423
+ on(event: 'playerCollectGrenade', cb: (player: GamePlayer, itemId: number) => void): void;
422
424
  on(event: 'playerDamage', cb: (player: GamePlayer, oldHp: number, newHp: number) => void): void;
423
425
  on(event: 'playerDeath', cb: (killed: GamePlayer, killer: GamePlayer) => void): void;
424
426
  on(event: 'playerEndStreak', cb: (player: GamePlayer, streakType: number) => void): void;
@@ -436,27 +438,28 @@ export class Bot {
436
438
  on(event: 'playerRotate', cb: (player: GamePlayer, oldView: View, newView: View) => void): void;
437
439
  on(event: 'playerSwapWeapon', cb: (player: GamePlayer, nowActive: number) => void): void;
438
440
  on(event: 'playerSwitchTeam', cb: (player: GamePlayer, oldTeam: number, newTeam: number) => void): void;
441
+ on(event: 'playerThrowGrenade', cb: (player: GamePlayer, position: Position, dPosition: Position) => void): void;
439
442
  on(event: 'respawnDenied', cb: () => void): void;
440
443
  on(event: 'rocketHit', cb: (pos: Position, damage: number, blastRadius: number) => void): void;
441
444
  on(event: 'selfShieldHit', cb: (newShieldHealth: number, newPlayerHealth: number, dir: { dx: number, dz: number }) => void): void;
442
445
  on(event: 'selfShieldLost', cb: (newPlayerHealth: number, dir: { dx: number, dz: number }) => void): void;
443
446
  on(event: 'sessionExpired', cb: () => void): void;
444
- on(event: 'spawnItem', cb: (itemType: number, itemPosition: Position) => void): void;
447
+ on(event: 'spawnItem', cb: (itemType: number, itemPosition: Position, itemId: number) => void): void;
445
448
  on(event: 'tick', cb: () => void): void;
446
449
 
447
- checkChiknWinner(): Promise<ChiknWinnerStatus>;
448
- playChiknWinner(doPrematureCooldownCheck: boolean): Promise<ChiknWinnerResponse | string>;
449
- resetChiknWinner(): Promise<ChiknWinnerStatus>;
450
+ checkChiknWinner(): Promise<ChiknWinnerStatus | QueryServicesError>;
451
+ playChiknWinner(doPrematureCooldownCheck: boolean): Promise<ChiknWinnerResponse | QueryServicesError | 'hit_daily_limit' | 'on_cooldown' | 'session_expired' | 'unknown_error'>;
452
+ resetChiknWinner(): Promise<ChiknWinnerStatus | QueryServicesError | 'not_enough_eggs' | 'not_at_limit' | 'unknown_error'>;
450
453
 
451
- refreshChallenges(): Promise<Challenges[]>;
452
- claimChallenge(challengeId: number): Promise<{ eggReward: number, updatedChallenges: Challenges[] }>;
453
- rerollChallenge(challengeId: number): Promise<Challenges[]>;
454
+ refreshChallenges(): Promise<Challenges[] | QueryServicesError>;
455
+ claimChallenge(challengeId: number): Promise<{ eggReward: number, updatedChallenges: Challenges[] } | QueryServicesError>;
456
+ rerollChallenge(challengeId: number): Promise<Challenges[] | QueryServicesError>;
454
457
 
455
- refreshBalance(): Promise<number>;
456
- redeemCode(code: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
457
- claimURLReward(reward: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
458
- claimSocialReward(rewardTag: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
459
- buyItem(itemId: number): Promise<{ result: string; currentBalance: number; itemId: number; }>;
458
+ refreshBalance(): Promise<number | QueryServicesError>;
459
+ redeemCode(code: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
460
+ claimURLReward(reward: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
461
+ claimSocialReward(rewardTag: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
462
+ buyItem(itemId: number): Promise<{ result: string; currentBalance: number; itemId: number; } | QueryServicesError>;
460
463
 
461
464
  leave(code?: number): void;
462
465
  logout(): void;
package/dist/util.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- import{IsBrowser as p}from"./constants/index.js";const x=async(c,r)=>{if(p)return await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${c}.json?${r}`)).json();{const{existsSync:t,mkdirSync:a,readFileSync:f,writeFileSync:z}=await import("node:fs"),{join:o}=await import("node:path"),{homedir:s}=await import("node:os"),e=o(s(),".yolkbot"),n=o(e,"maps");t(e)||a(e),t(n)||a(n);const i=o(n,`${c}-${r}.json`);if(t(i))return JSON.parse(f(i,"utf-8"));const l=await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${c}.json?${r}`)).json();return z(i,JSON.stringify(l,null,4),{flag:"w+"}),l}},m=c=>{let r=0;const t={},a=[];for(const o of c)t[o.x]||(t[o.x]={}),t[o.x][o.y]||(t[o.x][o.y]={}),t[o.x][o.y][o.z]={zone:null};const f=[{x:-1,z:0},{x:1,z:0},{x:0,z:-1},{x:0,z:1}],z=(o,s,e)=>t[o]&&t[o][s]&&t[o][s][e]?t[o][s][e]:null;for(const o of c)if(!t[o.x][o.y][o.z].zone){o.zone=++r,t[o.x][o.y][o.z].zone=o.zone;const s=[o];let e;do{e=0;for(const n of c)if(!t[n.x][n.y][n.z].zone)for(const i of f){const l=z(n.x+i.x,n.y,n.z+i.z);if(l&&l.zone===o.zone){e++,n.zone=o.zone,t[n.x][n.y][n.z].zone=o.zone,s.push(n);break}}}while(e>0);a.push(s)}return a};export{x as fetchMap,m as initKotcZones};
3
+ var y=Object.defineProperty;var f=(s,i)=>y(s,"name",{value:i,configurable:!0});import{IsBrowser as x}from"./constants/index.js";const w=f(async(s,i)=>{if(x)return await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${s}.json?${i}`)).json();{const{existsSync:t,mkdirSync:a,readFileSync:z,writeFileSync:p}=await import("node:fs"),{join:o}=await import("node:path"),{homedir:c}=await import("node:os"),e=o(c(),".yolkbot"),n=o(e,"maps");t(e)||a(e),t(n)||a(n);const r=o(n,`${s}-${i}.json`);if(t(r))return JSON.parse(z(r,"utf-8"));const l=await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${s}.json?${i}`)).json();return p(r,JSON.stringify(l,null,4),{flag:"w+"}),l}},"fetchMap"),h=f(s=>{let i=0;const t={},a=[];for(const o of s)t[o.x]||(t[o.x]={}),t[o.x][o.y]||(t[o.x][o.y]={}),t[o.x][o.y][o.z]={zone:null};const z=[{x:-1,z:0},{x:1,z:0},{x:0,z:-1},{x:0,z:1}],p=f((o,c,e)=>t[o]&&t[o][c]&&t[o][c][e]?t[o][c][e]:null,"getMapCellAt");for(const o of s)if(!t[o.x][o.y][o.z].zone){o.zone=++i,t[o.x][o.y][o.z].zone=o.zone;const c=[o];let e;do{e=0;for(const n of s)if(!t[n.x][n.y][n.z].zone)for(const r of z){const l=p(n.x+r.x,n.y,n.z+r.z);if(l&&l.zone===o.zone){e++,n.zone=o.zone,t[n.x][n.y][n.z].zone=o.zone,c.push(n);break}}}while(e>0);a.push(c)}return a},"initKotcZones");export{w as fetchMap,h as initKotcZones};