{"version":3,"sources":["../../src/domain/Typo.ts"],"sourcesContent":["import { View } from '../utils/View';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { Json, JsonValue } from '../types/Json';\nimport { PageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\nimport { List } from '../types/List';\n\nexport class Typo<T, Options = FetchOptions> extends Repository<T, Options> {\n  constructor(\n    protected view: View<T>,\n    private readonly gateway: Gateway<Options>\n  ) {\n    super();\n  }\n\n  create = (j: Json): T => this.view.from(j);\n\n  all(options?: Options): Promise<PageList<T>> {\n    return this.gateway.all(options).then(js => js.map(this.create));\n  }\n\n  byId(id: Id): Promise<T> {\n    return this.gateway\n      .byId(id)\n      .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n      .then(j => this.create(j));\n  }\n\n  byIds(...ids: Id[]): Promise<List<T>> {\n    return this.gateway.byIds(...ids).then(js => js.map(this.create));\n  }\n\n  byKey(key: Key, options?: Options): Promise<PageList<T>> {\n    return this.gateway.by('key', key, options).then(js => js.map(this.create));\n  }\n\n  by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n    return this.gateway.by(key.toString(), value, options).then(js => js.map(this.create));\n  }\n\n  search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n    return this.gateway.search(q, options).then(js => js.map(this.create));\n  }\n\n  filter(options?: Options): Promise<PageList<T>> {\n    return this.gateway.filter(options).then(js => js.map(j => this.create(j)));\n  }\n\n  exists(id: Id): Promise<boolean> {\n    return this.gateway.exists(id);\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,OAAN,cAA8C,WAAuB;AAAA,EAC1E,YACY,MACO,SACjB;AACA,UAAM;AAHI;AACO;AAAA,EAGnB;AAAA,EAEA,SAAS,CAAC,MAAe,KAAK,KAAK,KAAK,CAAC;AAAA,EAEzC,IAAI,SAAyC;AAC3C,WAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACjE;AAAA,EAEA,KAAK,IAAoB;AACvB,WAAO,KAAK,QACT,KAAK,EAAE,EACP,KAAK,OAAK,KAAK,CAAC,EAAE,IAAI,UAAU,OAAO,UAAU,YAAY,CAAC,EAC9D,KAAK,OAAK,KAAK,OAAO,CAAC,CAAC;AAAA,EAC7B;AAAA,EAEA,SAAS,KAA6B;AACpC,WAAO,KAAK,QAAQ,MAAM,GAAG,GAAG,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,KAAU,SAAyC;AACvD,WAAO,KAAK,QAAQ,GAAG,OAAO,KAAK,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EAC5E;AAAA,EAEA,GAAG,KAAc,OAAkB,SAAyC;AAC1E,WAAO,KAAK,QAAQ,GAAG,IAAI,SAAS,GAAG,OAAO,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACvF;AAAA,EAEA,OAAO,GAAc,SAAyC;AAC5D,WAAO,KAAK,QAAQ,OAAO,GAAG,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,EACvE;AAAA,EAEA,OAAO,SAAyC;AAC9C,WAAO,KAAK,QAAQ,OAAO,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,OAAK,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,QAAQ,OAAO,EAAE;AAAA,EAC/B;AACF;","names":[]}