@l3dev/result 0.5.0 → 0.6.0

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/build/all.d.ts CHANGED
@@ -3,6 +3,5 @@ import { type Ok } from "./ok.js";
3
3
  import type { ReturnResult } from "./result.types.js";
4
4
  export declare function all<TResults extends ReturnResult<any, any>[]>(...results: TResults): Extract<TResults[number], Err<any, any>> | Ok<Extract<TResults[number], Ok<any>>["value"][]>;
5
5
  export declare function allAsync<TResults extends (ReturnResult<any, any> | Promise<ReturnResult<any, any>>)[]>(...results: TResults): Promise<Extract<Awaited<TResults[number]>, Err<any, any>> | Ok<Extract<Awaited<TResults[number]>, Ok<any>>["value"][]>>;
6
- export declare function allSettledAsync<TResults extends (ReturnResult<any, any> | Promise<ReturnResult<any, any>>)[]>(...results: TResults): Promise<Awaited<TResults[number]>[]>;
7
6
  export declare function allValues<TResults extends ReturnResult<any, any>[]>(...results: TResults): Extract<TResults[number], Ok<any>>["value"][];
8
7
  export declare function allErrors<TResults extends ReturnResult<any, any>[]>(...results: TResults): Extract<TResults[number], Err<any, any>>[];
package/build/all.js CHANGED
@@ -10,22 +10,7 @@ export function all(...results) {
10
10
  return ok(values);
11
11
  }
12
12
  export async function allAsync(...results) {
13
- const values = [];
14
- for (const asyncResult of results) {
15
- const result = await asyncResult;
16
- if (!result.ok) {
17
- return result;
18
- }
19
- values.push(result.value);
20
- }
21
- return ok(values);
22
- }
23
- export async function allSettledAsync(...results) {
24
- const settled = [];
25
- for (const asyncResult of results) {
26
- settled.push((await asyncResult));
27
- }
28
- return settled;
13
+ return all(...(await Promise.all(results)));
29
14
  }
