{
  "version": 3,
  "sources": ["../../src/matchmaker/controller.ts"],
  "sourcesContent": ["/**\n * Matchmaking controller\n * (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)\n */\n\nimport { ErrorCode } from '@colyseus/shared-types';\nimport { ServerError } from '../errors/ServerError.ts';\nimport { debugError } from '../Debug.ts';\nimport * as matchMaker from '../MatchMaker.ts';\nimport type { AuthContext } from '../Transport.ts';\n\nexport const controller = {\n  DEFAULT_CORS_HEADERS: {\n    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',\n    'Access-Control-Allow-Methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',\n    'Access-Control-Allow-Credentials': 'true',\n    'Access-Control-Allow-Origin': '*',\n    'Access-Control-Max-Age': '2592000',\n    // ...\n  },\n\n  exposedMethods: ['joinOrCreate', 'create', 'join', 'joinById', 'reconnect'],\n  allowedRoomNameChars: /([a-zA-Z_\\-0-9]+)/gi,\n  matchmakeRoute: 'matchmake',\n\n  /**\n   * You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:\n   *    ```\n   *    import { matchMaker } from \"@colyseus/core\";\n   *    matchMaker.controller.getCorsHeaders = function(headers) {\n   *      if (headers.get('referer') !== \"xxx\") {\n   *      }\n   *\n   *      return {\n   *        'Access-Control-Allow-Origin': 'safedomain.com',\n   *      }\n   *    }\n   *    ```\n   */\n  getCorsHeaders(headers: Headers): { [header: string]: string } {\n    return {\n      ['Access-Control-Allow-Origin']: headers.get(\"origin\") || \"*\",\n    };\n  },\n\n  async invokeMethod(\n    method: string,\n    roomName: string,\n    clientOptions: matchMaker.ClientOptions = {},\n    authOptions?: AuthContext,\n  ) {\n    if (this.exposedMethods.indexOf(method) === -1) {\n      throw new ServerError(ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method \"${method}\"`);\n    }\n\n    try {\n      return await matchMaker[method](roomName, clientOptions, authOptions);\n\n    } catch (e: any) {\n      debugError(e);\n      throw new ServerError(e.code || ErrorCode.MATCHMAKE_UNHANDLED, e.message);\n    }\n  }\n\n}\n\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA0B;AAC1B,yBAA4B;AAC5B,mBAA2B;AAC3B,iBAA4B;AAGrB,IAAM,aAAa;AAAA,EACxB,sBAAsB;AAAA,IACpB,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,IAChC,oCAAoC;AAAA,IACpC,+BAA+B;AAAA,IAC/B,0BAA0B;AAAA;AAAA,EAE5B;AAAA,EAEA,gBAAgB,CAAC,gBAAgB,UAAU,QAAQ,YAAY,WAAW;AAAA,EAC1E,sBAAsB;AAAA,EACtB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBhB,eAAe,SAAgD;AAC7D,WAAO;AAAA,MACL,CAAC,6BAA6B,GAAG,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QACA,UACA,gBAA0C,CAAC,GAC3C,aACA;AACA,QAAI,KAAK,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC9C,YAAM,IAAI,+BAAY,8BAAU,sBAAsB,mBAAmB,MAAM,GAAG;AAAA,IACpF;AAEA,QAAI;AACF,aAAO,MAAM,WAAW,MAAM,EAAE,UAAU,eAAe,WAAW;AAAA,IAEtE,SAAS,GAAQ;AACf,mCAAW,CAAC;AACZ,YAAM,IAAI,+BAAY,EAAE,QAAQ,8BAAU,qBAAqB,EAAE,OAAO;AAAA,IAC1E;AAAA,EACF;AAEF;",
  "names": []
}
