{
  "version": 3,
  "sources": ["../src/Query.ts"],
  "sourcesContent": ["import { SortOptions } from '@colyseus/core';\n\nexport class Query<T> {\n  private readonly rooms: Promise<T[]>;\n  private conditions: any;\n  protected order: Map<string, 1 | -1> = new Map();\n\n  constructor(rooms: Promise<T[]>, conditions) {\n    this.conditions = conditions;\n    this.rooms = rooms;\n  }\n\n  public sort(options: SortOptions) {\n    this.order.clear();\n\n    const fields = Object.entries(options);\n\n    if (fields.length) {\n      for (const [field, direction] of fields) {\n        if (direction === 1 || direction === 'asc' || direction === 'ascending') {\n          this.order.set(field, 1);\n\n        } else {\n          this.order.set(field, -1);\n        }\n      }\n    }\n\n    return this;\n  }\n\n\n  public then(resolve, reject) {\n    return this.rooms.then(rooms => {\n\n      if (this.order.size) {\n        rooms.sort((room1, room2) => {\n          for (const [field, direction] of this.order) {\n            if (direction === 1) {\n              if (room1[field] > room2[field]) return 1;\n              if (room1[field] < room2[field]) return -1;\n            } else {\n              if (room1[field] > room2[field]) return -1;\n              if (room1[field] < room2[field]) return 1;\n            }\n          }\n        });\n      }\n\n      let conditions = Object.entries(this.conditions);\n      let withConditions = conditions.length > 0;\n\n      return resolve(rooms.find((room) => {\n        if (withConditions) {\n          for (let [field, value] of conditions) {\n            if (room[field] !== value) {\n              return false;\n            }\n          }\n        }\n\n        return true;\n      }));\n    })\n  }\n}\n"],
  "mappings": ";AAEO,IAAM,QAAN,MAAe;AAAA,EAKpB,YAAY,OAAqB,YAAY;AAF7C,SAAU,QAA6B,oBAAI,IAAI;AAG7C,SAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEO,KAAK,SAAsB;AAChC,SAAK,MAAM,MAAM;AAEjB,UAAM,SAAS,OAAO,QAAQ,OAAO;AAErC,QAAI,OAAO,QAAQ;AACjB,iBAAW,CAAC,OAAO,SAAS,KAAK,QAAQ;AACvC,YAAI,cAAc,KAAK,cAAc,SAAS,cAAc,aAAa;AACvE,eAAK,MAAM,IAAI,OAAO,CAAC;AAAA,QAEzB,OAAO;AACL,eAAK,MAAM,IAAI,OAAO,EAAE;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAGO,KAAK,SAAS,QAAQ;AAC3B,WAAO,KAAK,MAAM,KAAK,WAAS;AAE9B,UAAI,KAAK,MAAM,MAAM;AACnB,cAAM,KAAK,CAAC,OAAO,UAAU;AAC3B,qBAAW,CAAC,OAAO,SAAS,KAAK,KAAK,OAAO;AAC3C,gBAAI,cAAc,GAAG;AACnB,kBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,EAAG,QAAO;AACxC,kBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,EAAG,QAAO;AAAA,YAC1C,OAAO;AACL,kBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,EAAG,QAAO;AACxC,kBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,EAAG,QAAO;AAAA,YAC1C;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAEA,UAAI,aAAa,OAAO,QAAQ,KAAK,UAAU;AAC/C,UAAI,iBAAiB,WAAW,SAAS;AAEzC,aAAO,QAAQ,MAAM,KAAK,CAAC,SAAS;AAClC,YAAI,gBAAgB;AAClB,mBAAS,CAAC,OAAO,KAAK,KAAK,YAAY;AACrC,gBAAI,KAAK,KAAK,MAAM,OAAO;AACzB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT,CAAC,CAAC;AAAA,IACJ,CAAC;AAAA,EACH;AACF;",
  "names": []
}
