need-result 1.2.5 → 1.2.6

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/dist/index.d.mts CHANGED
@@ -1,13 +1,13 @@
1
1
  //#region src/types.d.ts
2
- type Ok<T> = [T, null];
2
+ type Ok<T$1> = [T$1, null];
3
3
  type Err<E extends ErrorT> = [null, E];
4
- type Result<T, E extends ErrorT = ErrorT> = Ok<T> | Err<E>;
4
+ type Result<T$1, E extends ErrorT = ErrorT> = Ok<T$1> | Err<E>;
5
5
  //#endregion
6
6
  //#region src/utility.types.d.ts
7
7
  type LiteralString = "" | (string & Record<never, never>);
8
8
  //#endregion
9
9
  //#region src/index.d.ts
10
- declare const ok: <T>(data: T) => Ok<T>;
10
+ declare const ok: <T$1>(data: T$1) => Ok<T$1>;
11
11
  declare function err<E extends ErrorT>(error: E): Err<E>;
12
12
  declare function err(error: Error & {
13
13
  code?: never;
@@ -20,10 +20,10 @@ declare function err<Code extends LiteralString = LiteralString, Message extends
20
20
  cause?: Cause;
21
21
  }): Err<ErrorT<Uppercase<Code>, Message, Hint, Data, Cause>>;
22
22
  declare function err(error: unknown): Err<ErrorT<"UNKNOWN_ERROR", string, string, Record<string, unknown>, unknown>>;
