UNPKG

@hazae41/glacier

Version:

Yet another React data (re)fetching library

1 lines 7.61 kB
{"version":3,"file":"fetched.cjs","sources":["../../../../../src/mods/fetched/fetched.ts"],"sourcesContent":["import { Catched, Err, Ok, Result } from \"@hazae41/result\"\nimport { Awaitable } from \"libs/promises/promises.js\"\nimport { Data, DataInit } from \"./data.js\"\nimport { Fail, FailInit } from \"./fail.js\"\nimport { CachedInit, TimedInit } from \"./times.js\"\n\nexport type FetchedInit<D, F> =\n | DataInit<D>\n | FailInit<F>\n\nexport namespace FetchedInit {\n\n export type Infer<T> =\n | DataInit.Infer<T>\n | FailInit.Infer<T>\n\n}\n\nexport type Fetched<D, F> =\n | Data<D>\n | Fail<F>\n\nexport namespace Fetched {\n\n export type Infer<T> =\n | Data.Infer<T>\n | Fail.Infer<T>\n\n export function from<T extends FetchedInit.Infer<T>>(init: T): Fetched<DataInit.Inner<T>, FailInit.Inner<T>> {\n if (\"error\" in init)\n return Fail.from<FailInit.Inner<T>>(init)\n else\n return Data.from<DataInit.Inner<T>>(init)\n }\n\n export function rewrap<T extends Ok.Infer<T>>(result: T & TimedInit & CachedInit, init?: TimedInit & CachedInit): Data<Ok.Inner<T>>\n\n export function rewrap<T extends Err.Infer<T>>(result: T & TimedInit & CachedInit, init?: TimedInit & CachedInit): Fail<Err.Inner<T>>\n\n export function rewrap<T extends Result.Infer<T>>(result: T & TimedInit & CachedInit, init?: TimedInit & CachedInit): Fetched<Ok.Inner<T>, Err.Inner<T>>\n\n export function rewrap<T extends Result.Infer<T>>(result: T & TimedInit & CachedInit, init: TimedInit & CachedInit = result): Fetched<Ok.Inner<T>, Err.Inner<T>> {\n if (result.isErr())\n return new Fail(result.getErr(), init)\n else\n return new Data(result.get(), init)\n }\n\n /**\n * Run a callback and wrap any returned value in Ok<T> and any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export async function runAndWrap<T>(callback: () => Awaitable<T>, init?: TimedInit & CachedInit): Promise<Fetched<T, unknown>> {\n try {\n return new Data(await callback(), init)\n } catch (e: unknown) {\n return new Fail(e, init)\n }\n }\n\n /**\n * Run a callback and wrap any returned value in Ok<T> and any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export function runAndWrapSync<T>(callback: () => T, init?: TimedInit & CachedInit): Fetched<T, unknown> {\n try {\n return new Data(callback(), init)\n } catch (e: unknown) {\n return new Fail(e, init)\n }\n }\n\n /**\n * Run a callback and wrap any returned value in Ok<T> and any thrown error in Err<Catched>\n * @param callback\n * @returns\n */\n export async function runAndDoubleWrap<T>(callback: () => Awaitable<T>, init?: TimedInit & CachedInit): Promise<Fetched<T, Error>> {\n try {\n return new Data(await callback(), init)\n } catch (e: unknown) {\n return new Fail(Catched.wrap(e), init)\n }\n }\n\n /**\n * Run a callback and wrap any returned value in Ok<T> and any thrown error in Err<Catched>\n * @param callback\n * @returns\n */\n export function runAndDoubleWrapSync<T>(callback: () => T, init?: TimedInit & CachedInit): Fetched<T, Error> {\n try {\n return new Data(callback(), init)\n } catch (e: unknown) {\n return new Fail(Catched.wrap(e), init)\n }\n }\n\n /**\n * Run a callback and wrap any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export async function runOrWrap<F extends Fetched.Infer<F>>(callback: () => Awaitable<F>, init?: TimedInit & CachedInit): Promise<F | Fail<unknown>> {\n try {\n return await callback()\n } catch (e: unknown) {\n return new Fail(e, init)\n }\n }\n\n /**\n * Run a callback and wrap any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export function runOrWrapSync<F extends Fetched.Infer<F>>(callback: () => F, init?: TimedInit & CachedInit): F | Fail<unknown> {\n try {\n return callback()\n } catch (e: unknown) {\n return new Fail(e, init)\n }\n }\n\n /**\n * Run a callback and wrap any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export async function runOrDoubleWrap<F extends Fetched.Infer<F>>(callback: () => Awaitable<F>, init?: TimedInit & CachedInit): Promise<F | Fail<Error>> {\n try {\n return await callback()\n } catch (e: unknown) {\n return new Fail(Catched.wrap(e), init)\n }\n }\n\n /**\n * Run a callback and wrap any thrown error in Err<unknown>\n * @param callback\n * @returns\n */\n export function runOrDoubleWrapSync<F extends Result.Infer<F>>(callback: () => F, init: TimedInit & CachedInit): F | Fail<Error> {\n try {\n return callback()\n } catch (e: unknown) {\n return new Fail(Catched.wrap(e), init)\n }\n }\n\n}"],"names":["Fetched","Fail","Data","Catched"],"mappings":";;;;;;AAsBiBA,yBAkIhB;AAlID,CAAA,UAAiB,OAAO,EAAA;IAMtB,SAAgB,IAAI,CAAiC,IAAO,EAAA;QAC1D,IAAI,OAAO,IAAI,IAAI;AACjB,YAAA,OAAOC,SAAI,CAAC,IAAI,CAAoB,IAAI,CAAC,CAAA;;AAEzC,YAAA,OAAOC,SAAI,CAAC,IAAI,CAAoB,IAAI,CAAC,CAAA;KAC5C;AALe,IAAA,OAAA,CAAA,IAAI,OAKnB,CAAA;AAQD,IAAA,SAAgB,MAAM,CAA4B,MAAkC,EAAE,OAA+B,MAAM,EAAA;QACzH,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,OAAO,IAAID,SAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;;YAEtC,OAAO,IAAIC,SAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA;KACtC;AALe,IAAA,OAAA,CAAA,MAAM,SAKrB,CAAA;AAED;;;;AAIG;AACI,IAAA,eAAe,UAAU,CAAI,QAA4B,EAAE,IAA6B,EAAA;AAC7F,QAAA,IAAI;YACF,OAAO,IAAIA,SAAI,CAAC,MAAM,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;SACxC;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAID,SAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACzB;KACF;AANqB,IAAA,OAAA,CAAA,UAAU,aAM/B,CAAA;AAED;;;;AAIG;AACH,IAAA,SAAgB,cAAc,CAAI,QAAiB,EAAE,IAA6B,EAAA;AAChF,QAAA,IAAI;YACF,OAAO,IAAIC,SAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;SAClC;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAID,SAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACzB;KACF;AANe,IAAA,OAAA,CAAA,cAAc,iBAM7B,CAAA;AAED;;;;AAIG;AACI,IAAA,eAAe,gBAAgB,CAAI,QAA4B,EAAE,IAA6B,EAAA;AACnG,QAAA,IAAI;YACF,OAAO,IAAIC,SAAI,CAAC,MAAM,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;SACxC;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAID,SAAI,CAACE,cAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACvC;KACF;AANqB,IAAA,OAAA,CAAA,gBAAgB,mBAMrC,CAAA;AAED;;;;AAIG;AACH,IAAA,SAAgB,oBAAoB,CAAI,QAAiB,EAAE,IAA6B,EAAA;AACtF,QAAA,IAAI;YACF,OAAO,IAAID,SAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;SAClC;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAID,SAAI,CAACE,cAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACvC;KACF;AANe,IAAA,OAAA,CAAA,oBAAoB,uBAMnC,CAAA;AAED;;;;AAIG;AACI,IAAA,eAAe,SAAS,CAA6B,QAA4B,EAAE,IAA6B,EAAA;AACrH,QAAA,IAAI;YACF,OAAO,MAAM,QAAQ,EAAE,CAAA;SACxB;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAIF,SAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACzB;KACF;AANqB,IAAA,OAAA,CAAA,SAAS,YAM9B,CAAA;AAED;;;;AAIG;AACH,IAAA,SAAgB,aAAa,CAA6B,QAAiB,EAAE,IAA6B,EAAA;AACxG,QAAA,IAAI;YACF,OAAO,QAAQ,EAAE,CAAA;SAClB;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAIA,SAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACzB;KACF;AANe,IAAA,OAAA,CAAA,aAAa,gBAM5B,CAAA;AAED;;;;AAIG;AACI,IAAA,eAAe,eAAe,CAA6B,QAA4B,EAAE,IAA6B,EAAA;AAC3H,QAAA,IAAI;YACF,OAAO,MAAM,QAAQ,EAAE,CAAA;SACxB;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAIA,SAAI,CAACE,cAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACvC;KACF;AANqB,IAAA,OAAA,CAAA,eAAe,kBAMpC,CAAA;AAED;;;;AAIG;AACH,IAAA,SAAgB,mBAAmB,CAA4B,QAAiB,EAAE,IAA4B,EAAA;AAC5G,QAAA,IAAI;YACF,OAAO,QAAQ,EAAE,CAAA;SAClB;QAAC,OAAO,CAAU,EAAE;AACnB,YAAA,OAAO,IAAIF,SAAI,CAACE,cAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;SACvC;KACF;AANe,IAAA,OAAA,CAAA,mBAAmB,sBAMlC,CAAA;AAEH,CAAC,EAlIgBH,eAAO,KAAPA,eAAO,GAkIvB,EAAA,CAAA,CAAA;;"}