{"version":3,"sources":["../../src/resources/Req.ts"],"sourcesContent":["import { PageOptions } from '../types/PageList';\nimport { Optional } from '../types/Types';\nimport { Json, JsonValue } from '../types/Json';\nimport { OneOrMore } from '../types/Array';\nimport { ifDefined } from '../utils/If';\nimport { asNumber } from '../types/Number';\nimport { Id } from '../types/Id';\nimport type { Text } from '../types/Text';\n\nexport class Req<T = unknown> implements Omit<PageOptions, 'sort'> {\n  readonly skip: Optional<number>;\n  readonly take: Optional<number>;\n  constructor(\n    readonly path: Json = {},\n    readonly query: Json = {},\n    readonly body: T,\n    readonly headers: Record<string, OneOrMore<string>>\n  ) {\n    this.skip = ifDefined(query.skip, s => asNumber(s));\n    this.take = ifDefined(query.take, t => asNumber(t));\n  }\n\n  get id(): Id {\n    return this.get('id');\n  }\n\n  get q(): JsonValue {\n    return this.get('q');\n  }\n\n  get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];\n}\n\nexport function toReq<T = unknown>(req: { params?: { id?: unknown }; query?: { q?: unknown }; body?: T; headers?: unknown }): Req {\n  return new Req(req.params as Json, req.query as Json, req.body as Json, req.headers as Record<string, OneOrMore<string>>);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AASO,IAAM,MAAN,MAA4D;AAAA,EAGjE,YACW,OAAa,CAAC,GACd,QAAc,CAAC,GACf,MACA,SACT;AAJS;AACA;AACA;AACA;AAET,SAAK,OAAO,UAAU,MAAM,MAAM,OAAK,SAAS,CAAC,CAAC;AAClD,SAAK,OAAO,UAAU,MAAM,MAAM,OAAK,SAAS,CAAC,CAAC;AAAA,EACpD;AAAA,EAVS;AAAA,EACA;AAAA,EAWT,IAAI,KAAS;AACX,WAAO,KAAK,IAAI,IAAI;AAAA,EACtB;AAAA,EAEA,IAAI,IAAe;AACjB,WAAO,KAAK,IAAI,GAAG;AAAA,EACrB;AAAA,EAEA,MAAM,CAAC,QAAmB,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,IAAI,SAAS,CAAC;AAClF;AAEO,SAAS,MAAmB,KAA+F;AAChI,SAAO,IAAI,IAAI,IAAI,QAAgB,IAAI,OAAe,IAAI,MAAc,IAAI,OAA4C;AAC1H;","names":[]}