@hazae41/glacier
Version:
Yet another React data (re)fetching library
1 lines • 4.12 kB
Source Map (JSON)
{"version":3,"file":"fail.mjs","sources":["../../../../../src/mods/fetched/fail.ts"],"sourcesContent":["import { Err } from \"@hazae41/result\"\nimport { Awaitable } from \"libs/promises/promises.js\"\nimport { Cached, CachedInit, Timed, TimedInit } from \"./times.js\"\n\nexport interface FailInit<T> extends TimedInit, CachedInit {\n readonly error: T\n}\n\nexport namespace FailInit {\n\n export type Infer<T> = FailInit<Inner<T>>\n\n export type Inner<T> = T extends FailInit<infer Inner> ? Inner : never\n\n}\n\nexport namespace Fail {\n\n export type Infer<T> = Fail<Inner<T>>\n\n export type Inner<T> = T extends Fail<infer Inner> ? Inner : never\n\n}\n\nexport class Fail<T> extends Err<T> implements FailInit<T>, Timed, Cached {\n\n readonly error: T\n\n readonly time: number\n\n readonly cooldown?: number\n readonly expiration?: number\n\n constructor(error: T, init: TimedInit & CachedInit = {}) {\n super(error)\n\n const { time = Date.now(), cooldown, expiration } = init\n\n this.error = error\n this.time = time\n this.cooldown = cooldown\n this.expiration = expiration\n }\n\n static from<T>(init: FailInit<T>): Fail<T> {\n const { error, time, cooldown, expiration } = init\n\n return new Fail(error, { time, cooldown, expiration })\n }\n\n isData(): false {\n return false\n }\n\n isFail(): this is Fail<T> {\n return true\n }\n\n set(inner: unknown): this {\n return this\n }\n\n setErr<U>(inner: U): Fail<U> {\n return new Fail(inner, this)\n }\n\n setInit(init?: TimedInit & CachedInit): Fail<T> {\n return new Fail(this.inner, init)\n }\n\n async mapErr<U>(mapper: (data: T) => Awaitable<U>): Promise<Fail<U>> {\n return new Fail<U>(await mapper(this.getErr()), this)\n }\n\n mapErrSync<U>(mapper: (data: T) => U): Fail<U> {\n return new Fail<U>(mapper(this.getErr()), this)\n }\n\n /**\n * Transform Result<Promise<T>, E> into Promise<Result<T, E>>\n * @returns `await this.inner` if `Ok`, `this` if `Err`\n */\n async await(): Promise<this> {\n return this\n }\n\n /**\n * Transform Result<T, Promise<E>> into Promise<Result<T, E>>\n * @returns `await this.inner` if `Err`, `this` if `Ok`\n */\n async awaitErr<T>(this: Fail<PromiseLike<T>>): Promise<Fail<Awaited<T>>> {\n return new Fail(await this.inner, this)\n }\n\n /**\n * Transform Result<Promise<T>, Promise<E>> into Promise<Result<T, E>>\n * @returns `await this.inner`\n */\n async awaitAll<T>(this: Fail<PromiseLike<T>>): Promise<Fail<Awaited<T>>> {\n return await this.awaitErr()\n }\n\n}"],"names":[],"mappings":";;AAwBM,MAAO,IAAQ,SAAQ,GAAM,CAAA;AAExB,IAAA,KAAK,CAAG;AAER,IAAA,IAAI,CAAQ;AAEZ,IAAA,QAAQ,CAAS;AACjB,IAAA,UAAU,CAAS;IAE5B,WAAY,CAAA,KAAQ,EAAE,IAAA,GAA+B,EAAE,EAAA;QACrD,KAAK,CAAC,KAAK,CAAC,CAAA;AAEZ,QAAA,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;AAExD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;KAC7B;IAED,OAAO,IAAI,CAAI,IAAiB,EAAA;QAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;AAElD,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;KACvD;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,KAAK,CAAA;KACb;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAA;KACZ;AAED,IAAA,GAAG,CAAC,KAAc,EAAA;AAChB,QAAA,OAAO,IAAI,CAAA;KACZ;AAED,IAAA,MAAM,CAAI,KAAQ,EAAA;AAChB,QAAA,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;KAC7B;AAED,IAAA,OAAO,CAAC,IAA6B,EAAA;QACnC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;KAClC;IAED,MAAM,MAAM,CAAI,MAAiC,EAAA;AAC/C,QAAA,OAAO,IAAI,IAAI,CAAI,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;KACtD;AAED,IAAA,UAAU,CAAI,MAAsB,EAAA;AAClC,QAAA,OAAO,IAAI,IAAI,CAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;KAChD;AAED;;;AAGG;AACH,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,OAAO,IAAI,CAAA;KACZ;AAED;;;AAGG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;KACxC;AAED;;;AAGG;AACH,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;KAC7B;AAEF;;;;"}