skyr 0.1.2 → 0.2.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/dist/di.d.ts +148 -0
- package/dist/di.d.ts.map +1 -0
- package/dist/di.js +303 -0
- package/dist/di.js.map +1 -0
- package/dist/index.d.ts +4 -275
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -477
- package/dist/index.js.map +1 -1
- package/dist/result.d.ts +146 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +419 -0
- package/dist/result.js.map +1 -0
- package/package.json +11 -6
- package/src/di.ts +2 -2
- package/src/index.ts +2 -2
package/dist/result.d.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe error handling with Result types
|
|
3
|
+
* Inspired by Rust's Result<T, E>
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Structured failure with code, message, and optional cause
|
|
7
|
+
*/
|
|
8
|
+
export type Failure<Code extends string> = {
|
|
9
|
+
code: Code;
|
|
10
|
+
message: string;
|
|
11
|
+
cause?: unknown;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Result type - either success (Ok) or failure (Fail)
|
|
15
|
+
*/
|
|
16
|
+
export type Result<T, E> = Ok<T, E> | Fail<T, E>;
|
|
17
|
+
/**
|
|
18
|
+
* Extract code literals from a Failure union type
|
|
19
|
+
* ExtractCodes<Failure<"A"> | Failure<"B">> = "A" | "B"
|
|
20
|
+
*/
|
|
21
|
+
export type ExtractCodes<E> = E extends Failure<infer Code> ? Code : never;
|
|
22
|
+
/**
|
|
23
|
+
* Handler map for pattern matching on failure codes
|
|
24
|
+
* Provides autocomplete for available codes and narrows failure type per handler
|
|
25
|
+
*/
|
|
26
|
+
export type FailureHandlers<E> = {
|
|
27
|
+
[K in ExtractCodes<E>]?: (failure: Extract<E, Failure<K>>) => any;
|
|
28
|
+
};
|
|
29
|
+
export declare class Ok<T, E> {
|
|
30
|
+
readonly value: T;
|
|
31
|
+
readonly _tag: "Ok";
|
|
32
|
+
constructor(value: T);
|
|
33
|
+
map<U>(fn: (value: T) => U): Result<U, E>;
|
|
34
|
+
map<U>(fn: (value: T) => Promise<U>): AsyncResult<U, E | Failure<"UNKNOWN_FAILURE">>;
|
|
35
|
+
map<U, F>(fn: (value: T) => Result<U, F>): Result<U, E | F>;
|
|
36
|
+
map<U, F>(fn: (value: T) => AsyncResult<U, F>): AsyncResult<U, E | F>;
|
|
37
|
+
mapFailure<F>(_fn: (failure: never) => F): Result<T, F>;
|
|
38
|
+
mapFailure(_handlers: FailureHandlers<never>): Result<T, never>;
|
|
39
|
+
inspect(fn: (value: T) => void): Result<T, E>;
|
|
40
|
+
inspectFailure(_fn: (failure: never) => void): Result<T, E>;
|
|
41
|
+
unwrap(): T;
|
|
42
|
+
unwrapOr<U>(_defaultValue: U): T | U;
|
|
43
|
+
expect(_message: string): T;
|
|
44
|
+
match<U>(handlers: {
|
|
45
|
+
ok: (value: T) => U;
|
|
46
|
+
failed: (failure: E) => U;
|
|
47
|
+
}): U;
|
|
48
|
+
isOk(): this is Ok<T, E>;
|
|
49
|
+
hasFailed(): this is Fail<T, E>;
|
|
50
|
+
[Symbol.iterator](): Generator<never, T, unknown>;
|
|
51
|
+
}
|
|
52
|
+
export declare class Fail<T, E> {
|
|
53
|
+
readonly failure: E;
|
|
54
|
+
readonly _tag: "Fail";
|
|
55
|
+
constructor(failure: E);
|
|
56
|
+
map<U>(_fn: (value: never) => U): Result<U, E>;
|
|
57
|
+
mapFailure<F>(fn: (failure: E) => F): Result<T, F>;
|
|
58
|
+
mapFailure<F>(fn: (failure: E) => Promise<F>): AsyncResult<T, F | Failure<"UNKNOWN_FAILURE">>;
|
|
59
|
+
mapFailure<U, F>(fn: (failure: E) => Result<U, F>): Result<T | U, F>;
|
|
60
|
+
mapFailure<U, F>(fn: (failure: E) => AsyncResult<U, F>): AsyncResult<T | U, F>;
|
|
61
|
+
mapFailure(handlers: FailureHandlers<E>): any;
|
|
62
|
+
inspect(_fn: (value: never) => void): Result<T, E>;
|
|
63
|
+
inspectFailure(fn: (failure: E) => void): Result<T, E>;
|
|
64
|
+
unwrap(): E;
|
|
65
|
+
unwrapOr<U>(defaultValue: U): T | U;
|
|
66
|
+
expect(message: string): never;
|
|
67
|
+
match<U>(handlers: {
|
|
68
|
+
ok: (value: T) => U;
|
|
69
|
+
failed: (failure: E) => U;
|
|
70
|
+
}): U;
|
|
71
|
+
isOk(): this is Ok<T, E>;
|
|
72
|
+
hasFailed(): this is Fail<T, E>;
|
|
73
|
+
[Symbol.iterator](): Generator<Fail<never, E>, T>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* AsyncResult wraps a Promise<Result<T, E>> and implements PromiseLike
|
|
77
|
+
* Allows chaining with .map/.mapFailure before awaiting
|
|
78
|
+
*/
|
|
79
|
+
export declare class AsyncResult<T, E> implements PromiseLike<Result<T, E>> {
|
|
80
|
+
private promise;
|
|
81
|
+
constructor(promise: Promise<Result<T, E>>);
|
|
82
|
+
then<TResult1 = Result<T, E>, TResult2 = never>(onfulfilled?: ((value: Result<T, E>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
|
|
83
|
+
map<U, F>(fn: (value: T) => U | Promise<U> | Result<U, F> | AsyncResult<U, F>): AsyncResult<U, E | F | Failure<"UNKNOWN_FAILURE">>;
|
|
84
|
+
mapFailure<U, F>(fn: (failure: E) => F | Promise<F> | Result<U, F> | AsyncResult<U, F>): AsyncResult<T | U, F | Failure<"UNKNOWN_FAILURE">>;
|
|
85
|
+
mapFailure(handlers: FailureHandlers<E>): any;
|
|
86
|
+
inspect(fn: (value: T) => void): AsyncResult<T, E>;
|
|
87
|
+
inspectFailure(fn: (failure: E) => void): AsyncResult<T, E>;
|
|
88
|
+
unwrap(): Promise<T | E>;
|
|
89
|
+
unwrapOr<U>(defaultValue: U): Promise<T | U>;
|
|
90
|
+
expect(message: string): Promise<T>;
|
|
91
|
+
match<U>(handlers: {
|
|
92
|
+
ok: (value: T) => U;
|
|
93
|
+
failed: (failure: E) => U;
|
|
94
|
+
}): Promise<U>;
|
|
95
|
+
isOk(): Promise<boolean>;
|
|
96
|
+
hasFailed(): Promise<boolean>;
|
|
97
|
+
[Symbol.iterator](): Generator<AsyncResult<T, E>, T, unknown>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create a successful Result
|
|
101
|
+
*/
|
|
102
|
+
export declare function ok<T>(value: T): Result<T, never>;
|
|
103
|
+
/**
|
|
104
|
+
* Create a structured failure
|
|
105
|
+
*/
|
|
106
|
+
export declare function failure<Code extends string>(code: Code, message: string, cause?: unknown): Failure<Code>;
|
|
107
|
+
/**
|
|
108
|
+
* Create a failed Result
|
|
109
|
+
* Can be curried: fail("CODE") returns a factory function
|
|
110
|
+
*/
|
|
111
|
+
export declare function fail<Code extends string>(code: Code): (message: string, cause?: unknown) => Result<never, Failure<Code>>;
|
|
112
|
+
export declare function fail<Code extends string>(code: Code, message: string, cause?: unknown): Result<never, Failure<Code>>;
|
|
113
|
+
/**
|
|
114
|
+
* Reusable factory for unknown failures
|
|
115
|
+
*/
|
|
116
|
+
export declare const UnknownFailure: (message: string, cause?: unknown) => Result<never, Failure<"UNKNOWN_FAILURE">>;
|
|
117
|
+
/**
|
|
118
|
+
* Convert throwing function or Promise into a Result
|
|
119
|
+
* Catches any errors and converts them to Failure
|
|
120
|
+
*/
|
|
121
|
+
export declare function fromThrowable<T>(promise: Promise<T>): AsyncResult<T, Failure<"UNKNOWN_FAILURE">>;
|
|
122
|
+
export declare function fromThrowable<T, E>(promise: Promise<T>, failureMapper: (error: unknown) => E): AsyncResult<T, E>;
|
|
123
|
+
export declare function fromThrowable<T>(fn: () => Promise<T>): AsyncResult<T, Failure<"UNKNOWN_FAILURE">>;
|
|
124
|
+
export declare function fromThrowable<T, E>(fn: () => Promise<T>, failureMapper: (error: unknown) => E): AsyncResult<T, E>;
|
|
125
|
+
export declare function fromThrowable<T>(fn: () => T): Result<T, Failure<"UNKNOWN_FAILURE">>;
|
|
126
|
+
export declare function fromThrowable<T, E>(fn: () => T, failureMapper: (error: unknown) => E): Result<T, E>;
|
|
127
|
+
/**
|
|
128
|
+
* Wrap a function to return Results instead of throwing
|
|
129
|
+
*/
|
|
130
|
+
export declare function wrapThrowable<Args extends any[], T>(fn: (...args: Args) => Promise<T>): (...args: Args) => AsyncResult<T, Failure<"UNKNOWN_FAILURE">>;
|
|
131
|
+
export declare function wrapThrowable<Args extends any[], T, E>(fn: (...args: Args) => Promise<T>, failureMapper: (error: unknown) => E): (...args: Args) => AsyncResult<T, E>;
|
|
132
|
+
export declare function wrapThrowable<Args extends any[], T>(fn: (...args: Args) => T): (...args: Args) => Result<T, Failure<"UNKNOWN_FAILURE">>;
|
|
133
|
+
export declare function wrapThrowable<Args extends any[], T, E>(fn: (...args: Args) => T, failureMapper: (error: unknown) => E): (...args: Args) => Result<T, E>;
|
|
134
|
+
/**
|
|
135
|
+
* Check if value is a Fail result
|
|
136
|
+
*/
|
|
137
|
+
export declare function hasFailed(value: unknown): value is Fail<unknown, unknown>;
|
|
138
|
+
/**
|
|
139
|
+
* Check if value is an Ok result
|
|
140
|
+
*/
|
|
141
|
+
export declare function isOk(value: unknown): value is Ok<unknown, unknown>;
|
|
142
|
+
/**
|
|
143
|
+
* Check if value is any Result (Ok or Fail)
|
|
144
|
+
*/
|
|
145
|
+
export declare function isResult(value: unknown): value is Result<unknown, unknown>;
|
|
146
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
|
package/dist/result.js
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe error handling with Result types
|
|
3
|
+
* Inspired by Rust's Result<T, E>
|
|
4
|
+
*/
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Ok Class - Represents Success
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export class Ok {
|
|
9
|
+
value;
|
|
10
|
+
_tag = "Ok";
|
|
11
|
+
constructor(value) {
|
|
12
|
+
this.value = value;
|
|
13
|
+
}
|
|
14
|
+
map(fn) {
|
|
15
|
+
const result = fn(this.value);
|
|
16
|
+
// Handle Result types
|
|
17
|
+
if (result instanceof Ok || result instanceof Fail) {
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
// Handle AsyncResult
|
|
21
|
+
if (result instanceof AsyncResult) {
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
// Handle Promise
|
|
25
|
+
if (result instanceof Promise) {
|
|
26
|
+
return new AsyncResult(result
|
|
27
|
+
.then((v) => new Ok(v))
|
|
28
|
+
.catch((err) => new Fail(createUnknownFailure(err))));
|
|
29
|
+
}
|
|
30
|
+
// Handle plain value
|
|
31
|
+
return new Ok(result);
|
|
32
|
+
}
|
|
33
|
+
mapFailure(_fnOrHandlers) {
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
// Inspection methods (for side effects)
|
|
37
|
+
inspect(fn) {
|
|
38
|
+
fn(this.value);
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
inspectFailure(_fn) {
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
// Unwrapping methods
|
|
45
|
+
unwrap() {
|
|
46
|
+
return this.value;
|
|
47
|
+
}
|
|
48
|
+
unwrapOr(_defaultValue) {
|
|
49
|
+
return this.value;
|
|
50
|
+
}
|
|
51
|
+
expect(_message) {
|
|
52
|
+
return this.value;
|
|
53
|
+
}
|
|
54
|
+
// Pattern matching
|
|
55
|
+
match(handlers) {
|
|
56
|
+
return handlers.ok(this.value);
|
|
57
|
+
}
|
|
58
|
+
// Type guards
|
|
59
|
+
isOk() {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
hasFailed() {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// Generator support - allows `yield* ok(value)` to unwrap the value
|
|
66
|
+
// deno-lint-ignore require-yield
|
|
67
|
+
*[Symbol.iterator]() {
|
|
68
|
+
return this.value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// Fail Class - Represents Failure
|
|
73
|
+
// ============================================================================
|
|
74
|
+
export class Fail {
|
|
75
|
+
failure;
|
|
76
|
+
_tag = "Fail";
|
|
77
|
+
constructor(failure) {
|
|
78
|
+
this.failure = failure;
|
|
79
|
+
}
|
|
80
|
+
// Transformation methods
|
|
81
|
+
map(_fn) {
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
mapFailure(fnOrHandlers) {
|
|
85
|
+
// Handle pattern matching with handler map
|
|
86
|
+
if (typeof fnOrHandlers === "object" && fnOrHandlers !== null) {
|
|
87
|
+
const handlers = fnOrHandlers;
|
|
88
|
+
const failure = this.failure;
|
|
89
|
+
// Check if this failure has a code property and if there's a handler for it
|
|
90
|
+
if (failure && typeof failure === "object" && "code" in failure) {
|
|
91
|
+
const handler = handlers[failure.code];
|
|
92
|
+
if (handler) {
|
|
93
|
+
const result = handler(failure);
|
|
94
|
+
// Apply same logic as function form
|
|
95
|
+
if (result instanceof Ok || result instanceof Fail) {
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
if (result instanceof AsyncResult) {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
if (result instanceof Promise) {
|
|
102
|
+
return new AsyncResult(result
|
|
103
|
+
.then((f) => new Fail(f))
|
|
104
|
+
.catch((err) => new Fail(createUnknownFailure(err))));
|
|
105
|
+
}
|
|
106
|
+
return new Fail(result);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// No handler found, pass through unchanged
|
|
110
|
+
return this;
|
|
111
|
+
}
|
|
112
|
+
// Handle function form
|
|
113
|
+
const fn = fnOrHandlers;
|
|
114
|
+
const result = fn(this.failure);
|
|
115
|
+
// Handle Result types
|
|
116
|
+
if (result instanceof Ok || result instanceof Fail) {
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
// Handle AsyncResult
|
|
120
|
+
if (result instanceof AsyncResult) {
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
// Handle Promise
|
|
124
|
+
if (result instanceof Promise) {
|
|
125
|
+
return new AsyncResult(result
|
|
126
|
+
.then((f) => new Fail(f))
|
|
127
|
+
.catch((err) => new Fail(createUnknownFailure(err))));
|
|
128
|
+
}
|
|
129
|
+
// Handle plain failure value
|
|
130
|
+
return new Fail(result);
|
|
131
|
+
}
|
|
132
|
+
// Inspection methods
|
|
133
|
+
inspect(_fn) {
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
inspectFailure(fn) {
|
|
137
|
+
fn(this.failure);
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
// Unwrapping methods
|
|
141
|
+
unwrap() {
|
|
142
|
+
return this.failure;
|
|
143
|
+
}
|
|
144
|
+
unwrapOr(defaultValue) {
|
|
145
|
+
return defaultValue;
|
|
146
|
+
}
|
|
147
|
+
expect(message) {
|
|
148
|
+
throw new globalThis.Error(`${message}: ${JSON.stringify(this.failure)}`);
|
|
149
|
+
}
|
|
150
|
+
// Pattern matching
|
|
151
|
+
match(handlers) {
|
|
152
|
+
return handlers.failed(this.failure);
|
|
153
|
+
}
|
|
154
|
+
// Type guards
|
|
155
|
+
isOk() {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
hasFailed() {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
// Generator support - allows `yield* fail(...)` to short-circuit
|
|
162
|
+
*[Symbol.iterator]() {
|
|
163
|
+
// @ts-expect-error -- This is structurally equivalent and safe
|
|
164
|
+
yield this;
|
|
165
|
+
// @ts-expect-error -- This is structurally equivalent and safe
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// AsyncResult - Wraps Promise<Result<T, E>>
|
|
171
|
+
// ============================================================================
|
|
172
|
+
/**
|
|
173
|
+
* AsyncResult wraps a Promise<Result<T, E>> and implements PromiseLike
|
|
174
|
+
* Allows chaining with .map/.mapFailure before awaiting
|
|
175
|
+
*/
|
|
176
|
+
export class AsyncResult {
|
|
177
|
+
promise;
|
|
178
|
+
constructor(promise) {
|
|
179
|
+
this.promise = promise;
|
|
180
|
+
}
|
|
181
|
+
// PromiseLike implementation - makes it awaitable
|
|
182
|
+
then(onfulfilled, onrejected) {
|
|
183
|
+
return this.promise.then(onfulfilled, onrejected);
|
|
184
|
+
}
|
|
185
|
+
// Transformation methods
|
|
186
|
+
map(fn) {
|
|
187
|
+
return new AsyncResult(this.promise.then(async (result) => {
|
|
188
|
+
if (!result.isOk()) {
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
const mapped = fn(result.value);
|
|
192
|
+
// Handle Result types
|
|
193
|
+
if (mapped instanceof Ok || mapped instanceof Fail) {
|
|
194
|
+
return mapped;
|
|
195
|
+
}
|
|
196
|
+
// Handle AsyncResult
|
|
197
|
+
if (mapped instanceof AsyncResult) {
|
|
198
|
+
return (await mapped);
|
|
199
|
+
}
|
|
200
|
+
// Handle Promise
|
|
201
|
+
if (mapped instanceof Promise) {
|
|
202
|
+
try {
|
|
203
|
+
const value = await mapped;
|
|
204
|
+
return new Ok(value);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
return new Fail(createUnknownFailure(err));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Handle plain value
|
|
211
|
+
return new Ok(mapped);
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
mapFailure(fnOrHandlers) {
|
|
215
|
+
return new AsyncResult(this.promise.then(async (result) => {
|
|
216
|
+
if (!result.hasFailed()) {
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
// Handle pattern matching with handler map
|
|
220
|
+
if (typeof fnOrHandlers === "object" &&
|
|
221
|
+
fnOrHandlers !== null &&
|
|
222
|
+
typeof fnOrHandlers !== "function") {
|
|
223
|
+
const handlers = fnOrHandlers;
|
|
224
|
+
const failure = result.failure;
|
|
225
|
+
// Check if this failure has a code property and if there's a handler for it
|
|
226
|
+
if (failure && typeof failure === "object" && "code" in failure) {
|
|
227
|
+
const handler = handlers[failure.code];
|
|
228
|
+
if (handler) {
|
|
229
|
+
const mapped = handler(failure);
|
|
230
|
+
// Apply same logic as function form below
|
|
231
|
+
if (mapped instanceof Ok || mapped instanceof Fail) {
|
|
232
|
+
return mapped;
|
|
233
|
+
}
|
|
234
|
+
if (mapped instanceof AsyncResult) {
|
|
235
|
+
return (await mapped);
|
|
236
|
+
}
|
|
237
|
+
if (mapped instanceof Promise) {
|
|
238
|
+
try {
|
|
239
|
+
const failureValue = await mapped;
|
|
240
|
+
return new Fail(failureValue);
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return new Fail(createUnknownFailure(err));
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return new Fail(mapped);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// No handler found, pass through unchanged
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
// Handle function form
|
|
253
|
+
const fn = fnOrHandlers;
|
|
254
|
+
const mapped = fn(result.failure);
|
|
255
|
+
// Handle Result types
|
|
256
|
+
if (mapped instanceof Ok || mapped instanceof Fail) {
|
|
257
|
+
return mapped;
|
|
258
|
+
}
|
|
259
|
+
// Handle AsyncResult
|
|
260
|
+
if (mapped instanceof AsyncResult) {
|
|
261
|
+
return (await mapped);
|
|
262
|
+
}
|
|
263
|
+
// Handle Promise
|
|
264
|
+
if (mapped instanceof Promise) {
|
|
265
|
+
try {
|
|
266
|
+
const failure = await mapped;
|
|
267
|
+
return new Fail(failure);
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
return new Fail(createUnknownFailure(err));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Handle plain failure value
|
|
274
|
+
return new Fail(mapped);
|
|
275
|
+
}));
|
|
276
|
+
}
|
|
277
|
+
// Inspection methods
|
|
278
|
+
inspect(fn) {
|
|
279
|
+
return new AsyncResult(this.promise.then((result) => {
|
|
280
|
+
if (result.isOk()) {
|
|
281
|
+
fn(result.value);
|
|
282
|
+
}
|
|
283
|
+
return result;
|
|
284
|
+
}));
|
|
285
|
+
}
|
|
286
|
+
inspectFailure(fn) {
|
|
287
|
+
return new AsyncResult(this.promise.then((result) => {
|
|
288
|
+
if (result.hasFailed()) {
|
|
289
|
+
fn(result.failure);
|
|
290
|
+
}
|
|
291
|
+
return result;
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
// Unwrapping methods
|
|
295
|
+
async unwrap() {
|
|
296
|
+
const result = await this.promise;
|
|
297
|
+
return result.unwrap();
|
|
298
|
+
}
|
|
299
|
+
async unwrapOr(defaultValue) {
|
|
300
|
+
const result = await this.promise;
|
|
301
|
+
return result.unwrapOr(defaultValue);
|
|
302
|
+
}
|
|
303
|
+
async expect(message) {
|
|
304
|
+
const result = await this.promise;
|
|
305
|
+
return result.expect(message);
|
|
306
|
+
}
|
|
307
|
+
// Pattern matching
|
|
308
|
+
async match(handlers) {
|
|
309
|
+
const result = await this.promise;
|
|
310
|
+
return result.match(handlers);
|
|
311
|
+
}
|
|
312
|
+
// Type guards
|
|
313
|
+
async isOk() {
|
|
314
|
+
const result = await this.promise;
|
|
315
|
+
return result.isOk();
|
|
316
|
+
}
|
|
317
|
+
async hasFailed() {
|
|
318
|
+
const result = await this.promise;
|
|
319
|
+
return result.hasFailed();
|
|
320
|
+
}
|
|
321
|
+
// Generator support - allows `yield* asyncResult` to unwrap when awaited
|
|
322
|
+
*[Symbol.iterator]() {
|
|
323
|
+
// @ts-expect-error -- The DI system will send the unwrapped value
|
|
324
|
+
return yield this;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// ============================================================================
|
|
328
|
+
// Factory Functions
|
|
329
|
+
// ============================================================================
|
|
330
|
+
/**
|
|
331
|
+
* Create a successful Result
|
|
332
|
+
*/
|
|
333
|
+
export function ok(value) {
|
|
334
|
+
return new Ok(value);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Create a structured failure
|
|
338
|
+
*/
|
|
339
|
+
export function failure(code, message, cause) {
|
|
340
|
+
return { code, message, cause };
|
|
341
|
+
}
|
|
342
|
+
export function fail(code, message, cause) {
|
|
343
|
+
if (message === undefined) {
|
|
344
|
+
// Return factory function for curried usage
|
|
345
|
+
return (msg, c) => {
|
|
346
|
+
return new Fail(failure(code, msg, c));
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
return new Fail(failure(code, message, cause));
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Reusable factory for unknown failures
|
|
353
|
+
*/
|
|
354
|
+
export const UnknownFailure = fail("UNKNOWN_FAILURE");
|
|
355
|
+
// ============================================================================
|
|
356
|
+
// Error Conversion Utilities
|
|
357
|
+
// ============================================================================
|
|
358
|
+
/**
|
|
359
|
+
* Convert unknown error to structured Failure
|
|
360
|
+
*/
|
|
361
|
+
function createUnknownFailure(err) {
|
|
362
|
+
const message = err instanceof globalThis.Error ? err.message : String(err);
|
|
363
|
+
return failure("UNKNOWN_FAILURE", message, err);
|
|
364
|
+
}
|
|
365
|
+
export function fromThrowable(fnOrPromise, failureMapper = createUnknownFailure) {
|
|
366
|
+
// Handle direct Promise
|
|
367
|
+
if (fnOrPromise instanceof Promise) {
|
|
368
|
+
return new AsyncResult(fnOrPromise
|
|
369
|
+
.then((value) => new Ok(value))
|
|
370
|
+
.catch((error) => new Fail(failureMapper(error))));
|
|
371
|
+
}
|
|
372
|
+
// Handle function
|
|
373
|
+
try {
|
|
374
|
+
const result = fnOrPromise();
|
|
375
|
+
// If function returns Promise, wrap in AsyncResult
|
|
376
|
+
if (result instanceof Promise) {
|
|
377
|
+
return new AsyncResult(result
|
|
378
|
+
.then((value) => new Ok(value))
|
|
379
|
+
.catch((error) => new Fail(failureMapper(error))));
|
|
380
|
+
}
|
|
381
|
+
// Synchronous success
|
|
382
|
+
return new Ok(result);
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
// Synchronous error
|
|
386
|
+
return new Fail(failureMapper(error));
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
export function wrapThrowable(fn, failureMapper) {
|
|
390
|
+
return (...args) => fromThrowable(() => fn(...args), failureMapper);
|
|
391
|
+
}
|
|
392
|
+
// ============================================================================
|
|
393
|
+
// Type Guards
|
|
394
|
+
// ============================================================================
|
|
395
|
+
/**
|
|
396
|
+
* Check if value is a Fail result
|
|
397
|
+
*/
|
|
398
|
+
export function hasFailed(value) {
|
|
399
|
+
return (value != null &&
|
|
400
|
+
typeof value === "object" &&
|
|
401
|
+
"_tag" in value &&
|
|
402
|
+
value._tag === "Fail");
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Check if value is an Ok result
|
|
406
|
+
*/
|
|
407
|
+
export function isOk(value) {
|
|
408
|
+
return (value != null &&
|
|
409
|
+
typeof value === "object" &&
|
|
410
|
+
"_tag" in value &&
|
|
411
|
+
value._tag === "Ok");
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Check if value is any Result (Ok or Fail)
|
|
415
|
+
*/
|
|
416
|
+
export function isResult(value) {
|
|
417
|
+
return isOk(value) || hasFailed(value);
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skyr",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
-
"files": [
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"src",
|
|
11
|
+
"package.json",
|
|
12
|
+
"README.md",
|
|
13
|
+
"!**/*.test.ts"
|
|
14
|
+
],
|
|
9
15
|
"scripts": {
|
|
10
|
-
"package": "
|
|
16
|
+
"package": "tsc",
|
|
11
17
|
"test": "bun test",
|
|
12
18
|
"check": "bun build ./src/index.ts --target=node --outfile=/dev/null",
|
|
13
19
|
"lint": "biome check .",
|
|
@@ -15,9 +21,8 @@
|
|
|
15
21
|
"format:check": "biome format ."
|
|
16
22
|
},
|
|
17
23
|
"devDependencies": {
|
|
18
|
-
"@biomejs/biome": "
|
|
24
|
+
"@biomejs/biome": "2.2.5",
|
|
19
25
|
"@types/bun": "latest",
|
|
20
|
-
"
|
|
21
|
-
"typescript": "^5.9.3"
|
|
26
|
+
"typescript": "5.9.3"
|
|
22
27
|
}
|
|
23
28
|
}
|
package/src/di.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { Fn } from "./di.js";
|
|
2
|
+
export { fn } from "./di.js";
|
|
1
3
|
export type { AsyncResult, Fail, Failure, Ok, Result } from "./result.js";
|
|
2
4
|
export {
|
|
3
5
|
fail,
|
|
@@ -7,5 +9,3 @@ export {
|
|
|
7
9
|
UnknownFailure,
|
|
8
10
|
wrapThrowable,
|
|
9
11
|
} from "./result.js";
|
|
10
|
-
export type { Fn } from "./di.js";
|
|
11
|
-
export { fn } from "./di.js";
|