need-result 1.3.0 → 1.3.2

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,3 +1,6 @@
1
+ //#region src/utility.types.d.ts
2
+ type LiteralString = "" | (string & Record<never, never>);
3
+ //#endregion
1
4
  //#region src/types.d.ts
2
5
  interface IResult<T, E extends ErrorT | never = ErrorT> {
3
6
  value: T | null;
@@ -23,9 +26,8 @@ interface IResult<T, E extends ErrorT | never = ErrorT> {
23
26
  unwrapOr<D>(defaultValue: D): this extends Ok<T, never> ? T : D;
24
27
  }
25
28
  type Result<T, E extends ErrorT | never = ErrorT> = Ok<T, E> | Err<T, E>;
26
- //#endregion
27
- //#region src/utility.types.d.ts
28
- type LiteralString = "" | (string & Record<never, never>);
29
+ type Codeify<T extends LiteralString> = Uppercase<ReplaceSpacesWithUnderscores<T>>;
30
+ type ReplaceSpacesWithUnderscores<S extends string> = S extends `${infer First} ${infer Rest}` ? `${First}_${ReplaceSpacesWithUnderscores<Rest>}` : S;
29
31
  //#endregion
30
32
  //#region src/index.d.ts
31
33
  declare function ok<T, E extends ErrorT | never = never>(value: T): Ok<T, E>;
@@ -120,7 +122,7 @@ declare const logError: <Silent extends boolean = false, ReturnValue extends "er
120
122
  stackSkip?: Function;
121
123
  }) => Silent extends true ? undefined : ReturnValue extends "errorT" ? ErrorT : string;
122
124
  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> {
123
- code: Uppercase<Code>;
125
+ code: Codeify<Code>;
124
126
  message: Message;
125
127
  name: string;
126
128
  stack: string;
@@ -140,5 +142,5 @@ declare class ErrorT<Code extends LiteralString = LiteralString, Message extends
140
142
  toString(): undefined;
141
143
  }
142
144
  //#endregion
143
- export { Err, ErrorT, IResult, Ok, Result, TTY_COLORS, err, logError, ok, trycatch };
145
+ export { Codeify, Err, ErrorT, IResult, Ok, Result, TTY_COLORS, err, logError, ok, trycatch };
144
146
  //# sourceMappingURL=index.d.mts.map
@@ -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/utility.types.ts","../src/types.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  const e=e=>!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`;function t(e){let n={};return`captureStackTrace`in Error?Error.captureStackTrace(n,e??t):n.stack=Error().stack,n.stack}function n(e,t){let n=` `.repeat(t);return e.split(`
2
2
  `).map(e=>n+e).join(`
