{
  "version": 3,
  "sources": ["../../../../src/matchmaker/driver/local/Query.ts"],
  "sourcesContent": ["import { SortOptions } from '../api.js';\n\nexport class Query<T> {\n  private $rooms: T[];\n  private conditions: any;\n\n  constructor(rooms: any[], conditions) {\n    this.$rooms = rooms.slice(0);\n    this.conditions = conditions;\n  }\n\n  public sort(options: SortOptions) {\n    this.$rooms = this.$rooms.sort((room1, room2) => {\n      for (const field in options) {\n        if (options.hasOwnProperty(field)) {\n          const direction = options[field];\n          const isAscending = (direction === 1 || direction === 'asc' || direction === 'ascending');\n\n          if (isAscending) {\n            if (room1[field] > room2[field]) { return 1; }\n            if (room1[field] < room2[field]) { return -1; }\n\n          } else {\n            if (room1[field] > room2[field]) { return -1; }\n            if (room1[field] < room2[field]) { return 1; }\n          }\n        }\n      }\n    });\n  }\n\n  public filter(conditions: any) {\n    return this.$rooms.filter(((room) => {\n      for (const field in conditions) {\n        if (\n          conditions.hasOwnProperty(field) &&\n          room[field] !== conditions[field]\n        ) {\n          return false;\n        }\n      }\n      return true;\n    }));\n\n  }\n\n  public then(resolve, reject) {\n    const result: any = this.$rooms.find(((room) => {\n      for (const field in this.conditions) {\n        if (\n          this.conditions.hasOwnProperty(field) &&\n          room[field] !== this.conditions[field]\n        ) {\n          return false;\n        }\n      }\n      return true;\n    }));\n    return resolve(result);\n  }\n}\n"],
  "mappings": ";AAEO,IAAM,QAAN,MAAe;AAAA,EAIpB,YAAY,OAAc,YAAY;AACpC,SAAK,SAAS,MAAM,MAAM,CAAC;AAC3B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEO,KAAK,SAAsB;AAChC,SAAK,SAAS,KAAK,OAAO,KAAK,CAAC,OAAO,UAAU;AAC/C,iBAAW,SAAS,SAAS;AAC3B,YAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,gBAAM,YAAY,QAAQ,KAAK;AAC/B,gBAAM,cAAe,cAAc,KAAK,cAAc,SAAS,cAAc;AAE7E,cAAI,aAAa;AACf,gBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG;AAAE,qBAAO;AAAA,YAAG;AAC7C,gBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG;AAAE,qBAAO;AAAA,YAAI;AAAA,UAEhD,OAAO;AACL,gBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG;AAAE,qBAAO;AAAA,YAAI;AAC9C,gBAAI,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG;AAAE,qBAAO;AAAA,YAAG;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEO,OAAO,YAAiB;AAC7B,WAAO,KAAK,OAAO,OAAQ,CAAC,SAAS;AACnC,iBAAW,SAAS,YAAY;AAC9B,YACE,WAAW,eAAe,KAAK,KAC/B,KAAK,KAAK,MAAM,WAAW,KAAK,GAChC;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAE;AAAA,EAEJ;AAAA,EAEO,KAAK,SAAS,QAAQ;AAC3B,UAAM,SAAc,KAAK,OAAO,KAAM,CAAC,SAAS;AAC9C,iBAAW,SAAS,KAAK,YAAY;AACnC,YACE,KAAK,WAAW,eAAe,KAAK,KACpC,KAAK,KAAK,MAAM,KAAK,WAAW,KAAK,GACrC;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAE;AACF,WAAO,QAAQ,MAAM;AAAA,EACvB;AACF;",
  "names": []
}