30
15
  export function allValues(...results) {
31
16
  const values = [];
package/build/all.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","sourceRoot":"","sources":["../src/all.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAW,MAAM,SAAS,CAAC;AAGtC,MAAM,UAAU,GAAG,CAClB,GAAG,OAAiB;IAEpB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAAkD,CAAC;QAC3D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG7B,GAAG,OAAiB;IAKpB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAA2D,CAAC;QACpE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAEnC,GAAG,OAAiB;IACrB,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,WAAW,CAA8B,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,GAAG,OAAiB;IAEpB,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,GAAG,OAAiB;IAEpB,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAkD,CAAC;AAC3D,CAAC","sourcesContent":["import type { Err } from \"./err.js\";\nimport { ok, type Ok } from \"./ok.js\";\nimport type { ReturnResult } from \"./result.types.js\";\n\nexport function all<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Err<any, any>> | Ok<Extract<TResults[number], Ok<any>>[\"value\"][]> {\n\tconst values = [];\n\tfor (const result of results) {\n\t\tif (!result.ok) {\n\t\t\treturn result as Extract<TResults[number], Err<any, any>>;\n\t\t}\n\t\tvalues.push(result.value);\n\t}\n\treturn ok(values);\n}\n\nexport async function allAsync<\n\tTResults extends (ReturnResult<any, any> | Promise<ReturnResult<any, any>>)[]\n>(\n\t...results: TResults\n): Promise<\n\t| Extract<Awaited<TResults[number]>, Err<any, any>>\n\t| Ok<Extract<Awaited<TResults[number]>, Ok<any>>[\"value\"][]>\n> {\n\tconst values = [];\n\tfor (const asyncResult of results) {\n\t\tconst result = await asyncResult;\n\t\tif (!result.ok) {\n\t\t\treturn result as Extract<Awaited<TResults[number]>, Err<any, any>>;\n\t\t}\n\t\tvalues.push(result.value);\n\t}\n\treturn ok(values);\n}\n\nexport async function allSettledAsync<\n\tTResults extends (ReturnResult<any, any> | Promise<ReturnResult<any, any>>)[]\n>(...results: TResults): Promise<Awaited<TResults[number]>[]> {\n\tconst settled: Awaited<TResults[number]>[] = [];\n\tfor (const asyncResult of results) {\n\t\tsettled.push((await asyncResult) as Awaited<TResults[number]>);\n\t}\n\treturn settled;\n}\n\nexport function allValues<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Ok<any>>[\"value\"][] {\n\tconst values: any[] = [];\n\tfor (const result of results) {\n\t\tif (result.ok) {\n\t\t\tvalues.push(result.value);\n\t\t}\n\t}\n\treturn values;\n}\n\nexport function allErrors<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Err<any, any>>[] {\n\tconst errs: Err<any, any>[] = [];\n\tfor (const result of results) {\n\t\tif (!result.ok) {\n\t\t\terrs.push(result);\n\t\t}\n\t}\n\treturn errs as Extract<TResults[number], Err<any, any>>[];\n}\n"]}
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../src/all.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAW,MAAM,SAAS,CAAC;AAGtC,MAAM,UAAU,GAAG,CAClB,GAAG,OAAiB;IAEpB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAAkD,CAAC;QAC3D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG7B,GAAG,OAAiB;IAKpB,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,GAAG,OAAiB;IAEpB,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,GAAG,OAAiB;IAEpB,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAkD,CAAC;AAC3D,CAAC","sourcesContent":["import type { Err } from \"./err.js\";\nimport { ok, type Ok } from \"./ok.js\";\nimport type { ReturnResult } from \"./result.types.js\";\n\nexport function all<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Err<any, any>> | Ok<Extract<TResults[number], Ok<any>>[\"value\"][]> {\n\tconst values = [];\n\tfor (const result of results) {\n\t\tif (!result.ok) {\n\t\t\treturn result as Extract<TResults[number], Err<any, any>>;\n\t\t}\n\t\tvalues.push(result.value);\n\t}\n\treturn ok(values);\n}\n\nexport async function allAsync<\n\tTResults extends (ReturnResult<any, any> | Promise<ReturnResult<any, any>>)[]\n>(\n\t...results: TResults\n): Promise<\n\t| Extract<Awaited<TResults[number]>, Err<any, any>>\n\t| Ok<Extract<Awaited<TResults[number]>, Ok<any>>[\"value\"][]>\n> {\n\treturn all(...(await Promise.all(results)));\n}\n\nexport function allValues<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Ok<any>>[\"value\"][] {\n\tconst values: any[] = [];\n\tfor (const result of results) {\n\t\tif (result.ok) {\n\t\t\tvalues.push(result.value);\n\t\t}\n\t}\n\treturn values;\n}\n\nexport function allErrors<TResults extends ReturnResult<any, any>[]>(\n\t...results: TResults\n): Extract<TResults[number], Err<any, any>>[] {\n\tconst errs: Err<any, any>[] = [];\n\tfor (const result of results) {\n\t\tif (!result.ok) {\n\t\t\terrs.push(result);\n\t\t}\n\t}\n\treturn errs as Extract<TResults[number], Err<any, any>>[];\n}\n"]}
package/build/from.d.ts CHANGED
@@ -2,14 +2,14 @@ import type { ResultErrorDefinition, ReturnResult } from "./result.types.js";
2
2
  export declare function from<TReturn, TError = Error>(wrapper: () => TReturn): ReturnResult<TReturn, ResultErrorDefinition<null, {
3
3
  error: TError;
4
4
  }>>;