3
- `)}function r(e){return new a(e)}function i(e){return e instanceof u?new o(e):new o(new u({...e,stackSkip:i}))}var a=class{error=null;constructor(e){this.value=e}unwrap(){return this.value}unwrapOr(e){return this.value}isOk(){return!0}isErr(){return!1}},o=class e{value=null;constructor(e){this.error=e}unwrap(){let t=l(this.error,{returnValue:`errorT`,stackSkip:e}),n=Error(t.message,{cause:t.cause});throw`captureStackTrace`in Error&&Error.captureStackTrace(n,e),n}unwrapOr(e){return l(this.error,{stackSkip:i}),e}isOk(){return!1}isErr(){return!0}};function s(t,n){try{let n=typeof t==`function`?t():t;return e(n)?Promise.resolve(n).then(e=>r(e)).catch(e=>i(e)):r(n)}catch(e){return i(n?new u(n(e)):(e=>new u({code:`UNKNOWN_ERROR`,message:`Unknown error: ${e}`,cause:e}))(e))}}const c={reset:`\x1B[0m`,bright:`\x1B[1m`,dim:`\x1B[2m`,undim:`\x1B[22m`,underscore:`\x1B[4m`,blink:`\x1B[5m`,reverse:`\x1B[7m`,hidden:`\x1B[8m`,fg:{black:`\x1B[30m`,red:`\x1B[31m`,green:`\x1B[32m`,yellow:`\x1B[33m`,blue:`\x1B[34m`,magenta:`\x1B[35m`,cyan:`\x1B[36m`,white:`\x1B[37m`},bg:{black:`\x1B[40m`,red:`\x1B[41m`,green:`\x1B[42m`,yellow:`\x1B[43m`,blue:`\x1B[44m`,magenta:`\x1B[45m`,cyan:`\x1B[46m`,white:`\x1B[47m`}},l=(e,t)=>{let r={returnValue:`string`,silent:!1,stackSkip:l,...t},{code:i,message:a,stack:o,name:s,cause:d,hint:f,data:p}=e instanceof u?e:e.error,m=`${c.dim}│${c.reset} `,h=`${c.dim}└${c.reset} `,g=[`\n${m} ${c.dim}Code:${c.reset} ${c.bright}${c.fg.red}${i}${c.reset}`,`${m} ${c.dim}Message:${c.reset} ${c.fg.red}${a}${c.reset}`,f?`${m} ${c.dim}Hint:${c.reset} ${f}${c.reset}`:``,d?`${m} ${c.dim}Cause:${c.reset} ${d}`:``,p?`${m} ${c.dim}Data:${c.reset}\n${n(JSON.stringify(p,null,2),4).split(`
3
+ `)}function r(e){return new a(e)}function i(e){return e instanceof u?new o(e):new o(new u({...e,stackSkip:i}))}var a=class{error=null;constructor(e){this.value=e}unwrap(){return this.value}unwrapOr(e){return this.value}isOk(){return!0}isErr(){return!1}},o=class e{value=null;constructor(e){this.error=e}unwrap(){let t=l(this.error,{returnValue:`errorT`,stackSkip:e}),n=Error(t.message,t.cause?{cause:t.cause}:void 0);throw`captureStackTrace`in Error&&Error.captureStackTrace(n,e),n}unwrapOr(e){return l(this.error,{stackSkip:i}),e}isOk(){return!1}isErr(){return!0}};function s(t,n){try{let n=typeof t==`function`?t():t;return e(n)?Promise.resolve(n).then(e=>r(e)).catch(e=>i(e)):r(n)}catch(e){return i(n?new u(n(e)):(e=>new u({code:`UNKNOWN_ERROR`,message:`Unknown error: ${e}`,cause:e}))(e))}}const c={reset:`\x1B[0m`,bright:`\x1B[1m`,dim:`\x1B[2m`,undim:`\x1B[22m`,underscore:`\x1B[4m`,blink:`\x1B[5m`,reverse:`\x1B[7m`,hidden:`\x1B[8m`,fg:{black:`\x1B[30m`,red:`\x1B[31m`,green:`\x1B[32m`,yellow:`\x1B[33m`,blue:`\x1B[34m`,magenta:`\x1B[35m`,cyan:`\x1B[36m`,white:`\x1B[37m`},bg:{black:`\x1B[40m`,red:`\x1B[41m`,green:`\x1B[42m`,yellow:`\x1B[43m`,blue:`\x1B[44m`,magenta:`\x1B[45m`,cyan:`\x1B[46m`,white:`\x1B[47m`}},l=(e,t)=>{let r={returnValue:`string`,silent:!1,stackSkip:l,...t},{code:i,message:a,stack:o,name:s,cause:d,hint:f,data:p}=e instanceof u?e:e.error,m=`${c.dim}│${c.reset} `,h=`${c.dim}└${c.reset} `,g=[`\n${m} ${c.dim}Code:${c.reset} ${c.bright}${c.fg.red}${i}${c.reset}`,`${m} ${c.dim}Message:${c.reset} ${c.fg.red}${a}${c.reset}`,f?`${m} ${c.dim}Hint:${c.reset} ${f}${c.reset}`:``,d?`${m} ${c.dim}Cause:${c.reset} ${d}`:``,p?`${m} ${c.dim}Data:${c.reset}\n${n(JSON.stringify(p,null,2),4).split(`
4
4
  `).map(e=>`${m} ${e}`).join(`
5
5
  `)}${c.reset}`:``,`${h} ${c.fg.black}${n(o,5).slice(3)}${c.reset}`].filter(e=>e!==``).map(e=>typeof e==`string`?n(e,2):e).join(`
6
- `),_=[`${c.bright}${c.fg.red}Error:${c.reset}`,g,c.reset];if(!r.silent){console.error(..._);let e=Error(i,{cause:d});`captureStackTrace`in Error&&Error.captureStackTrace(e,r.stackSkip),console.error(e)}return r.returnValue===`errorT`?e instanceof u?e:e.error:_.join(`
7
- `)};var u=class e{code;message;name;stack;realStack;data;cause;hint;stackSkip;constructor(n){this.name=`ErrorT`,this.code=n.code?.toUpperCase()||`UNKNOWN_ERROR`,this.data=n.data,this.cause=n.cause,this.message=n.message||`Unknown error`,this.hint=n.hint,this.stackSkip=n.stackSkip??e;let r=t(n.stackSkip??e);this.stack=r.replace(`Error`,``).split(`
6
+ `),_=[`${c.bright}${c.fg.red}Error:${c.reset}`,g,c.reset];if(!r.silent){console.error(..._);let e=Error(i,d?{cause:d}:void 0);`captureStackTrace`in Error&&Error.captureStackTrace(e,r.stackSkip),console.error(e)}return r.returnValue===`errorT`?e instanceof u?e:e.error:_.join(`
7
+ `)};var u=class e{code;message;name;stack;realStack;data;cause;hint;stackSkip;constructor(n){this.name=`ErrorT`,this.code=n.code?.toUpperCase().replaceAll(` `,`_`)||`UNKNOWN_ERROR`,this.data=n.data,this.cause=n.cause,this.message=n.message||`Unknown error`,this.hint=n.hint,this.stackSkip=n.stackSkip??e;let r=t(n.stackSkip??e);this.stack=r.replace(`Error`,``).split(`
8
8
  `).map(e=>e.trimStart()).join(`
9
9
  `).trim()||`Unknown stack`,this.realStack=r}toString(){return l(this,{returnValue:`string`,silent:!0,stackSkip:this.stackSkip})}};export{o as Err,u as ErrorT,a as Ok,c as TTY_COLORS,i as err,l as logError,r as ok,s as trycatch};
10
10
  //# sourceMappingURL=index.mjs.map
@@ -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 type { 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\t\tcause: errorValue.cause,\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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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(mapError(error))\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\" = \"string\",\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`\\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, options.stackSkip);\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.error as any;\n\t}\n\treturn result.join(\"\\n\") 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: Uppercase<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)?.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\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 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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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?: (error: unknown) => {\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(mapError(error))\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\" = \"string\",\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`\\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 ? { cause } : undefined) as Error & {\n\t\t\tstack?: string;\n\t\t};\n\t\tif (\"captureStackTrace\" in Error) {\n\t\t\t(Error as any).captureStackTrace(e, options.stackSkip);\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.error as any;\n\t}\n\treturn result.join(\"\\n\") 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "need-result",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "type": "module",
5
5
  "packageManager": "bun@1.3.5",
6
6
  "license": "MIT",