need-result 1.3.11 → 1.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/index.d.mts +7 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,16 +58,16 @@ if(isOk){
|
|
|
58
58
|
|
|
59
59
|
This library also bundles additional utilities useful for error management.
|
|
60
60
|
|
|
61
|
-
### `
|
|
61
|
+
### `trycatch`
|
|
62
62
|
|
|
63
|
-
The `
|
|
63
|
+
The `trycatch` function is helpful at handling potentially unknown error functions, and works in asynchonous contexts.
|
|
64
64
|
|
|
65
65
|
```ts
|
|
66
|
-
import {
|
|
67
|
-
const result =
|
|
66
|
+
import { trycatch } from "need-result";
|
|
67
|
+
const result = trycatch(fs.readFileSync("./path.txt"));
|
|
68
68
|
|
|
69
69
|
// Map the unknown error to a known error state
|
|
70
|
-
const result2 =
|
|
70
|
+
const result2 = trycatch(
|
|
71
71
|
fs.readFileSync("./path.txt"),
|
|
72
72
|
(e, inferredMessage) => ({
|
|
73
73
|
code: "FS_ERROR",
|
package/dist/index.d.mts
CHANGED
|
@@ -72,6 +72,13 @@ declare function trycatch<T, Code extends LiteralString = "UNKNOWN_ERROR", Messa
|
|
|
72
72
|
data?: Data;
|
|
73
73
|
cause?: Cause;
|
|
74
74
|
}): Result<never, ErrorT<Code, Message, Hint, Data, Cause>>;
|
|
75
|
+
declare function trycatch<T, Code extends LiteralString = "UNKNOWN_ERROR", Message extends LiteralString = `Unknown error: ${string}`, Hint extends string = string, Data extends Record<string, unknown> = Record<string, unknown>, Cause extends Error | ErrorT | unknown = unknown>(operation: () => void, mapError?: (error: unknown, inferredMessage: string) => {
|
|
76
|
+
code: Code;
|
|
77
|
+
message: Message;
|
|
78
|
+
hint?: Hint;
|
|
79
|
+
data?: Data;
|
|
80
|
+
cause?: Cause;
|
|
81
|
+
}): Result<void, ErrorT<Code, Message, Hint, Data, Cause>>;
|
|
75
82
|
declare function trycatch<T, Code extends LiteralString = "UNKNOWN_ERROR", Message extends LiteralString = `Unknown error: ${string}`, Hint extends string = string, Data extends Record<string, unknown> = Record<string, unknown>, Cause extends Error | ErrorT | unknown = unknown>(operation: () => Promise<T>, mapError?: (error: unknown, inferredMessage: string) => {
|
|
76
83
|
code: Code;
|
|
77
84
|
message: Message;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/utility.types.ts","../src/types.ts","../src/index.ts"],"sourcesContent":[],"mappings":";KAAY,aAAA,kBAA+B;;;UCG1B,qBAAqB,iBAAiB;SAC/C;SACA;EAFS;;;EACT,IAAA,EAAA,EAAA,IAAA,IAKS,EALT,CAKY,CALZ,EAKe,CALf,CAAA;EACA;;;EAIS,KAAA,EAAA,EAAA,IAAA,IAIC,GAJD,CAIK,CAJL,EAIQ,CAJR,CAAA;EAIK;;;;EAKE,MAAA,EAAA,EAAA,IAAA,SAAA,EAAA,CAAG,CAAH,EAAA,KAAA,CAAA,GAAe,CAAf,GAAA,KAAA;EAAe;;;;;EAMwB,QAAA,CAAA,CAAA,CAAA,CAAA,YAAA,EAApC,CAAoC,CAAA,EAAA,IAAA,SAAnB,EAAmB,CAAhB,CAAgB,EAAA,KAAA,CAAA,GAAJ,CAAI,GAAA,CAAA;;AAGnD,KAAA,MAAM,CAAA,CAAA,EAAA,UAAc,MAAd,GAAA,KAAA,GAA+B,MAA/B,CAAA,GAAyC,EAAzC,CAA4C,CAA5C,EAA+C,CAA/C,CAAA,GAAoD,GAApD,CAAwD,CAAxD,EAA2D,CAA3D,CAAA;AAAc,KAEpB,OAFoB,CAAA,UAEF,aAFE,CAAA,GAEe,SAFf,CAG/B,4BAH+B,CAGF,CAHE,CAAA,CAAA;KAM3B,4BAN4C,CAAA,UAAA,MAAA,CAAA,GAOhD,CAPgD,SAAA,GAAA,KAAA,MAAA,IAAA,KAAA,KAAA,EAAA,GAAA,GAQ1C,KAR0C,IAQjC,4BARiC,CAQJ,IARI,CAAA,EAAA,GAS7C,CAT6C;;;iBCpBjC,gBAAgB,+BAA+B,IAAI,GAAG,GAAG;iBACzD,oCAAoC,sCAEjD,SAAS;ADPK,iBCYD,GDZQ,CAAA,UCYM,MDZN,CAAA,CAAA,KAAA,ECYqB,CDZrB,CAAA,ECYyB,GDZzB,CAAA,KAAA,ECYoC,CDZpC,CAAA;AAAc,iBCatB,GDbsB,CAAA,IAAA,KAAA,EAAA,aCexB,aDfwB,GCeR,aDfQ,EAAA,gBCgBrB,aDhBqB,GCgBL,aDhBK,EAAA,aAAA,MAAA,GAAA,MAAA,EAAA,aCkBxB,MDlBwB,CAAA,MAAA,EAAA,OAAA,CAAA,GCkBE,MDlBF,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,cCmBvB,KDnBuB,GCmBf,MDnBe,GAAA,OAAA,GAAA,OAAA,CAAA,CAAA,KAAA,EAAA;EAAiB,IAAA,ECqBhD,IDrBgD;EAC/C,OAAA,ECqBE,ODrBF;EACA,IAAA,CAAA,ECqBA,IDrBA;EAIY,IAAA,CAAA,ECkBZ,IDlBY;EAAG,KAAA,CAAA,ECmBd,KDnBc;CAAN,CAAA,ECoBb,GDpBa,CCoBT,CDpBS,ECoBN,MDpBM,CCoBC,IDpBD,ECoBO,ODpBP,ECoBgB,IDpBhB,ECoBsB,IDpBtB,ECoB4B,KDpB5B,CAAA,CAAA;AAIK,cCyBT,EDzBS,CAAA,CAAA,EAAA,UCyBO,MDzBP,GAAA,KAAA,GAAA,KAAA,CAAA,YCyB0C,ODzB1C,CCyBkD,CDzBlD,ECyBqD,CDzBrD,CAAA,CAAA;EAAG,SAAA,KAAA,EC4BW,CD5BX;EAAP,KAAA,EAAA,IAAA;EAKS,WAAA,CAAA,KAAA,ECuBS,CDvBT;EAAH,MAAA,CAAA,CAAA,EAAA,IAAA,SCyBA,EDzBA,CCyBG,CDzBH,EAAA,KAAA,CAAA,GCyBe,CDzBf,GAAA,KAAA;EAAe,QAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EC6BX,CD7BW,CAAA,EAAA,IAAA,SC6BM,ED7BN,CC6BS,CD7BT,EAAA,KAAA,CAAA,GC6BqB,CD7BrB,GC6ByB,CD7BzB;EAMZ,IAAA,CAAA,CAAA,EAAA,IAAA,IC2BV,ED3BU,CC2BP,CD3BO,EC2BJ,CD3BI,CAAA;EAAoB,KAAA,CAAA,CAAA,EAAA,IAAA,IC+B7B,GD/B6B,CC+BzB,CD/ByB,EC+BtB,CD/BsB,CAAA;;AAAY,cCoC9C,GDpC8C,CAAA,IAAA,KAAA,EAAA,UCoCrB,MDpCqB,GCoCZ,MDpCY,CAAA,YCqC/C,ODrC+C,CCqCvC,CDrCuC,ECqCpC,CDrCoC,CAAA,CAAA;EAAI,SAAA,KAAA,ECyC3B,CDzC2B;EAAC,KAAA,EAAA,IAAA;EAGpD,WAAM,CAAA,KAAA,ECsCkB,CDtClB;EAAc,MAAA,CAAA,CAAA,EAAA,KAAA;EAAiB,QAAA,CAAA,CAAA,CAAA,CAAA,YAAA,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/utility.types.ts","../src/types.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -55,7 +55,7 @@ var Err = class Err {
|
|
|
55
55
|
returnValue: "errorT",
|
|
56
56
|
stackSkip: Err
|
|
57
57
|
});
|
|
58
|
-
const e = new Error(errorValue.message
|
|
58
|
+
const e = new Error(errorValue.message);
|
|
59
59
|
if ("captureStackTrace" in Error) Error.captureStackTrace(e, Err);
|
|
60
60
|
throw e;
|
|
61
61
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["target: { stack?: string }","padding","value: T","error: E","error"],"sources":["../src/utility.ts","../src/index.ts"],"sourcesContent":["export const isPromise = <T = any>(value: unknown): value is Promise<T> => {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === \"object\" || typeof value === \"function\") &&\n\t\ttypeof (value as any).then === \"function\"\n\t);\n};\n\nexport function capture(stackSkip?: Function) {\n\tconst target: { stack?: string } = {};\n\tif (\"captureStackTrace\" in Error) {\n\t\t(Error as any).captureStackTrace(target, stackSkip ?? capture);\n\t} else {\n\t\ttarget.stack = new (Error as any)().stack;\n\t}\n\treturn target.stack!;\n}\n\nexport function padding(text: string, spaces: number): string {\n\tconst padding = \" \".repeat(spaces);\n\treturn text\n\t\t.split(\"\\n\")\n\t\t.map((line) => padding + line)\n\t\t.join(\"\\n\");\n}\n","import boxen from \"boxen\";\nimport type { Codeify, IResult, Result } from \"./types\";\nimport { capture, isPromise, padding } from \"./utility\";\nimport type { LiteralString } from \"./utility.types\";\n\nexport * from \"./types\";\n\nexport function ok<T, E extends ErrorT | never = never>(value: T): Ok<T, E>;\nexport function ok<T extends void = void, E extends ErrorT | never = never>(\n\tvalue: void,\n): Ok<void, E>;\nexport function ok<T, E extends ErrorT | never = never>(value: T): Ok<T, E> {\n\treturn new Ok(value);\n}\n\nexport function err<E extends ErrorT>(error: E): Err<never, E>;\nexport function err<\n\tT = never,\n\tCode extends LiteralString = LiteralString,\n\tMessage extends LiteralString = LiteralString,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(props: {\n\tcode: Code;\n\tmessage: Message;\n\thint?: Hint;\n\tdata?: Data;\n\tcause?: Cause;\n}): Err<T, ErrorT<Code, Message, Hint, Data, Cause>>;\nexport function err(props: any) {\n\tif (props instanceof ErrorT) {\n\t\treturn new Err(props);\n\t}\n\tconst error = new ErrorT({ ...props, stackSkip: err });\n\treturn new Err(error);\n}\n\nexport class Ok<T, E extends ErrorT | never = never> implements IResult<T, E> {\n\terror = null;\n\n\tconstructor(public readonly value: T) {}\n\n\tunwrap(): this extends Ok<T, never> ? T : never {\n\t\treturn this.value as any;\n\t}\n\n\tunwrapOr<D>(_defaultValue: D): this extends Ok<T, never> ? T : D {\n\t\treturn this.value as any;\n\t}\n\n\tisOk(): this is Ok<T, E> {\n\t\treturn true;\n\t}\n\n\tisErr(): this is Err<T, E> {\n\t\treturn false;\n\t}\n}\n\nexport class Err<T = never, E extends ErrorT = ErrorT>\n\timplements IResult<T, E>\n{\n\tvalue = null;\n\n\tconstructor(public readonly error: E) {}\n\n\tunwrap(): never {\n\t\tconst errorValue = logError(this.error, {\n\t\t\treturnValue: \"errorT\",\n\t\t\tstackSkip: Err,\n\t\t});\n\t\tconst e = new Error(\n\t\t\terrorValue.message,\n\t\t\terrorValue.cause\n\t\t\t\t? {\n\t\t\t\t\t\tcause: errorValue.cause,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\tError.captureStackTrace(e, Err);\n\t\t}\n\t\tthrow e;\n\t}\n\n\t//@ts-expect-error - this works\n\tunwrapOr<D>(defaultValue: D): D {\n\t\tlogError(this.error, { stackSkip: err });\n\t\treturn defaultValue;\n\t}\n\n\tisOk(): this is Ok<never> {\n\t\treturn false;\n\t}\n\n\tisErr(): this is Err<T, E> {\n\t\treturn true;\n\t}\n}\n\n//----------------------------------------------------\n// Some of the try-catch code was a copy from\n// https://gist.github.com/t3dotgg/a486c4ae66d32bf17c09c73609dacc5b\n//----------------------------------------------------\ntype Operation<T> = Promise<T> | (() => T) | (() => Promise<T>);\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: Promise<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Promise<Result<T, ErrorT<Code, Message, Hint, Data, Cause>>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => never,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<never, ErrorT<Code, Message, Hint, Data, Cause>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => Promise<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Promise<Result<T, ErrorT<Code, Message, Hint, Data, Cause>>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => T,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<T, ErrorT<Code, Message, Hint, Data, Cause>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n\tE extends ErrorT = ErrorT<Code, Message, Hint, Data, Cause>,\n>(\n\toperation: Operation<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<T, E> | Promise<Result<T, E>> {\n\ttry {\n\t\tconst result = typeof operation === \"function\" ? operation() : operation;\n\n\t\tif (isPromise(result)) {\n\t\t\tconst resolved = Promise.resolve(result)\n\t\t\t\t.then((data) => ok(data))\n\t\t\t\t.catch((error) => err(error));\n\t\t\treturn resolved as Promise<Result<T, E>>;\n\t\t}\n\n\t\treturn ok(result);\n\t} catch (error) {\n\t\tconst defaultMapError = (error: unknown) => {\n\t\t\treturn new ErrorT({\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t\tmessage: `Unknown error: ${error}`,\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t};\n\t\tconst mappedError = (mapError\n\t\t\t? new ErrorT(\n\t\t\t\t\tmapError(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\ttypeof error === \"object\" &&\n\t\t\t\t\t\t\terror !== null &&\n\t\t\t\t\t\t\t\"message\" in error &&\n\t\t\t\t\t\t\ttypeof error.message === \"string\"\n\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t: String(error),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t: defaultMapError(error)) as unknown as E;\n\t\treturn err(mappedError);\n\t}\n}\n\n// ----------------------------------------------------\n\nexport const TTY_COLORS = {\n\treset: \"\\x1b[0m\",\n\tbright: \"\\x1b[1m\",\n\tdim: \"\\x1b[2m\",\n\tundim: \"\\x1b[22m\",\n\tunderscore: \"\\x1b[4m\",\n\tblink: \"\\x1b[5m\",\n\treverse: \"\\x1b[7m\",\n\thidden: \"\\x1b[8m\",\n\tfg: {\n\t\tblack: \"\\x1b[30m\",\n\t\tred: \"\\x1b[31m\",\n\t\tgreen: \"\\x1b[32m\",\n\t\tyellow: \"\\x1b[33m\",\n\t\tblue: \"\\x1b[34m\",\n\t\tmagenta: \"\\x1b[35m\",\n\t\tcyan: \"\\x1b[36m\",\n\t\twhite: \"\\x1b[37m\",\n\t},\n\tbg: {\n\t\tblack: \"\\x1b[40m\",\n\t\tred: \"\\x1b[41m\",\n\t\tgreen: \"\\x1b[42m\",\n\t\tyellow: \"\\x1b[43m\",\n\t\tblue: \"\\x1b[44m\",\n\t\tmagenta: \"\\x1b[45m\",\n\t\tcyan: \"\\x1b[46m\",\n\t\twhite: \"\\x1b[47m\",\n\t},\n} as const;\n\nexport const logError = <\n\tSilent extends boolean = false,\n\tReturnValue extends \"errorT\" | \"string\" = \"errorT\",\n>(\n\terror: ErrorT | Err<ErrorT>,\n\topts?: {\n\t\tsilent?: Silent;\n\t\treturnValue?: ReturnValue;\n\t\tstackSkip?: Function;\n\t},\n): Silent extends true\n\t? undefined\n\t: ReturnValue extends \"errorT\"\n\t\t? ErrorT\n\t\t: string => {\n\tconst options = {\n\t\treturnValue: \"string\",\n\t\tsilent: false,\n\t\tstackSkip: logError,\n\t\t...opts,\n\t};\n\tconst { code, message, stack, name, cause, hint, data } =\n\t\terror instanceof ErrorT ? error : error.error;\n\n\tconst l = `${TTY_COLORS.dim}│${TTY_COLORS.reset} `;\n\tconst cl = `${TTY_COLORS.dim}└${TTY_COLORS.reset} `;\n\n\tconst lines = [\n\t\t`${l} ${TTY_COLORS.dim}Code:${TTY_COLORS.reset} ${TTY_COLORS.bright}${TTY_COLORS.fg.red}${code}${TTY_COLORS.reset}`,\n\t\t`${l} ${TTY_COLORS.dim}Message:${TTY_COLORS.reset} ${TTY_COLORS.fg.red}${message\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x, i) => `${i !== 0 ? `${l} ` : \"\"}${TTY_COLORS.fg.red}${x}`)\n\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`,\n\t\t`${l} ${TTY_COLORS.dim}Timestamp:${TTY_COLORS.reset} ${TTY_COLORS.fg.red}${new Intl.DateTimeFormat(\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tdateStyle: \"medium\",\n\t\t\t\ttimeStyle: \"medium\",\n\t\t\t},\n\t\t).format(new Date())}${TTY_COLORS.reset}`,\n\t\thint\n\t\t\t? `${l} ${TTY_COLORS.dim}Hint:${TTY_COLORS.reset}${TTY_COLORS.fg.red}${hint}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\tcause ? `${l} ${TTY_COLORS.dim}Cause:${TTY_COLORS.reset}` : \"\",\n\t\tcause\n\t\t\t? `${padding(cause.toString(), 2)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l}${TTY_COLORS.fg.red} ${x}`)\n\t\t\t\t\t.join(\"\\n\")}`\n\t\t\t: \"\",\n\t\tdata\n\t\t\t? `${l} ${TTY_COLORS.dim}Data:${TTY_COLORS.reset}\\n${padding(\n\t\t\t\t\tJSON.stringify(data, null, 2),\n\t\t\t\t\t2,\n\t\t\t\t)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l}${TTY_COLORS.fg.red} ${x}`)\n\t\t\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\t`${cl} ${TTY_COLORS.fg.black}${padding(stack, 4)\n\t\t\t.slice(3)\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x) => `${TTY_COLORS.fg.black}${x}`)\n\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`,\n\t]\n\t\t.filter((x) => x !== \"\")\n\t\t.map((x) => {\n\t\t\tif (typeof x === \"string\") {\n\t\t\t\treturn padding(x, 2);\n\t\t\t}\n\t\t\treturn x;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tconst result = boxen(\n\t\t[\n\t\t\t`${TTY_COLORS.bright}${TTY_COLORS.fg.red}Error:${TTY_COLORS.reset}`,\n\t\t\tlines,\n\t\t].join(\"\\n\"),\n\t\t{\n\t\t\tborderColor: \"red\",\n\t\t\tborderStyle: \"round\",\n\t\t\tpadding: { left: 1, right: 1, top: 0.9, bottom: 0.9 },\n\t\t\tdimBorder: true,\n\t\t\ttitle: `${TTY_COLORS.bright}${code}${TTY_COLORS.reset}${TTY_COLORS.dim}${TTY_COLORS.fg.red}`,\n\t\t\ttitleAlignment: \"center\",\n\t\t},\n\t);\n\n\tif (!options.silent) {\n\t\tconsole.error(result);\n\t}\n\n\tif (options.returnValue === \"errorT\") {\n\t\tif (error instanceof ErrorT) {\n\t\t\treturn error as any;\n\t\t}\n\t\treturn error.error as any;\n\t}\n\treturn result as any;\n};\n\nexport class ErrorT<\n\tCode extends LiteralString = LiteralString,\n\tMessage extends LiteralString = LiteralString,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n> {\n\tcode: Codeify<Code>;\n\tmessage: Message;\n\tname: string;\n\tstack: string;\n\trealStack: string;\n\tdata?: Data;\n\tcause?: Cause;\n\thint?: Hint;\n\tstackSkip?: Function;\n\tconstructor(error: {\n\t\tcode: Code;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tstackSkip?: Function;\n\t}) {\n\t\tthis.name = \"ErrorT\";\n\t\t//@ts-expect-error - last resort\n\t\tthis.code =\n\t\t\t((error.code as string)\n\t\t\t\t?.toUpperCase()\n\t\t\t\t.replaceAll(\" \", \"_\") as Codeify<Code>) || \"UNKNOWN_ERROR\";\n\t\tthis.data = error.data;\n\t\tthis.cause = error.cause;\n\t\t//@ts-expect-error - last resort\n\t\tthis.message = error.message || \"Unknown error\";\n\t\tthis.hint = error.hint;\n\t\tthis.stackSkip = error.stackSkip ?? ErrorT;\n\t\tconst realStack = capture(error.stackSkip ?? ErrorT);\n\t\tconst stack = realStack\n\t\t\t.replace(\"Error\", \"\")\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x) => x.trimStart())\n\t\t\t.join(\"\\n\")\n\t\t\t.trim();\n\t\tthis.stack = stack || \"Unknown stack\";\n\t\tthis.realStack = realStack;\n\t}\n\n\ttoString() {\n\t\treturn logError(this, {\n\t\t\treturnValue: \"string\",\n\t\t\tsilent: true,\n\t\t\tstackSkip: this.stackSkip,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["target: { stack?: string }","padding","value: T","error: E","error"],"sources":["../src/utility.ts","../src/index.ts"],"sourcesContent":["export const isPromise = <T = any>(value: unknown): value is Promise<T> => {\n\treturn (\n\t\t!!value &&\n\t\t(typeof value === \"object\" || typeof value === \"function\") &&\n\t\ttypeof (value as any).then === \"function\"\n\t);\n};\n\nexport function capture(stackSkip?: Function) {\n\tconst target: { stack?: string } = {};\n\tif (\"captureStackTrace\" in Error) {\n\t\t(Error as any).captureStackTrace(target, stackSkip ?? capture);\n\t} else {\n\t\ttarget.stack = new (Error as any)().stack;\n\t}\n\treturn target.stack!;\n}\n\nexport function padding(text: string, spaces: number): string {\n\tconst padding = \" \".repeat(spaces);\n\treturn text\n\t\t.split(\"\\n\")\n\t\t.map((line) => padding + line)\n\t\t.join(\"\\n\");\n}\n","import boxen from \"boxen\";\nimport type { Codeify, IResult, Result } from \"./types\";\nimport { capture, isPromise, padding } from \"./utility\";\nimport type { LiteralString } from \"./utility.types\";\n\nexport * from \"./types\";\n\nexport function ok<T, E extends ErrorT | never = never>(value: T): Ok<T, E>;\nexport function ok<T extends void = void, E extends ErrorT | never = never>(\n\tvalue: void,\n): Ok<void, E>;\nexport function ok<T, E extends ErrorT | never = never>(value: T): Ok<T, E> {\n\treturn new Ok(value);\n}\n\nexport function err<E extends ErrorT>(error: E): Err<never, E>;\nexport function err<\n\tT = never,\n\tCode extends LiteralString = LiteralString,\n\tMessage extends LiteralString = LiteralString,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(props: {\n\tcode: Code;\n\tmessage: Message;\n\thint?: Hint;\n\tdata?: Data;\n\tcause?: Cause;\n}): Err<T, ErrorT<Code, Message, Hint, Data, Cause>>;\nexport function err(props: any) {\n\tif (props instanceof ErrorT) {\n\t\treturn new Err(props);\n\t}\n\tconst error = new ErrorT({ ...props, stackSkip: err });\n\treturn new Err(error);\n}\n\nexport class Ok<T, E extends ErrorT | never = never> implements IResult<T, E> {\n\terror = null;\n\n\tconstructor(public readonly value: T) {}\n\n\tunwrap(): this extends Ok<T, never> ? T : never {\n\t\treturn this.value as any;\n\t}\n\n\tunwrapOr<D>(_defaultValue: D): this extends Ok<T, never> ? T : D {\n\t\treturn this.value as any;\n\t}\n\n\tisOk(): this is Ok<T, E> {\n\t\treturn true;\n\t}\n\n\tisErr(): this is Err<T, E> {\n\t\treturn false;\n\t}\n}\n\nexport class Err<T = never, E extends ErrorT = ErrorT>\n\timplements IResult<T, E>\n{\n\tvalue = null;\n\n\tconstructor(public readonly error: E) {}\n\n\tunwrap(): never {\n\t\tconst errorValue = logError(this.error, {\n\t\t\treturnValue: \"errorT\",\n\t\t\tstackSkip: Err,\n\t\t});\n\t\tconst e = new Error(errorValue.message);\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\tError.captureStackTrace(e, Err);\n\t\t}\n\t\tthrow e;\n\t}\n\n\t//@ts-expect-error - this works\n\tunwrapOr<D>(defaultValue: D): D {\n\t\tlogError(this.error, { stackSkip: err });\n\t\treturn defaultValue;\n\t}\n\n\tisOk(): this is Ok<never> {\n\t\treturn false;\n\t}\n\n\tisErr(): this is Err<T, E> {\n\t\treturn true;\n\t}\n}\n\n//----------------------------------------------------\n// Some of the try-catch code was a copy from\n// https://gist.github.com/t3dotgg/a486c4ae66d32bf17c09c73609dacc5b\n//----------------------------------------------------\ntype Operation<T> = Promise<T> | (() => T) | (() => Promise<T>);\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: Promise<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Promise<Result<T, ErrorT<Code, Message, Hint, Data, Cause>>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => never,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<never, ErrorT<Code, Message, Hint, Data, Cause>>;\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => void,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<void, ErrorT<Code, Message, Hint, Data, Cause>>;\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => Promise<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Promise<Result<T, ErrorT<Code, Message, Hint, Data, Cause>>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n>(\n\toperation: () => T,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<T, ErrorT<Code, Message, Hint, Data, Cause>>;\n\nexport function trycatch<\n\tT,\n\tCode extends LiteralString = \"UNKNOWN_ERROR\",\n\tMessage extends LiteralString = `Unknown error: ${string}`,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n\tE extends ErrorT = ErrorT<Code, Message, Hint, Data, Cause>,\n>(\n\toperation: Operation<T>,\n\tmapError?: (\n\t\terror: unknown,\n\t\tinferredMessage: string,\n\t) => {\n\t\tcode: Code;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t},\n): Result<T, E> | Promise<Result<T, E>> {\n\ttry {\n\t\tconst result = typeof operation === \"function\" ? operation() : operation;\n\n\t\tif (isPromise(result)) {\n\t\t\tconst resolved = Promise.resolve(result)\n\t\t\t\t.then((data) => ok(data))\n\t\t\t\t.catch((error) => err(error));\n\t\t\treturn resolved as Promise<Result<T, E>>;\n\t\t}\n\n\t\treturn ok(result);\n\t} catch (error) {\n\t\tconst defaultMapError = (error: unknown) => {\n\t\t\treturn new ErrorT({\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t\tmessage: `Unknown error: ${error}`,\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t};\n\t\tconst mappedError = (mapError\n\t\t\t? new ErrorT(\n\t\t\t\t\tmapError(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\ttypeof error === \"object\" &&\n\t\t\t\t\t\t\terror !== null &&\n\t\t\t\t\t\t\t\"message\" in error &&\n\t\t\t\t\t\t\ttypeof error.message === \"string\"\n\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t: String(error),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t: defaultMapError(error)) as unknown as E;\n\t\treturn err(mappedError);\n\t}\n}\n\n// ----------------------------------------------------\n\nexport const TTY_COLORS = {\n\treset: \"\\x1b[0m\",\n\tbright: \"\\x1b[1m\",\n\tdim: \"\\x1b[2m\",\n\tundim: \"\\x1b[22m\",\n\tunderscore: \"\\x1b[4m\",\n\tblink: \"\\x1b[5m\",\n\treverse: \"\\x1b[7m\",\n\thidden: \"\\x1b[8m\",\n\tfg: {\n\t\tblack: \"\\x1b[30m\",\n\t\tred: \"\\x1b[31m\",\n\t\tgreen: \"\\x1b[32m\",\n\t\tyellow: \"\\x1b[33m\",\n\t\tblue: \"\\x1b[34m\",\n\t\tmagenta: \"\\x1b[35m\",\n\t\tcyan: \"\\x1b[36m\",\n\t\twhite: \"\\x1b[37m\",\n\t},\n\tbg: {\n\t\tblack: \"\\x1b[40m\",\n\t\tred: \"\\x1b[41m\",\n\t\tgreen: \"\\x1b[42m\",\n\t\tyellow: \"\\x1b[43m\",\n\t\tblue: \"\\x1b[44m\",\n\t\tmagenta: \"\\x1b[45m\",\n\t\tcyan: \"\\x1b[46m\",\n\t\twhite: \"\\x1b[47m\",\n\t},\n} as const;\n\nexport const logError = <\n\tSilent extends boolean = false,\n\tReturnValue extends \"errorT\" | \"string\" = \"errorT\",\n>(\n\terror: ErrorT | Err<ErrorT>,\n\topts?: {\n\t\tsilent?: Silent;\n\t\treturnValue?: ReturnValue;\n\t\tstackSkip?: Function;\n\t},\n): Silent extends true\n\t? undefined\n\t: ReturnValue extends \"errorT\"\n\t\t? ErrorT\n\t\t: string => {\n\tconst options = {\n\t\treturnValue: \"string\",\n\t\tsilent: false,\n\t\tstackSkip: logError,\n\t\t...opts,\n\t};\n\tconst { code, message, stack, name, cause, hint, data } =\n\t\terror instanceof ErrorT ? error : error.error;\n\n\tconst l = `${TTY_COLORS.dim}│${TTY_COLORS.reset} `;\n\tconst cl = `${TTY_COLORS.dim}└${TTY_COLORS.reset} `;\n\n\tconst lines = [\n\t\t`${l} ${TTY_COLORS.dim}Code:${TTY_COLORS.reset} ${TTY_COLORS.bright}${TTY_COLORS.fg.red}${code}${TTY_COLORS.reset}`,\n\t\t`${l} ${TTY_COLORS.dim}Message:${TTY_COLORS.reset} ${TTY_COLORS.fg.red}${message\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x, i) => `${i !== 0 ? `${l} ` : \"\"}${TTY_COLORS.fg.red}${x}`)\n\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`,\n\t\t`${l} ${TTY_COLORS.dim}Timestamp:${TTY_COLORS.reset} ${TTY_COLORS.fg.red}${new Intl.DateTimeFormat(\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tdateStyle: \"medium\",\n\t\t\t\ttimeStyle: \"medium\",\n\t\t\t},\n\t\t).format(new Date())}${TTY_COLORS.reset}`,\n\t\thint\n\t\t\t? `${l} ${TTY_COLORS.dim}Hint:${TTY_COLORS.reset}${TTY_COLORS.fg.red}${hint}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\tcause ? `${l} ${TTY_COLORS.dim}Cause:${TTY_COLORS.reset}` : \"\",\n\t\tcause\n\t\t\t? `${padding(cause.toString(), 2)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l}${TTY_COLORS.fg.red} ${x}`)\n\t\t\t\t\t.join(\"\\n\")}`\n\t\t\t: \"\",\n\t\tdata\n\t\t\t? `${l} ${TTY_COLORS.dim}Data:${TTY_COLORS.reset}\\n${padding(\n\t\t\t\t\tJSON.stringify(data, null, 2),\n\t\t\t\t\t2,\n\t\t\t\t)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l}${TTY_COLORS.fg.red} ${x}`)\n\t\t\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\t`${cl} ${TTY_COLORS.fg.black}${padding(stack, 4)\n\t\t\t.slice(3)\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x) => `${TTY_COLORS.fg.black}${x}`)\n\t\t\t.join(\"\\n\")}${TTY_COLORS.reset}`,\n\t]\n\t\t.filter((x) => x !== \"\")\n\t\t.map((x) => {\n\t\t\tif (typeof x === \"string\") {\n\t\t\t\treturn padding(x, 2);\n\t\t\t}\n\t\t\treturn x;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tconst result = boxen(\n\t\t[\n\t\t\t`${TTY_COLORS.bright}${TTY_COLORS.fg.red}Error:${TTY_COLORS.reset}`,\n\t\t\tlines,\n\t\t].join(\"\\n\"),\n\t\t{\n\t\t\tborderColor: \"red\",\n\t\t\tborderStyle: \"round\",\n\t\t\tpadding: { left: 1, right: 1, top: 0.9, bottom: 0.9 },\n\t\t\tdimBorder: true,\n\t\t\ttitle: `${TTY_COLORS.bright}${code}${TTY_COLORS.reset}${TTY_COLORS.dim}${TTY_COLORS.fg.red}`,\n\t\t\ttitleAlignment: \"center\",\n\t\t},\n\t);\n\n\tif (!options.silent) {\n\t\tconsole.error(result);\n\t}\n\n\tif (options.returnValue === \"errorT\") {\n\t\tif (error instanceof ErrorT) {\n\t\t\treturn error as any;\n\t\t}\n\t\treturn error.error as any;\n\t}\n\treturn result as any;\n};\n\nexport class ErrorT<\n\tCode extends LiteralString = LiteralString,\n\tMessage extends LiteralString = LiteralString,\n\tHint extends string = string,\n\tData extends Record<string, unknown> = Record<string, unknown>,\n\tCause extends Error | ErrorT | unknown = unknown,\n> {\n\tcode: Codeify<Code>;\n\tmessage: Message;\n\tname: string;\n\tstack: string;\n\trealStack: string;\n\tdata?: Data;\n\tcause?: Cause;\n\thint?: Hint;\n\tstackSkip?: Function;\n\tconstructor(error: {\n\t\tcode: Code;\n\t\tdata?: Data;\n\t\tcause?: Cause;\n\t\tmessage: Message;\n\t\thint?: Hint;\n\t\tstackSkip?: Function;\n\t}) {\n\t\tthis.name = \"ErrorT\";\n\t\t//@ts-expect-error - last resort\n\t\tthis.code =\n\t\t\t((error.code as string)\n\t\t\t\t?.toUpperCase()\n\t\t\t\t.replaceAll(\" \", \"_\") as Codeify<Code>) || \"UNKNOWN_ERROR\";\n\t\tthis.data = error.data;\n\t\tthis.cause = error.cause;\n\t\t//@ts-expect-error - last resort\n\t\tthis.message = error.message || \"Unknown error\";\n\t\tthis.hint = error.hint;\n\t\tthis.stackSkip = error.stackSkip ?? ErrorT;\n\t\tconst realStack = capture(error.stackSkip ?? ErrorT);\n\t\tconst stack = realStack\n\t\t\t.replace(\"Error\", \"\")\n\t\t\t.split(\"\\n\")\n\t\t\t.map((x) => x.trimStart())\n\t\t\t.join(\"\\n\")\n\t\t\t.trim();\n\t\tthis.stack = stack || \"Unknown stack\";\n\t\tthis.realStack = realStack;\n\t}\n\n\ttoString() {\n\t\treturn logError(this, {\n\t\t\treturnValue: \"string\",\n\t\t\tsilent: true,\n\t\t\tstackSkip: this.stackSkip,\n\t\t});\n\t}\n}\n"],"mappings":";;;AAAA,MAAa,aAAsB,UAAwC;AAC1E,QACC,CAAC,CAAC,UACD,OAAO,UAAU,YAAY,OAAO,UAAU,eAC/C,OAAQ,MAAc,SAAS;;AAIjC,SAAgB,QAAQ,WAAsB;CAC7C,MAAMA,SAA6B,EAAE;AACrC,KAAI,uBAAuB,MAC1B,CAAC,MAAc,kBAAkB,QAAQ,aAAa,QAAQ;KAE9D,QAAO,yBAAQ,IAAK,OAAe,EAAC;AAErC,QAAO,OAAO;;AAGf,SAAgB,QAAQ,MAAc,QAAwB;CAC7D,MAAMC,YAAU,IAAI,OAAO,OAAO;AAClC,QAAO,KACL,MAAM,KAAK,CACX,KAAK,SAASA,YAAU,KAAK,CAC7B,KAAK,KAAK;;;;;ACZb,SAAgB,GAAwC,OAAoB;AAC3E,QAAO,IAAI,GAAG,MAAM;;AAkBrB,SAAgB,IAAI,OAAY;AAC/B,KAAI,iBAAiB,OACpB,QAAO,IAAI,IAAI,MAAM;AAGtB,QAAO,IAAI,IADG,IAAI,OAAO;EAAE,GAAG;EAAO,WAAW;EAAK,CAAC,CACjC;;AAGtB,IAAa,KAAb,MAA8E;CAC7E,QAAQ;CAER,YAAY,AAAgBC,OAAU;EAAV;;CAE5B,SAAgD;AAC/C,SAAO,KAAK;;CAGb,SAAY,eAAqD;AAChE,SAAO,KAAK;;CAGb,OAAyB;AACxB,SAAO;;CAGR,QAA2B;AAC1B,SAAO;;;AAIT,IAAa,MAAb,MAAa,IAEb;CACC,QAAQ;CAER,YAAY,AAAgBC,OAAU;EAAV;;CAE5B,SAAgB;EACf,MAAM,aAAa,SAAS,KAAK,OAAO;GACvC,aAAa;GACb,WAAW;GACX,CAAC;EACF,MAAM,IAAI,IAAI,MAAM,WAAW,QAAQ;AACvC,MAAI,uBAAuB,MAC1B,OAAM,kBAAkB,GAAG,IAAI;AAEhC,QAAM;;CAIP,SAAY,cAAoB;AAC/B,WAAS,KAAK,OAAO,EAAE,WAAW,KAAK,CAAC;AACxC,SAAO;;CAGR,OAA0B;AACzB,SAAO;;CAGR,QAA2B;AAC1B,SAAO;;;AAiHT,SAAgB,SASf,WACA,UAUuC;AACvC,KAAI;EACH,MAAM,SAAS,OAAO,cAAc,aAAa,WAAW,GAAG;AAE/D,MAAI,UAAU,OAAO,CAIpB,QAHiB,QAAQ,QAAQ,OAAO,CACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CACxB,OAAO,UAAU,IAAI,MAAM,CAAC;AAI/B,SAAO,GAAG,OAAO;UACT,OAAO;EACf,MAAM,mBAAmB,YAAmB;AAC3C,UAAO,IAAI,OAAO;IACjB,MAAM;IACN,SAAS,kBAAkBC;IAC3B,OAAOA;IACP,CAAC;;AAeH,SAAO,IAbc,WAClB,IAAI,OACJ,SACC,OACA,OAAO,UAAU,YAChB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,WACvB,MAAM,UACN,OAAO,MAAM,CAChB,CACD,GACA,gBAAgB,MAAM,CACF;;;AAMzB,MAAa,aAAa;CACzB,OAAO;CACP,QAAQ;CACR,KAAK;CACL,OAAO;CACP,YAAY;CACZ,OAAO;CACP,SAAS;CACT,QAAQ;CACR,IAAI;EACH,OAAO;EACP,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,SAAS;EACT,MAAM;EACN,OAAO;EACP;CACD,IAAI;EACH,OAAO;EACP,KAAK;EACL,OAAO;EACP,QAAQ;EACR,MAAM;EACN,SAAS;EACT,MAAM;EACN,OAAO;EACP;CACD;AAED,MAAa,YAIZ,OACA,SASa;CACb,MAAM,UAAU;EACf,aAAa;EACb,QAAQ;EACR,WAAW;EACX,GAAG;EACH;CACD,MAAM,EAAE,MAAM,SAAS,OAAO,MAAM,OAAO,MAAM,SAChD,iBAAiB,SAAS,QAAQ,MAAM;CAEzC,MAAM,IAAI,GAAG,WAAW,IAAI,GAAG,WAAW,MAAM;CAChD,MAAM,KAAK,GAAG,WAAW,IAAI,GAAG,WAAW,MAAM;CAEjD,MAAM,QAAQ;EACb,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,WAAW,MAAM,GAAG,WAAW,SAAS,WAAW,GAAG,MAAM,OAAO,WAAW;EAC5G,GAAG,EAAE,GAAG,WAAW,IAAI,UAAU,WAAW,MAAM,GAAG,WAAW,GAAG,MAAM,QACvE,MAAM,KAAK,CACX,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,GAAG,EAAE,MAAM,KAAK,WAAW,GAAG,MAAM,IAAI,CACnE,KAAK,KAAK,GAAG,WAAW;EAC1B,GAAG,EAAE,GAAG,WAAW,IAAI,YAAY,WAAW,MAAM,GAAG,WAAW,GAAG,MAAM,IAAI,KAAK,eACnF,QACA;GACC,WAAW;GACX,WAAW;GACX,CACD,CAAC,uBAAO,IAAI,MAAM,CAAC,GAAG,WAAW;EAClC,OACG,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,WAAW,QAAQ,WAAW,GAAG,MAAM,OAAO,WAAW,UACvF;EACH,QAAQ,GAAG,EAAE,GAAG,WAAW,IAAI,QAAQ,WAAW,UAAU;EAC5D,QACG,GAAG,QAAQ,MAAM,UAAU,EAAE,EAAE,CAC9B,MAAM,KAAK,CACX,KAAK,MAAM,GAAG,IAAI,WAAW,GAAG,IAAI,GAAG,IAAI,CAC3C,KAAK,KAAK,KACX;EACH,OACG,GAAG,EAAE,GAAG,WAAW,IAAI,OAAO,WAAW,MAAM,IAAI,QACnD,KAAK,UAAU,MAAM,MAAM,EAAE,EAC7B,EACA,CACC,MAAM,KAAK,CACX,KAAK,MAAM,GAAG,IAAI,WAAW,GAAG,IAAI,GAAG,IAAI,CAC3C,KAAK,KAAK,GAAG,WAAW,UACzB;EACH,GAAG,GAAG,GAAG,WAAW,GAAG,QAAQ,QAAQ,OAAO,EAAE,CAC9C,MAAM,EAAE,CACR,MAAM,KAAK,CACX,KAAK,MAAM,GAAG,WAAW,GAAG,QAAQ,IAAI,CACxC,KAAK,KAAK,GAAG,WAAW;EAC1B,CACC,QAAQ,MAAM,MAAM,GAAG,CACvB,KAAK,MAAM;AACX,MAAI,OAAO,MAAM,SAChB,QAAO,QAAQ,GAAG,EAAE;AAErB,SAAO;GACN,CACD,KAAK,KAAK;CAEZ,MAAM,SAAS,MACd,CACC,GAAG,WAAW,SAAS,WAAW,GAAG,IAAI,QAAQ,WAAW,SAC5D,MACA,CAAC,KAAK,KAAK,EACZ;EACC,aAAa;EACb,aAAa;EACb,SAAS;GAAE,MAAM;GAAG,OAAO;GAAG,KAAK;GAAK,QAAQ;GAAK;EACrD,WAAW;EACX,OAAO,GAAG,WAAW,SAAS,OAAO,WAAW,QAAQ,WAAW,MAAM,WAAW,GAAG;EACvF,gBAAgB;EAChB,CACD;AAED,KAAI,CAAC,QAAQ,OACZ,SAAQ,MAAM,OAAO;AAGtB,KAAI,QAAQ,gBAAgB,UAAU;AACrC,MAAI,iBAAiB,OACpB,QAAO;AAER,SAAO,MAAM;;AAEd,QAAO;;AAGR,IAAa,SAAb,MAAa,OAMX;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,YAAY,OAOT;AACF,OAAK,OAAO;AAEZ,OAAK,OACF,MAAM,MACL,aAAa,CACd,WAAW,KAAK,IAAI,IAAsB;AAC7C,OAAK,OAAO,MAAM;AAClB,OAAK,QAAQ,MAAM;AAEnB,OAAK,UAAU,MAAM,WAAW;AAChC,OAAK,OAAO,MAAM;AAClB,OAAK,YAAY,MAAM,aAAa;EACpC,MAAM,YAAY,QAAQ,MAAM,aAAa,OAAO;AAOpD,OAAK,QANS,UACZ,QAAQ,SAAS,GAAG,CACpB,MAAM,KAAK,CACX,KAAK,MAAM,EAAE,WAAW,CAAC,CACzB,KAAK,KAAK,CACV,MAAM,IACc;AACtB,OAAK,YAAY;;CAGlB,WAAW;AACV,SAAO,SAAS,MAAM;GACrB,aAAa;GACb,QAAQ;GACR,WAAW,KAAK;GAChB,CAAC"}
|