5
- export declare function from<TReturn, const TType, TContext extends object, TError = Error>(config: {
5
+ export declare function from<TReturn, const TType, TContext extends object, TError = Error>(wrapper: () => TReturn, config: {
6
6
  onError: {
7
7
  type: TType;
8
8
  context?: TContext;
9
9
  };
10
- }, wrapper: () => TReturn): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & {
10
+ }): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & {
11
11
  error: TError;
12
12
  }>>;
13
- export declare function from<TReturn, const TType extends string, TError = Error>(errorType: TType, wrapper: () => TReturn): ReturnResult<TReturn, ResultErrorDefinition<TType, {
13
+ export declare function from<TReturn, const TType extends string, TError = Error>(wrapper: () => TReturn, errorType: TType): ReturnResult<TReturn, ResultErrorDefinition<TType, {
14
14
  error: TError;
15
15
  }>>;
package/build/from.js CHANGED
@@ -1,13 +1,6 @@
1
1
  import { err } from "./err.js";
2
2
  import { ok } from "./ok.js";
3
- export function from(configOrWrapper, wrapper) {
4
- let config = null;
5
- if (!wrapper && typeof configOrWrapper === "function") {
6
- wrapper = configOrWrapper;
7
- }
8
- else if (typeof configOrWrapper !== "function") {
9
- config = configOrWrapper;
10
- }
3
+ export function from(wrapper, config) {
11
4
  try {
12
5
  const value = wrapper();
13
6
  return ok(value);
package/build/from.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"from.js","sourceRoot":"","sources":["../src/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAc7B,MAAM,UAAU,IAAI,CACnB,eAA4F,EAC5F,OAAuB;IAEvB,IAAI,MAAM,GAAqE,IAAI,CAAC;IACpF,IAAI,CAAC,OAAO,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QACvD,OAAO,GAAG,eAAe,CAAC;IAC3B,CAAC;SAAM,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAClD,MAAM,GAAG,eAAe,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,OAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,MAAe,CAAC;YACvB,OAAO,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAU,CAAC;YAC/C,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE;YAChB,GAAG,OAAO;YACV,KAAK,EAAE,KAAe;SACU,CAAC,CAAC;IACpC,CAAC;AACF,CAAC","sourcesContent":["import { err } from \"./err.js\";\nimport { ok } from \"./ok.js\";\nimport type { ResultErrorDefinition, ReturnResult } from \"./result.types.js\";\n\nexport function from<TReturn, TError = Error>(\n\twrapper: () => TReturn\n): ReturnResult<TReturn, ResultErrorDefinition<null, { error: TError }>>;\nexport function from<TReturn, const TType, TContext extends object, TError = Error>(\n\tconfig: { onError: { type: TType; context?: TContext } },\n\twrapper: () => TReturn\n): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & { error: TError }>>;\nexport function from<TReturn, const TType extends string, TError = Error>(\n\terrorType: TType,\n\twrapper: () => TReturn\n): ReturnResult<TReturn, ResultErrorDefinition<TType, { error: TError }>>;\nexport function from<TReturn, const TType, TContext extends object, TError = Error>(\n\tconfigOrWrapper: string | { onError: { type: TType; context?: TContext } } | (() => TReturn),\n\twrapper?: () => TReturn\n): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & { error: TError }>> {\n\tlet config: string | { onError: { type: TType; context?: TContext } } | null = null;\n\tif (!wrapper && typeof configOrWrapper === \"function\") {\n\t\twrapper = configOrWrapper;\n\t} else if (typeof configOrWrapper !== \"function\") {\n\t\tconfig = configOrWrapper;\n\t}\n\n\ttry {\n\t\tconst value = wrapper!();\n\t\treturn ok(value);\n\t} catch (error) {\n\t\tlet type, context;\n\t\tif (typeof config === \"string\") {\n\t\t\ttype = config as TType;\n\t\t\tcontext = {};\n\t\t} else {\n\t\t\ttype = (config?.onError.type ?? null) as TType;\n\t\t\tcontext = config?.onError.context ?? {};\n\t\t}\n\n\t\treturn err(type, {\n\t\t\t...context,\n\t\t\terror: error as TError\n\t\t} as TContext & { error: TError });\n\t}\n}\n"]}
1
+ {"version":3,"file":"from.js","sourceRoot":"","sources":["../src/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAc7B,MAAM,UAAU,IAAI,CACnB,OAAsB,EACtB,MAAkE;IAElE,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,OAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,MAAe,CAAC;YACvB,OAAO,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAU,CAAC;YAC/C,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE;YAChB,GAAG,OAAO;YACV,KAAK,EAAE,KAAe;SACU,CAAC,CAAC;IACpC,CAAC;AACF,CAAC","sourcesContent":["import { err } from \"./err.js\";\nimport { ok } from \"./ok.js\";\nimport type { ResultErrorDefinition, ReturnResult } from \"./result.types.js\";\n\nexport function from<TReturn, TError = Error>(\n\twrapper: () => TReturn\n): ReturnResult<TReturn, ResultErrorDefinition<null, { error: TError }>>;\nexport function from<TReturn, const TType, TContext extends object, TError = Error>(\n\twrapper: () => TReturn,\n\tconfig: { onError: { type: TType; context?: TContext } }\n): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & { error: TError }>>;\nexport function from<TReturn, const TType extends string, TError = Error>(\n\twrapper: () => TReturn,\n\terrorType: TType\n): ReturnResult<TReturn, ResultErrorDefinition<TType, { error: TError }>>;\nexport function from<TReturn, const TType, TContext extends object, TError = Error>(\n\twrapper: () => TReturn,\n\tconfig?: string | { onError: { type: TType; context?: TContext } }\n): ReturnResult<TReturn, ResultErrorDefinition<TType, TContext & { error: TError }>> {\n\ttry {\n\t\tconst value = wrapper!();\n\t\treturn ok(value);\n\t} catch (error) {\n\t\tlet type, context;\n\t\tif (typeof config === \"string\") {\n\t\t\ttype = config as TType;\n\t\t\tcontext = {};\n\t\t} else {\n\t\t\ttype = (config?.onError.type ?? null) as TType;\n\t\t\tcontext = config?.onError.context ?? {};\n\t\t}\n\n\t\treturn err(type, {\n\t\t\t...context,\n\t\t\terror: error as TError\n\t\t} as TContext & { error: TError });\n\t}\n}\n"]}
@@ -2,14 +2,14 @@ import type { ResultErrorDefinition, ReturnResult } from "./result.types.js";
2
2
  export declare function fromPromise<TPromise extends Promise<any>, TError = Error>(promise: TPromise): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<null, {
3
3
  error: TError;
4
4
  }>>>;
5
- export declare function fromPromise<TPromise extends Promise<any>, const TType, TContext extends object, TError = Error>(config: {
5
+ export declare function fromPromise<TPromise extends Promise<any>, const TType, TContext extends object, TError = Error>(promise: TPromise, config: {
6
6
  onError: {
7
7
  type: TType;
8
8
  context?: TContext;
9
9
  };
10
- }, promise: TPromise): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & {
10
+ }): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & {
11
11
  error: TError;
12
12
  }>>>;
13
- export declare function fromPromise<TPromise extends Promise<any>, const TType extends string, TError = Error>(config: TType, promise: TPromise): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, {
13
+ export declare function fromPromise<TPromise extends Promise<any>, const TType extends string, TError = Error>(promise: TPromise, config: TType): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, {
14
14
  error: TError;
15
15
  }>>>;
@@ -1,13 +1,6 @@
1
1
  import { err } from "./err.js";
2
2
  import { ok } from "./ok.js";
3
- export async function fromPromise(configOrPromise, promise) {
4
- let config = null;
5
- if (!promise && configOrPromise instanceof Promise) {
6
- promise = configOrPromise;
7
- }
8
- else if (!(configOrPromise instanceof Promise)) {
9
- config = configOrPromise;
10
- }
3
+ export async function fromPromise(promise, config) {
11
4
  try {
12
5
  const value = await promise;
13
6
  return ok(value);
@@ -1 +1 @@
1
- {"version":3,"file":"fromPromise.js","sourceRoot":"","sources":["../src/fromPromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAyB7B,MAAM,CAAC,KAAK,UAAU,WAAW,CAMhC,eAAqF,EACrF,OAAkB;IAIlB,IAAI,MAAM,GAAqE,IAAI,CAAC;IACpF,IAAI,CAAC,OAAO,IAAI,eAAe,YAAY,OAAO,EAAE,CAAC;QACpD,OAAO,GAAG,eAAe,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,YAAY,OAAO,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,eAAe,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,MAAM,OAAQ,CAAC;QAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,MAAe,CAAC;YACvB,OAAO,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAU,CAAC;YAC/C,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE;YAChB,GAAG,OAAO;YACV,KAAK,EAAE,KAAe;SACU,CAAC,CAAC;IACpC,CAAC;AACF,CAAC","sourcesContent":["import { err } from \"./err.js\";\nimport { ok } from \"./ok.js\";\nimport type { ResultErrorDefinition, ReturnResult } from \"./result.types.js\";\n\nexport async function fromPromise<TPromise extends Promise<any>, TError = Error>(\n\tpromise: TPromise\n): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<null, { error: TError }>>>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType,\n\tTContext extends object,\n\tTError = Error\n>(\n\tconfig: { onError: { type: TType; context?: TContext } },\n\tpromise: TPromise\n): Promise<\n\tReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & { error: TError }>>\n>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType extends string,\n\tTError = Error\n>(\n\tconfig: TType,\n\tpromise: TPromise\n): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, { error: TError }>>>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType,\n\tTContext extends object,\n\tTError = Error\n>(\n\tconfigOrPromise: string | { onError: { type: TType; context?: TContext } } | TPromise,\n\tpromise?: TPromise\n): Promise<\n\tReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & { error: TError }>>\n> {\n\tlet config: string | { onError: { type: TType; context?: TContext } } | null = null;\n\tif (!promise && configOrPromise instanceof Promise) {\n\t\tpromise = configOrPromise;\n\t} else if (!(configOrPromise instanceof Promise)) {\n\t\tconfig = configOrPromise;\n\t}\n\n\ttry {\n\t\tconst value = await promise!;\n\t\treturn ok(value);\n\t} catch (error) {\n\t\tlet type, context;\n\t\tif (typeof config === \"string\") {\n\t\t\ttype = config as TType;\n\t\t\tcontext = {};\n\t\t} else {\n\t\t\ttype = (config?.onError.type ?? null) as TType;\n\t\t\tcontext = config?.onError.context ?? {};\n\t\t}\n\n\t\treturn err(type, {\n\t\t\t...context,\n\t\t\terror: error as TError\n\t\t} as TContext & { error: TError });\n\t}\n}\n"]}
1
+ {"version":3,"file":"fromPromise.js","sourceRoot":"","sources":["../src/fromPromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAyB7B,MAAM,CAAC,KAAK,UAAU,WAAW,CAMhC,OAAiB,EACjB,MAAkE;IAIlE,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,MAAM,OAAQ,CAAC;QAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,IAAI,EAAE,OAAO,CAAC;QAClB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,MAAe,CAAC;YACvB,OAAO,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACP,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAU,CAAC;YAC/C,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE;YAChB,GAAG,OAAO;YACV,KAAK,EAAE,KAAe;SACU,CAAC,CAAC;IACpC,CAAC;AACF,CAAC","sourcesContent":["import { err } from \"./err.js\";\nimport { ok } from \"./ok.js\";\nimport type { ResultErrorDefinition, ReturnResult } from \"./result.types.js\";\n\nexport async function fromPromise<TPromise extends Promise<any>, TError = Error>(\n\tpromise: TPromise\n): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<null, { error: TError }>>>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType,\n\tTContext extends object,\n\tTError = Error\n>(\n\tpromise: TPromise,\n\tconfig: { onError: { type: TType; context?: TContext } }\n): Promise<\n\tReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & { error: TError }>>\n>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType extends string,\n\tTError = Error\n>(\n\tpromise: TPromise,\n\tconfig: TType\n): Promise<ReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, { error: TError }>>>;\nexport async function fromPromise<\n\tTPromise extends Promise<any>,\n\tconst TType,\n\tTContext extends object,\n\tTError = Error\n>(\n\tpromise: TPromise,\n\tconfig?: string | { onError: { type: TType; context?: TContext } }\n): Promise<\n\tReturnResult<Awaited<TPromise>, ResultErrorDefinition<TType, TContext & { error: TError }>>\n> {\n\ttry {\n\t\tconst value = await promise!;\n\t\treturn ok(value);\n\t} catch (error) {\n\t\tlet type, context;\n\t\tif (typeof config === \"string\") {\n\t\t\ttype = config as TType;\n\t\t\tcontext = {};\n\t\t} else {\n\t\t\ttype = (config?.onError.type ?? null) as TType;\n\t\t\tcontext = config?.onError.context ?? {};\n\t\t}\n\n\t\treturn err(type, {\n\t\t\t...context,\n\t\t\terror: error as TError\n\t\t} as TContext & { error: TError });\n\t}\n}\n"]}
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { all, allAsync, allErrors, allSettledAsync, allValues } from "./all.js";
1
+ import { all, allAsync, allErrors, allValues } from "./all.js";
2
2
  import { err, type Err } from "./err.js";
3
3
  import { fn } from "./fn.js";
4
4
  import { from } from "./from.js";
@@ -7,10 +7,10 @@ import { ok, type Ok } from "./ok.js";
7
7
  import { pipe } from "./pipe.js";
8
8
  import { pipeAsync } from "./pipeAsync.js";
9
9
  import type { ReturnResult } from "./result.types.js";
10
+ import { unwrap, unwrapOrDefault } from "./unwrap.js";
10
11
  export * from "./ok.js";
11
12
  export * from "./err.js";
12
13
  export * from "./result.types.js";
13
- declare function unwrapOrDefault<TResult extends ReturnResult<any, any>, TValue = TResult extends Ok<infer TValue> ? TValue : never>(result: TResult, defaultValue: NoInfer<TValue>): TValue;
14
14
  declare function isOk<TResult extends ReturnResult<any, any>>(result: TResult): result is Extract<TResult, Ok<any>>;
15
15
  declare function isErr<TResult extends ReturnResult<any, any>>(result: TResult): result is Extract<TResult, Err<any, any>>;
16
16
  export declare const Result: {
@@ -21,10 +21,10 @@ export declare const Result: {
21
21
  fn: typeof fn;
22
22
  from: typeof from;
23
23
  fromPromise: typeof fromPromise;
24
+ unwrap: typeof unwrap;
24
25
  unwrapOrDefault: typeof unwrapOrDefault;
25
26
  all: typeof all;
26
27
  allAsync: typeof allAsync;
27
- allSettledAsync: typeof allSettledAsync;
28
28
  allValues: typeof allValues;
29
29
  allErrors: typeof allErrors;
30
30
  isOk: typeof isOk;
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { all, allAsync, allErrors, allSettledAsync, allValues } from "./all.js";
1
+ import { all, allAsync, allErrors, allValues } from "./all.js";
2
2
  import { err } from "./err.js";
3
3
  import { fn } from "./fn.js";
4
4
  import { from } from "./from.js";
@@ -6,12 +6,10 @@ import { fromPromise } from "./fromPromise.js";
6
6
  import { ok } from "./ok.js";
7
7
  import { pipe } from "./pipe.js";
8
8
  import { pipeAsync } from "./pipeAsync.js";
9
+ import { unwrap, unwrapOrDefault } from "./unwrap.js";
9
10
  export * from "./ok.js";
10
11
  export * from "./err.js";
11
12
  export * from "./result.types.js";
12
- function unwrapOrDefault(result, defaultValue) {
13
- return result.ok ? result.value : defaultValue;
14
- }
15
13
  function isOk(result) {
16
14
  return result.ok;
17
15
  }
@@ -26,10 +24,10 @@ export const Result = {
26
24
  fn,
27
25
  from,
28
26
  fromPromise,
27
+ unwrap,
29
28
  unwrapOrDefault,
30
29
  all,
31
30
  allAsync,
32
- allSettledAsync,
33
31
  allValues,
34
32
  allErrors,
35
33
  isOk,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAW,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,SAAS,eAAe,CAGtB,MAAe,EAAE,YAA6B;IAC/C,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAChD,CAAC;AAED,SAAS,IAAI,CACZ,MAAe;IAEf,OAAO,MAAM,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,KAAK,CACb,MAAe;IAEf,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,EAAE;IACF,GAAG;IACH,IAAI;IACJ,SAAS;IACT,EAAE;IACF,IAAI;IACJ,WAAW;IACX,eAAe;IACf,GAAG;IACH,QAAQ;IACR,eAAe;IACf,SAAS;IACT,SAAS;IACT,IAAI;IACJ,KAAK;CACL,CAAC","sourcesContent":["import { all, allAsync, allErrors, allSettledAsync, allValues } from \"./all.js\";\nimport { err, type Err } from \"./err.js\";\nimport { fn } from \"./fn.js\";\nimport { from } from \"./from.js\";\nimport { fromPromise } from \"./fromPromise.js\";\nimport { ok, type Ok } from \"./ok.js\";\nimport { pipe } from \"./pipe.js\";\nimport { pipeAsync } from \"./pipeAsync.js\";\nimport type { ReturnResult } from \"./result.types.js\";\n\nexport * from \"./ok.js\";\nexport * from \"./err.js\";\nexport * from \"./result.types.js\";\n\nfunction unwrapOrDefault<\n\tTResult extends ReturnResult<any, any>,\n\tTValue = TResult extends Ok<infer TValue> ? TValue : never\n>(result: TResult, defaultValue: NoInfer<TValue>): TValue {\n\treturn result.ok ? result.value : defaultValue;\n}\n\nfunction isOk<TResult extends ReturnResult<any, any>>(\n\tresult: TResult\n): result is Extract<TResult, Ok<any>> {\n\treturn result.ok;\n}\n\nfunction isErr<TResult extends ReturnResult<any, any>>(\n\tresult: TResult\n): result is Extract<TResult, Err<any, any>> {\n\treturn !result.ok;\n}\n\nexport const Result = {\n\tok,\n\terr,\n\tpipe,\n\tpipeAsync,\n\tfn,\n\tfrom,\n\tfromPromise,\n\tunwrapOrDefault,\n\tall,\n\tallAsync,\n\tallSettledAsync,\n\tallValues,\n\tallErrors,\n\tisOk,\n\tisErr\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAW,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEtD,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,SAAS,IAAI,CACZ,MAAe;IAEf,OAAO,MAAM,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,KAAK,CACb,MAAe;IAEf,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,EAAE;IACF,GAAG;IACH,IAAI;IACJ,SAAS;IACT,EAAE;IACF,IAAI;IACJ,WAAW;IACX,MAAM;IACN,eAAe;IACf,GAAG;IACH,QAAQ;IACR,SAAS;IACT,SAAS;IACT,IAAI;IACJ,KAAK;CACL,CAAC","sourcesContent":["import { all, allAsync, allErrors, allValues } from \"./all.js\";\nimport { err, type Err } from \"./err.js\";\nimport { fn } from \"./fn.js\";\nimport { from } from \"./from.js\";\nimport { fromPromise } from \"./fromPromise.js\";\nimport { ok, type Ok } from \"./ok.js\";\nimport { pipe } from \"./pipe.js\";\nimport { pipeAsync } from \"./pipeAsync.js\";\nimport type { ReturnResult } from \"./result.types.js\";\nimport { unwrap, unwrapOrDefault } from \"./unwrap.js\";\n\nexport * from \"./ok.js\";\nexport * from \"./err.js\";\nexport * from \"./result.types.js\";\n\nfunction isOk<TResult extends ReturnResult<any, any>>(\n\tresult: TResult\n): result is Extract<TResult, Ok<any>> {\n\treturn result.ok;\n}\n\nfunction isErr<TResult extends ReturnResult<any, any>>(\n\tresult: TResult\n): result is Extract<TResult, Err<any, any>> {\n\treturn !result.ok;\n}\n\nexport const Result = {\n\tok,\n\terr,\n\tpipe,\n\tpipeAsync,\n\tfn,\n\tfrom,\n\tfromPromise,\n\tunwrap,\n\tunwrapOrDefault,\n\tall,\n\tallAsync,\n\tallValues,\n\tallErrors,\n\tisOk,\n\tisErr\n};\n"]}
@@ -0,0 +1,5 @@
1
+ import type { Ok } from "./ok";
2
+ import type { ReturnResult } from "./result.types";
3
+ export type UnwrapResult<TResult extends ReturnResult<any, any>> = TResult extends Ok<infer TValue> ? TValue extends ReturnResult<any, any> ? UnwrapResult<TValue> : TResult : TResult;
4
+ export declare function unwrap<TResult extends ReturnResult<any, any>>(result: TResult): UnwrapResult<TResult>;
5
+ export declare function unwrapOrDefault<TResult extends ReturnResult<any, any>, TValue = TResult extends Ok<infer TValue> ? TValue : never>(result: TResult, defaultValue: NoInfer<TValue>): TValue;
@@ -0,0 +1,11 @@
1
+ export function unwrap(result) {
2
+ if (result.ok && typeof result.value === "object" && "ok" in result.value) {
3
+ return unwrap(result.value);
4
+ }
5
+ return result;
6
+ }
7
+ export function unwrapOrDefault(result, defaultValue) {
8
+ const unwrapped = unwrap(result);
9
+ return unwrapped.ok ? unwrapped.value : defaultValue;
10
+ }
11
+ //# sourceMappingURL=unwrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrap.js","sourceRoot":"","sources":["../src/unwrap.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,MAAM,CACrB,MAAe;IAEf,IAAI,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,MAA+B,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAG7B,MAAe,EAAE,YAA6B;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AACtD,CAAC","sourcesContent":["import type { Ok } from \"./ok\";\nimport type { ReturnResult } from \"./result.types\";\n\nexport type UnwrapResult<TResult extends ReturnResult<any, any>> =\n\tTResult extends Ok<infer TValue>\n\t\t? TValue extends ReturnResult<any, any>\n\t\t\t? UnwrapResult<TValue>\n\t\t\t: TResult\n\t\t: TResult;\n\nexport function unwrap<TResult extends ReturnResult<any, any>>(\n\tresult: TResult\n): UnwrapResult<TResult> {\n\tif (result.ok && typeof result.value === \"object\" && \"ok\" in result.value) {\n\t\treturn unwrap(result.value);\n\t}\n\treturn result as UnwrapResult<TResult>;\n}\n\nexport function unwrapOrDefault<\n\tTResult extends ReturnResult<any, any>,\n\tTValue = TResult extends Ok<infer TValue> ? TValue : never\n>(result: TResult, defaultValue: NoInfer<TValue>): TValue {\n\tconst unwrapped = unwrap(result);\n\treturn unwrapped.ok ? unwrapped.value : defaultValue;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@l3dev/result",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Type-safe result-based error handling",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -36,7 +36,11 @@
36
36
  "dependencies": {
37
37
  "zod": "^4.1.12"
38
38
  },
39
+ "devDependencies": {
40
+ "vitest": "^4.0.16"
41
+ },
39
42
  "scripts": {
43
+ "test": "vitest --typecheck",
40
44
  "build": "tsc -p tsconfig.json",
41
45
  "package": "pnpm build"
42
46
  }