23
- declare function trycatch<T>(operation: Promise<T>): Promise<Result<T, ErrorT>>;
24
- declare function trycatch<T>(operation: () => never): Result<never, ErrorT>;
25
- declare function trycatch<T>(operation: () => Promise<T>): Promise<Result<T, ErrorT>>;
26
- declare function trycatch<T>(operation: () => T): Result<T, ErrorT>;
23
+ declare function trycatch<T$1>(operation: Promise<T$1>): Promise<Result<T$1, ErrorT>>;
24
+ declare function trycatch<T$1>(operation: () => never): Result<never, ErrorT>;
25
+ declare function trycatch<T$1>(operation: () => Promise<T$1>): Promise<Result<T$1, ErrorT>>;
26
+ declare function trycatch<T$1>(operation: () => T$1): Result<T$1, ErrorT>;
27
27
  declare const TTY_COLORS: {
28
28
  readonly reset: "\u001B[0m";
29
29
  readonly bright: "\u001B[1m";
@@ -65,7 +65,7 @@ type ThrowOnErrorOptions = {
65
65
  declare function throwOnError<E extends ErrorT | Err<ErrorT>>(error: E, options?: ThrowOnErrorOptions): never;
66
66
  declare function throwOnError<E extends undefined | null>(error: E, options?: ThrowOnErrorOptions): void;
67
67
  declare function throwOnError<E extends undefined | null | ErrorT | Err<ErrorT>>(error: E, options?: ThrowOnErrorOptions): E extends undefined | null ? void : never;
68
- declare function unwrap<R extends Result<any, any>>(result: R): R extends Ok<infer T> ? T : never;
68
+ declare function unwrap<R extends Result<any, any>>(result: R): R extends Ok<infer T> ? NonNullable<T> : never;
69
69
  declare class ErrorT<Code extends LiteralString = LiteralString, Message extends LiteralString = LiteralString, Hint extends string = string, Data extends Record<string, unknown> = Record<string, unknown>, Cause extends Error | ErrorT | unknown = unknown> {
70
70
  code: Uppercase<Code>;
71
71
  data?: Data;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/utility.types.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/utility.types.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["target: { stack?: string }","padding"],"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 type { Err, Ok, Result } from \"./types\";\nimport { capture, isPromise, padding } from \"./utility\";\nimport type { LiteralString } from \"./utility.types\";\n\nexport * from \"./types\";\n\nexport const ok = <T>(data: T): Ok<T> => [data, null];\n\nexport function err<E extends ErrorT>(error: E): Err<E>;\nexport function err(\n\terror: Error & { code?: never },\n): Err<ErrorT<\"UNKNOWN_ERROR\", string, string, Record<string, unknown>, Error>>;\nexport function err<\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>(error: {\n\tcode: Code;\n\tmessage: Message;\n\thint?: Hint;\n\tdata?: Data;\n\tcause?: Cause;\n}): Err<ErrorT<Uppercase<Code>, Message, Hint, Data, Cause>>;\nexport function err(\n\terror: unknown,\n): Err<\n\tErrorT<\"UNKNOWN_ERROR\", string, string, Record<string, unknown>, unknown>\n>;\nexport function err(\n\terror:\n\t\t| Error\n\t\t| unknown\n\t\t| {\n\t\t\t\tcode: LiteralString;\n\t\t\t\tmessage: LiteralString;\n\t\t\t\thint?: string;\n\t\t\t\tdata?: Record<string, unknown>;\n\t\t\t\tcause?: Error | ErrorT | unknown;\n\t\t }\n\t\t| ErrorT,\n): Err<ErrorT> {\n\tif (error instanceof ErrorT) {\n\t\treturn [null, error] as Err<ErrorT>;\n\t}\n\n\tif (error instanceof Error) {\n\t\treturn [\n\t\t\tnull,\n\t\t\tnew ErrorT({\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t\tmessage: \"message\" in error ? error.message : String(error),\n\t\t\t\tcause: error ?? undefined,\n\t\t\t\tstackSkip: err,\n\t\t\t}),\n\t\t];\n\t}\n\n\tif (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"code\" in error &&\n\t\t\"message\" in error\n\t) {\n\t\tconst errorObj = error as {\n\t\t\tcode: LiteralString;\n\t\t\tmessage: LiteralString;\n\t\t\thint?: string;\n\t\t\tdata?: Record<string, unknown>;\n\t\t\tcause?: Error | ErrorT | unknown;\n\t\t};\n\t\treturn [\n\t\t\tnull,\n\t\t\tnew ErrorT({\n\t\t\t\tcode: errorObj.code,\n\t\t\t\tmessage: errorObj.message,\n\t\t\t\thint: errorObj.hint,\n\t\t\t\tdata: errorObj.data,\n\t\t\t\tcause: errorObj.cause,\n\t\t\t\tstackSkip: err,\n\t\t\t}),\n\t\t];\n\t}\n\n\tconst unknownError = error as unknown;\n\n\tconst e = new ErrorT({\n\t\tcode: \"UNKNOWN_ERROR\",\n\t\tmessage:\n\t\t\ttypeof unknownError === \"object\" &&\n\t\t\tunknownError !== null &&\n\t\t\t\"message\" in unknownError &&\n\t\t\ttypeof unknownError.message === \"string\"\n\t\t\t\t? unknownError.message\n\t\t\t\t: String(error) || \"Unknown error\",\n\t\tcause: error ?? undefined,\n\t});\n\treturn [null, e];\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<T>(operation: Promise<T>): Promise<Result<T, ErrorT>>;\n\nexport function trycatch<T>(operation: () => never): Result<never, ErrorT>;\n\nexport function trycatch<T>(\n\toperation: () => Promise<T>,\n): Promise<Result<T, ErrorT>>;\n\nexport function trycatch<T>(operation: () => T): Result<T, ErrorT>;\n\nexport function trycatch<T>(\n\toperation: Operation<T>,\n): Result<T, ErrorT> | Promise<Result<T, ErrorT>> {\n\ttry {\n\t\tconst result = typeof operation === \"function\" ? operation() : operation;\n\n\t\tif (isPromise(result)) {\n\t\t\treturn Promise.resolve(result)\n\t\t\t\t.then((data) => ok(data))\n\t\t\t\t.catch((error) => err(error));\n\t\t}\n\n\t\treturn ok(result);\n\t} catch (error) {\n\t\treturn err(error);\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\" = \"string\",\n>(\n\terror: ErrorT | Err<ErrorT>,\n\toptions: {\n\t\tsilent?: Silent;\n\t\treturnValue?: ReturnValue;\n\t} = { returnValue: \"string\" as ReturnValue, silent: false as Silent },\n): Silent extends true\n\t? undefined\n\t: ReturnValue extends \"errorT\"\n\t\t? ErrorT\n\t\t: string => {\n\tconst { code, message, stack, name, cause, hint, data } = Array.isArray(error)\n\t\t? error[1]\n\t\t: 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`\\n${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}${TTY_COLORS.reset}`,\n\t\thint\n\t\t\t? `${l} ${TTY_COLORS.dim}Hint:${TTY_COLORS.reset} ${hint}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\tcause ? `${l} ${TTY_COLORS.dim}Cause:${TTY_COLORS.reset} ${cause}` : \"\",\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\t4,\n\t\t\t\t)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l} ${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, 5).slice(3)}${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 = [\n\t\t`${TTY_COLORS.bright}${TTY_COLORS.fg.red}Error:${TTY_COLORS.reset}`,\n\t\tlines,\n\t\tTTY_COLORS.reset,\n\t];\n\n\tif (!options.silent) {\n\t\tconsole.error(...result);\n\t\tconst e = new Error(code, { cause }) as Error & { stack?: string };\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\t(Error as any).captureStackTrace(e, logError);\n\t\t}\n\t\tconsole.error(e);\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[1] as any;\n\t}\n\treturn result.join(\"\\n\") as any;\n};\n\ntype ThrowOnErrorOptions = {\n\tsilent?: boolean;\n\tstackSkip?: Function;\n};\n\nexport function throwOnError<E extends ErrorT | Err<ErrorT>>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): never;\nexport function throwOnError<E extends undefined | null>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): void;\nexport function throwOnError<E extends undefined | null | ErrorT | Err<ErrorT>>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): E extends undefined | null ? void : never;\nexport function throwOnError<E extends ErrorT | Err<ErrorT> | undefined | null>(\n\terror: E,\n\toptions: {\n\t\tsilent?: boolean;\n\t\tstackSkip?: Function;\n\t} = { silent: false, stackSkip: throwOnError },\n) {\n\tif (error) {\n\t\tconst errorValue = logError(error, {\n\t\t\treturnValue: \"errorT\",\n\t\t});\n\t\tconst e = new Error(errorValue.message, {\n\t\t\tcause: errorValue.cause,\n\t\t}) as Error & { stack?: string };\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\t(Error as any).captureStackTrace(e, options.stackSkip); // omits makeError frame\n\t\t}\n\t\tthrow e;\n\t}\n}\n\nexport function unwrap<R extends Result<any, any>>(\n\tresult: R,\n): R extends Ok<infer T> ? T : never;\nexport function unwrap<R extends Result<any, any>>(result: R) {\n\ttype Success = R extends Ok<infer T> ? T : never;\n\tthrowOnError(result[1], { stackSkip: unwrap });\n\treturn result[0] as Success;\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: Uppercase<Code>;\n\tdata?: Data;\n\tcause?: Cause;\n\thint?: Hint;\n\tmessage: Message;\n\tname: string;\n\tstack: string;\n\trealStack: string;\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)?.toUpperCase() as Uppercase<Code>) ||\n\t\t\t\"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\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, { returnValue: \"string\", silent: true });\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["target: { stack?: string }","padding"],"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 type { Err, Ok, Result } from \"./types\";\nimport { capture, isPromise, padding } from \"./utility\";\nimport type { LiteralString } from \"./utility.types\";\n\nexport * from \"./types\";\n\nexport const ok = <T>(data: T): Ok<T> => [data, null];\n\nexport function err<E extends ErrorT>(error: E): Err<E>;\nexport function err(\n\terror: Error & { code?: never },\n): Err<ErrorT<\"UNKNOWN_ERROR\", string, string, Record<string, unknown>, Error>>;\nexport function err<\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>(error: {\n\tcode: Code;\n\tmessage: Message;\n\thint?: Hint;\n\tdata?: Data;\n\tcause?: Cause;\n}): Err<ErrorT<Uppercase<Code>, Message, Hint, Data, Cause>>;\nexport function err(\n\terror: unknown,\n): Err<\n\tErrorT<\"UNKNOWN_ERROR\", string, string, Record<string, unknown>, unknown>\n>;\nexport function err(\n\terror:\n\t\t| Error\n\t\t| unknown\n\t\t| {\n\t\t\t\tcode: LiteralString;\n\t\t\t\tmessage: LiteralString;\n\t\t\t\thint?: string;\n\t\t\t\tdata?: Record<string, unknown>;\n\t\t\t\tcause?: Error | ErrorT | unknown;\n\t\t }\n\t\t| ErrorT,\n): Err<ErrorT> {\n\tif (error instanceof ErrorT) {\n\t\treturn [null, error] as Err<ErrorT>;\n\t}\n\n\tif (error instanceof Error) {\n\t\treturn [\n\t\t\tnull,\n\t\t\tnew ErrorT({\n\t\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\t\tmessage: \"message\" in error ? error.message : String(error),\n\t\t\t\tcause: error ?? undefined,\n\t\t\t\tstackSkip: err,\n\t\t\t}),\n\t\t];\n\t}\n\n\tif (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"code\" in error &&\n\t\t\"message\" in error\n\t) {\n\t\tconst errorObj = error as {\n\t\t\tcode: LiteralString;\n\t\t\tmessage: LiteralString;\n\t\t\thint?: string;\n\t\t\tdata?: Record<string, unknown>;\n\t\t\tcause?: Error | ErrorT | unknown;\n\t\t};\n\t\treturn [\n\t\t\tnull,\n\t\t\tnew ErrorT({\n\t\t\t\tcode: errorObj.code,\n\t\t\t\tmessage: errorObj.message,\n\t\t\t\thint: errorObj.hint,\n\t\t\t\tdata: errorObj.data,\n\t\t\t\tcause: errorObj.cause,\n\t\t\t\tstackSkip: err,\n\t\t\t}),\n\t\t];\n\t}\n\n\tconst unknownError = error as unknown;\n\n\tconst e = new ErrorT({\n\t\tcode: \"UNKNOWN_ERROR\",\n\t\tmessage:\n\t\t\ttypeof unknownError === \"object\" &&\n\t\t\tunknownError !== null &&\n\t\t\t\"message\" in unknownError &&\n\t\t\ttypeof unknownError.message === \"string\"\n\t\t\t\t? unknownError.message\n\t\t\t\t: String(error) || \"Unknown error\",\n\t\tcause: error ?? undefined,\n\t});\n\treturn [null, e];\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<T>(operation: Promise<T>): Promise<Result<T, ErrorT>>;\n\nexport function trycatch<T>(operation: () => never): Result<never, ErrorT>;\n\nexport function trycatch<T>(\n\toperation: () => Promise<T>,\n): Promise<Result<T, ErrorT>>;\n\nexport function trycatch<T>(operation: () => T): Result<T, ErrorT>;\n\nexport function trycatch<T>(\n\toperation: Operation<T>,\n): Result<T, ErrorT> | Promise<Result<T, ErrorT>> {\n\ttry {\n\t\tconst result = typeof operation === \"function\" ? operation() : operation;\n\n\t\tif (isPromise(result)) {\n\t\t\treturn Promise.resolve(result)\n\t\t\t\t.then((data) => ok(data))\n\t\t\t\t.catch((error) => err(error));\n\t\t}\n\n\t\treturn ok(result);\n\t} catch (error) {\n\t\treturn err(error);\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\" = \"string\",\n>(\n\terror: ErrorT | Err<ErrorT>,\n\toptions: {\n\t\tsilent?: Silent;\n\t\treturnValue?: ReturnValue;\n\t} = { returnValue: \"string\" as ReturnValue, silent: false as Silent },\n): Silent extends true\n\t? undefined\n\t: ReturnValue extends \"errorT\"\n\t\t? ErrorT\n\t\t: string => {\n\tconst { code, message, stack, name, cause, hint, data } = Array.isArray(error)\n\t\t? error[1]\n\t\t: 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`\\n${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}${TTY_COLORS.reset}`,\n\t\thint\n\t\t\t? `${l} ${TTY_COLORS.dim}Hint:${TTY_COLORS.reset} ${hint}${TTY_COLORS.reset}`\n\t\t\t: \"\",\n\t\tcause ? `${l} ${TTY_COLORS.dim}Cause:${TTY_COLORS.reset} ${cause}` : \"\",\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\t4,\n\t\t\t\t)\n\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t.map((x) => `${l} ${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, 5).slice(3)}${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 = [\n\t\t`${TTY_COLORS.bright}${TTY_COLORS.fg.red}Error:${TTY_COLORS.reset}`,\n\t\tlines,\n\t\tTTY_COLORS.reset,\n\t];\n\n\tif (!options.silent) {\n\t\tconsole.error(...result);\n\t\tconst e = new Error(code, { cause }) as Error & { stack?: string };\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\t(Error as any).captureStackTrace(e, logError);\n\t\t}\n\t\tconsole.error(e);\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[1] as any;\n\t}\n\treturn result.join(\"\\n\") as any;\n};\n\ntype ThrowOnErrorOptions = {\n\tsilent?: boolean;\n\tstackSkip?: Function;\n};\n\nexport function throwOnError<E extends ErrorT | Err<ErrorT>>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): never;\nexport function throwOnError<E extends undefined | null>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): void;\nexport function throwOnError<E extends undefined | null | ErrorT | Err<ErrorT>>(\n\terror: E,\n\toptions?: ThrowOnErrorOptions,\n): E extends undefined | null ? void : never;\nexport function throwOnError<E extends ErrorT | Err<ErrorT> | undefined | null>(\n\terror: E,\n\toptions: {\n\t\tsilent?: boolean;\n\t\tstackSkip?: Function;\n\t} = { silent: false, stackSkip: throwOnError },\n) {\n\tif (error) {\n\t\tconst errorValue = logError(error, {\n\t\t\treturnValue: \"errorT\",\n\t\t});\n\t\tconst e = new Error(errorValue.message, {\n\t\t\tcause: errorValue.cause,\n\t\t}) as Error & { stack?: string };\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\t(Error as any).captureStackTrace(e, options.stackSkip); // omits makeError frame\n\t\t}\n\t\tthrow e;\n\t}\n}\n\nexport function unwrap<R extends Result<any, any>>(\n\tresult: R,\n): R extends Ok<infer T> ? NonNullable<T> : never;\nexport function unwrap<R extends Result<any, any>>(result: R) {\n\ttype Success = R extends Ok<infer T> ? NonNullable<T> : never;\n\tthrowOnError(result[1], { stackSkip: unwrap });\n\treturn result[0] as Success;\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: Uppercase<Code>;\n\tdata?: Data;\n\tcause?: Cause;\n\thint?: Hint;\n\tmessage: Message;\n\tname: string;\n\tstack: string;\n\trealStack: string;\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)?.toUpperCase() as Uppercase<Code>) ||\n\t\t\t\"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\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, { returnValue: \"string\", silent: true });\n\t}\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "need-result",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "type": "module",
5
5
  "packageManager": "bun@1.3.5",
6
6
  "license": "MIT",