{
  "version": 3,
  "sources": ["../../src/errors/RoomExceptions.ts"],
  "sourcesContent": ["import type { ExtractMessageType } from '@colyseus/shared-types';\nimport type { Room } from '../Room.ts';\n\nexport type RoomMethodName = 'onCreate'\n  | 'onAuth'\n  | 'onJoin'\n  | 'onLeave'\n  | 'onDrop'\n  | 'onReconnect'\n  | 'onDispose'\n  | 'onMessage'\n  | 'setSimulationInterval'\n  | 'setInterval'\n  | 'setTimeout';\n\nexport type RoomException<R extends Room = Room> =\n  OnCreateException<R> |\n  OnAuthException<R> |\n  OnJoinException<R> |\n  OnLeaveException<R> |\n  OnDropException<R> |\n  OnReconnectException<R> |\n  OnDisposeException |\n  OnMessageException<R> |\n  SimulationIntervalException |\n  TimedEventException;\n\nexport class OnCreateException<R extends Room = Room> extends Error {\n  options: Parameters<R['onCreate']>[0];\n  constructor(\n    cause: Error,\n    message: string,\n    options:  Parameters<R['onCreate']>[0],\n  ) {\n    super(message, { cause });\n    this.name = 'OnCreateException';\n    this.options = options;\n  }\n}\n\nexport class OnAuthException<R extends Room = Room> extends Error {\n  client: Parameters<R['onAuth']>[0];\n  options: Parameters<R['onAuth']>[1];\n  constructor(\n    cause: Error,\n    message: string,\n    client: Parameters<R['onAuth']>[0],\n    options: Parameters<R['onAuth']>[1],\n  ) {\n    super(message, { cause });\n    this.name = 'OnAuthException';\n    this.client = client;\n    this.options = options;\n  }\n}\n\nexport class OnJoinException<R extends Room = Room> extends Error {\n  client: Parameters<R['onJoin']>[0];\n  options: Parameters<R['onJoin']>[1];\n  auth: Parameters<R['onJoin']>[2];\n  constructor(\n    cause: Error,\n    message: string,\n    client: Parameters<R['onJoin']>[0],\n    options: Parameters<R['onJoin']>[1],\n    auth: Parameters<R['onJoin']>[2],\n  ) {\n    super(message, { cause });\n    this.name = 'OnJoinException';\n    this.client = client;\n    this.options = options;\n    this.auth = auth;\n  }\n}\n\nexport class OnLeaveException<R extends Room = Room> extends Error {\n  client: Parameters<R['onLeave']>[0];\n  consented: Parameters<R['onLeave']>[1];\n  constructor(\n    cause: Error,\n    message: string,\n    client: Parameters<R['onLeave']>[0],\n    consented: Parameters<R['onLeave']>[1],\n  ) {\n    super(message, { cause });\n    this.name = 'OnLeaveException';\n    this.client = client;\n    this.consented = consented;\n  }\n}\n\nexport class OnDropException<R extends Room = Room> extends Error {\n  client: Parameters<R['onDrop']>[0];\n  code: Parameters<R['onDrop']>[1];\n  constructor(\n    cause: Error,\n    message: string,\n    client: Parameters<R['onDrop']>[0],\n    code: Parameters<R['onDrop']>[1],\n  ) {\n    super(message, { cause });\n    this.name = 'OnDropException';\n    this.client = client;\n    this.code = code;\n  }\n}\n\nexport class OnReconnectException<R extends Room = Room> extends Error {\n  client: Parameters<R['onReconnect']>[0];\n  constructor(\n    cause: Error,\n    message: string,\n    client: Parameters<R['onReconnect']>[0],\n  ) {\n    super(message, { cause });\n    this.name = 'OnReconnectException';\n    this.client = client;\n  }\n}\n\nexport class OnDisposeException extends Error {\n  constructor(\n    cause: Error,\n    message: string,\n  ) {\n    super(message, { cause });\n    this.name = 'OnDisposeException';\n  }\n}\n\nexport class OnMessageException<R extends Room, MessageType extends keyof R['messages'] = keyof R['messages']> extends Error {\n  client: R['~client'];\n  payload: ExtractMessageType<R['messages'][MessageType]>;\n  type: MessageType;\n  constructor(\n    cause: Error,\n    message: string,\n    client: R['~client'],\n    payload: ExtractMessageType<R['messages'][MessageType]>,\n    type: MessageType,\n  ) {\n    super(message, { cause });\n    this.name = 'OnMessageException';\n    this.client = client;\n    this.payload = payload;\n    this.type = type;\n  }\n\n  public isType<T extends keyof R['messages']>(type: T): this is OnMessageException<R, T> {\n    return (this.type as string) === type;\n  }\n}\n\nexport class SimulationIntervalException extends Error {\n  constructor(\n    cause: Error,\n    message: string,\n  ) {\n    super(message, { cause });\n    this.name = 'SimulationIntervalException';\n  }\n}\n\nexport class TimedEventException extends Error {\n  public args: any[];\n  constructor(\n    cause: Error,\n    message: string,\n    ...args: any[]\n  ) {\n    super(message, { cause });\n    this.name = 'TimedEventException';\n    this.args = args;\n  }\n}"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BO,IAAM,oBAAN,cAAuD,MAAM;AAAA,EAElE,YACE,OACA,SACA,SACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AACF;AAEO,IAAM,kBAAN,cAAqD,MAAM;AAAA,EAGhE,YACE,OACA,SACA,QACA,SACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AACF;AAEO,IAAM,kBAAN,cAAqD,MAAM;AAAA,EAIhE,YACE,OACA,SACA,QACA,SACA,MACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,mBAAN,cAAsD,MAAM;AAAA,EAGjE,YACE,OACA,SACA,QACA,WACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,YAAY;AAAA,EACnB;AACF;AAEO,IAAM,kBAAN,cAAqD,MAAM;AAAA,EAGhE,YACE,OACA,SACA,QACA,MACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,uBAAN,cAA0D,MAAM;AAAA,EAErE,YACE,OACA,SACA,QACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YACE,OACA,SACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,qBAAN,cAAgH,MAAM;AAAA,EAI3H,YACE,OACA,SACA,QACA,SACA,MACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,OAAO;AAAA,EACd;AAAA,EAEO,OAAsC,MAA2C;AACtF,WAAQ,KAAK,SAAoB;AAAA,EACnC;AACF;AAEO,IAAM,8BAAN,cAA0C,MAAM;AAAA,EACrD,YACE,OACA,SACA;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAE7C,YACE,OACA,YACG,MACH;AACA,UAAM,SAAS,EAAE,MAAM,CAAC;AACxB,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;",
  "names": []
}
