{
  "version": 3,
  "sources": ["../src/index.ts"],
  "sourcesContent": ["import { IRoomCache, MatchMakerDriver, RoomCache, SortOptions, debugDriver } from '@colyseus/core';\nimport mongoose, { Document, Schema } from 'mongoose';\n\nconst RoomCacheSchema: Schema = new Schema({\n  clients: { type: Number, default: 0 },\n  locked: { type: Boolean, default: false },\n  maxClients: { type: Number, default: Infinity },\n  metadata: Schema.Types.Mixed,\n  name: String,\n  private: { type: Boolean, default: false },\n  publicAddress: String,\n  processId: String,\n  roomId: String,\n  unlisted: { type: Boolean, default: false }, // used for default LobbyRoom (prevent from showing up on room listing)\n}, {\n  strict: false,\n  timestamps: true,\n  versionKey: false,\n});\n\nRoomCacheSchema.index({ name: 1, locked: -1 });\nRoomCacheSchema.index({ roomId: 1 });\n\nconst RoomCache = mongoose.model<Document>('RoomCache', RoomCacheSchema);\n\nexport class MongooseDriver implements MatchMakerDriver {\n\n  constructor(connectionURI?: string) {\n\n    if (mongoose.connection.readyState === mongoose.STATES.disconnected) {\n      connectionURI = connectionURI || process.env.MONGO_URI || 'mongodb://127.0.0.1:27017/colyseus';\n\n      mongoose.connect(connectionURI, {\n        autoIndex: true,\n        autoCreate: true,\n      });\n\n      debugDriver(\"\uD83D\uDDC4\uFE0F Connected to\", connectionURI);\n    }\n  }\n\n  public createInstance(initialValues: any = {}) {\n    return (new RoomCache(initialValues) as any);\n  }\n\n  public async has(roomId: string) {\n    return !!(await RoomCache.findOne({ roomId }));\n  };\n\n  public query(conditions: Partial<IRoomCache>, sortOptions: SortOptions = {}) {\n    let query = RoomCache.find(conditions, {\n      _id: false,\n      clients: true,\n      createdAt: true,\n      locked: true,\n      maxClients: true,\n      metadata: true,\n      name: true,\n      roomId: true,\n    });\n\n    if (sortOptions) {\n      query = query.sort(sortOptions);\n    }\n\n    return query as any as IRoomCache[];\n  }\n\n  public findOne(conditions: Partial<IRoomCache>, sortOptions?: SortOptions) {\n    let query = RoomCache.findOne(conditions, { _id: 0 });\n\n    if (sortOptions) {\n      query = query.sort(sortOptions);\n    }\n\n    return query as any as Promise<RoomCache>;\n  }\n\n  public async clear() {\n    await RoomCache.deleteMany({});\n  }\n\n  public async cleanup(processId: string) {\n    await RoomCache.deleteMany({ processId });\n  }\n\n  public async shutdown() {\n    await mongoose.disconnect();\n  }\n}\n"],
  "mappings": ";AAAA,SAA+D,mBAAmB;AAClF,OAAO,YAAsB,cAAc;AAE3C,IAAM,kBAA0B,IAAI,OAAO;AAAA,EACzC,SAAS,EAAE,MAAM,QAAQ,SAAS,EAAE;AAAA,EACpC,QAAQ,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,EACxC,YAAY,EAAE,MAAM,QAAQ,SAAS,SAAS;AAAA,EAC9C,UAAU,OAAO,MAAM;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,EACzC,eAAe;AAAA,EACf,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA;AAC5C,GAAG;AAAA,EACD,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;AAED,gBAAgB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,CAAC;AAC7C,gBAAgB,MAAM,EAAE,QAAQ,EAAE,CAAC;AAEnC,IAAM,YAAY,SAAS,MAAgB,aAAa,eAAe;AAEhE,IAAM,iBAAN,MAAiD;AAAA,EAEtD,YAAY,eAAwB;AAElC,QAAI,SAAS,WAAW,eAAe,SAAS,OAAO,cAAc;AACnE,sBAAgB,iBAAiB,QAAQ,IAAI,aAAa;AAE1D,eAAS,QAAQ,eAAe;AAAA,QAC9B,WAAW;AAAA,QACX,YAAY;AAAA,MACd,CAAC;AAED,kBAAY,gCAAoB,aAAa;AAAA,IAC/C;AAAA,EACF;AAAA,EAEO,eAAe,gBAAqB,CAAC,GAAG;AAC7C,WAAQ,IAAI,UAAU,aAAa;AAAA,EACrC;AAAA,EAEA,MAAa,IAAI,QAAgB;AAC/B,WAAO,CAAC,CAAE,MAAM,UAAU,QAAQ,EAAE,OAAO,CAAC;AAAA,EAC9C;AAAA,EAEO,MAAM,YAAiC,cAA2B,CAAC,GAAG;AAC3E,QAAI,QAAQ,UAAU,KAAK,YAAY;AAAA,MACrC,KAAK;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK,WAAW;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAAA,EAEO,QAAQ,YAAiC,aAA2B;AACzE,QAAI,QAAQ,UAAU,QAAQ,YAAY,EAAE,KAAK,EAAE,CAAC;AAEpD,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK,WAAW;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,QAAQ;AACnB,UAAM,UAAU,WAAW,CAAC,CAAC;AAAA,EAC/B;AAAA,EAEA,MAAa,QAAQ,WAAmB;AACtC,UAAM,UAAU,WAAW,EAAE,UAAU,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAa,WAAW;AACtB,UAAM,SAAS,WAAW;AAAA,EAC5B;AACF;",
  "names": []
}
