@manifesto-ai/core 0.3.0 → 1.0.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/README.md +129 -499
- package/dist/core/apply.d.ts +16 -0
- package/dist/core/apply.d.ts.map +1 -0
- package/dist/core/apply.js +52 -0
- package/dist/core/apply.js.map +1 -0
- package/dist/core/compute.d.ts +17 -0
- package/dist/core/compute.d.ts.map +1 -0
- package/dist/core/compute.js +197 -0
- package/dist/core/compute.js.map +1 -0
- package/dist/core/compute.test.d.ts +2 -0
- package/dist/core/compute.test.d.ts.map +1 -0
- package/dist/core/compute.test.js +400 -0
- package/dist/core/compute.test.js.map +1 -0
- package/dist/core/explain.d.ts +14 -0
- package/dist/core/explain.d.ts.map +1 -0
- package/dist/core/explain.js +74 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/validate.d.ts +15 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +143 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/core/validate.test.d.ts +2 -0
- package/dist/core/validate.test.d.ts.map +1 -0
- package/dist/core/validate.test.js +450 -0
- package/dist/core/validate.test.js.map +1 -0
- package/dist/errors.d.ts +30 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +51 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluator/computed.d.ts +14 -0
- package/dist/evaluator/computed.d.ts.map +1 -0
- package/dist/evaluator/computed.js +57 -0
- package/dist/evaluator/computed.js.map +1 -0
- package/dist/evaluator/context.d.ts +46 -0
- package/dist/evaluator/context.d.ts.map +1 -0
- package/dist/evaluator/context.js +35 -0
- package/dist/evaluator/context.js.map +1 -0
- package/dist/evaluator/dag.d.ts +30 -0
- package/dist/evaluator/dag.d.ts.map +1 -0
- package/dist/evaluator/dag.js +121 -0
- package/dist/evaluator/dag.js.map +1 -0
- package/dist/evaluator/expr.d.ts +11 -0
- package/dist/evaluator/expr.d.ts.map +1 -0
- package/dist/evaluator/expr.js +498 -0
- package/dist/evaluator/expr.js.map +1 -0
- package/dist/evaluator/expr.test.d.ts +2 -0
- package/dist/evaluator/expr.test.d.ts.map +1 -0
- package/dist/evaluator/expr.test.js +426 -0
- package/dist/evaluator/expr.test.js.map +1 -0
- package/dist/evaluator/flow.d.ts +35 -0
- package/dist/evaluator/flow.d.ts.map +1 -0
- package/dist/evaluator/flow.js +234 -0
- package/dist/evaluator/flow.js.map +1 -0
- package/dist/evaluator/flow.test.d.ts +2 -0
- package/dist/evaluator/flow.test.d.ts.map +1 -0
- package/dist/evaluator/flow.test.js +446 -0
- package/dist/evaluator/flow.test.js.map +1 -0
- package/dist/evaluator/index.d.ts +6 -0
- package/dist/evaluator/index.d.ts.map +1 -0
- package/dist/evaluator/index.js +6 -0
- package/dist/evaluator/index.js.map +1 -0
- package/dist/factories.d.ts +20 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +43 -0
- package/dist/factories.js.map +1 -0
- package/dist/index.d.ts +46 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -45
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +13 -0
- package/dist/index.test.js.map +1 -0
- package/dist/schema/action.d.ts +14 -0
- package/dist/schema/action.d.ts.map +1 -0
- package/dist/schema/action.js +30 -0
- package/dist/schema/action.js.map +1 -0
- package/dist/schema/common.d.ts +37 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +20 -0
- package/dist/schema/common.js.map +1 -0
- package/dist/schema/computed.d.ts +23 -0
- package/dist/schema/computed.d.ts.map +1 -0
- package/dist/schema/computed.js +34 -0
- package/dist/schema/computed.js.map +1 -0
- package/dist/schema/domain.d.ts +46 -0
- package/dist/schema/domain.d.ts.map +1 -0
- package/dist/schema/domain.js +54 -0
- package/dist/schema/domain.js.map +1 -0
- package/dist/schema/expr.d.ts +260 -0
- package/dist/schema/expr.d.ts.map +1 -0
- package/dist/schema/expr.js +247 -0
- package/dist/schema/expr.js.map +1 -0
- package/dist/schema/field.d.ts +48 -0
- package/dist/schema/field.d.ts.map +1 -0
- package/dist/schema/field.js +31 -0
- package/dist/schema/field.js.map +1 -0
- package/dist/schema/flow.d.ts +103 -0
- package/dist/schema/flow.d.ts.map +1 -0
- package/dist/schema/flow.js +82 -0
- package/dist/schema/flow.js.map +1 -0
- package/dist/schema/index.d.ts +11 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +22 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/patch.d.ts +59 -0
- package/dist/schema/patch.d.ts.map +1 -0
- package/dist/schema/patch.js +60 -0
- package/dist/schema/patch.js.map +1 -0
- package/dist/schema/result.d.ts +130 -0
- package/dist/schema/result.d.ts.map +1 -0
- package/dist/schema/result.js +90 -0
- package/dist/schema/result.js.map +1 -0
- package/dist/schema/snapshot.d.ts +151 -0
- package/dist/schema/snapshot.d.ts.map +1 -0
- package/dist/schema/snapshot.js +156 -0
- package/dist/schema/snapshot.js.map +1 -0
- package/dist/schema/trace.d.ts +87 -0
- package/dist/schema/trace.d.ts.map +1 -0
- package/dist/schema/trace.js +79 -0
- package/dist/schema/trace.js.map +1 -0
- package/dist/utils/canonical.d.ts +29 -0
- package/dist/utils/canonical.d.ts.map +1 -0
- package/dist/utils/canonical.js +56 -0
- package/dist/utils/canonical.js.map +1 -0
- package/dist/utils/canonical.test.d.ts +2 -0
- package/dist/utils/canonical.test.d.ts.map +1 -0
- package/dist/utils/canonical.test.js +153 -0
- package/dist/utils/canonical.test.js.map +1 -0
- package/dist/utils/hash.d.ts +20 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +38 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/hash.test.d.ts +2 -0
- package/dist/utils/hash.test.d.ts.map +1 -0
- package/dist/utils/hash.test.js +146 -0
- package/dist/utils/hash.test.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path.d.ts +40 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +132 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/path.test.d.ts +2 -0
- package/dist/utils/path.test.d.ts.map +1 -0
- package/dist/utils/path.test.js +191 -0
- package/dist/utils/path.test.js.map +1 -0
- package/package.json +25 -39
- package/LICENSE +0 -21
- package/dist/dag/graph.d.ts +0 -62
- package/dist/dag/graph.d.ts.map +0 -1
- package/dist/dag/graph.js +0 -244
- package/dist/dag/graph.js.map +0 -1
- package/dist/dag/index.d.ts +0 -4
- package/dist/dag/index.d.ts.map +0 -1
- package/dist/dag/index.js +0 -4
- package/dist/dag/index.js.map +0 -1
- package/dist/dag/propagation.d.ts +0 -58
- package/dist/dag/propagation.d.ts.map +0 -1
- package/dist/dag/propagation.js +0 -224
- package/dist/dag/propagation.js.map +0 -1
- package/dist/dag/topological.d.ts +0 -33
- package/dist/dag/topological.d.ts.map +0 -1
- package/dist/dag/topological.js +0 -173
- package/dist/dag/topological.js.map +0 -1
- package/dist/domain/define.d.ts +0 -82
- package/dist/domain/define.d.ts.map +0 -1
- package/dist/domain/define.js +0 -105
- package/dist/domain/define.js.map +0 -1
- package/dist/domain/index.d.ts +0 -4
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js +0 -4
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/types.d.ts +0 -203
- package/dist/domain/types.d.ts.map +0 -1
- package/dist/domain/types.js +0 -2
- package/dist/domain/types.js.map +0 -1
- package/dist/domain/validate.d.ts +0 -17
- package/dist/domain/validate.d.ts.map +0 -1
- package/dist/domain/validate.js +0 -204
- package/dist/domain/validate.js.map +0 -1
- package/dist/effect/index.d.ts +0 -4
- package/dist/effect/index.d.ts.map +0 -1
- package/dist/effect/index.js +0 -4
- package/dist/effect/index.js.map +0 -1
- package/dist/effect/result.d.ts +0 -100
- package/dist/effect/result.d.ts.map +0 -1
- package/dist/effect/result.js +0 -163
- package/dist/effect/result.js.map +0 -1
- package/dist/effect/runner.d.ts +0 -98
- package/dist/effect/runner.d.ts.map +0 -1
- package/dist/effect/runner.js +0 -321
- package/dist/effect/runner.js.map +0 -1
- package/dist/effect/types.d.ts +0 -169
- package/dist/effect/types.d.ts.map +0 -1
- package/dist/effect/types.js +0 -28
- package/dist/effect/types.js.map +0 -1
- package/dist/expression/analyzer.d.ts +0 -42
- package/dist/expression/analyzer.d.ts.map +0 -1
- package/dist/expression/analyzer.js +0 -166
- package/dist/expression/analyzer.js.map +0 -1
- package/dist/expression/evaluator.d.ts +0 -16
- package/dist/expression/evaluator.d.ts.map +0 -1
- package/dist/expression/evaluator.js +0 -382
- package/dist/expression/evaluator.js.map +0 -1
- package/dist/expression/index.d.ts +0 -5
- package/dist/expression/index.d.ts.map +0 -1
- package/dist/expression/index.js +0 -5
- package/dist/expression/index.js.map +0 -1
- package/dist/expression/parser.d.ts +0 -37
- package/dist/expression/parser.d.ts.map +0 -1
- package/dist/expression/parser.js +0 -201
- package/dist/expression/parser.js.map +0 -1
- package/dist/expression/types.d.ts +0 -123
- package/dist/expression/types.d.ts.map +0 -1
- package/dist/expression/types.js +0 -10
- package/dist/expression/types.js.map +0 -1
- package/dist/policy/field-policy.d.ts +0 -63
- package/dist/policy/field-policy.d.ts.map +0 -1
- package/dist/policy/field-policy.js +0 -138
- package/dist/policy/field-policy.js.map +0 -1
- package/dist/policy/index.d.ts +0 -3
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -3
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/precondition.d.ts +0 -58
- package/dist/policy/precondition.d.ts.map +0 -1
- package/dist/policy/precondition.js +0 -115
- package/dist/policy/precondition.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -4
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -4
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/runtime.d.ts +0 -94
- package/dist/runtime/runtime.d.ts.map +0 -1
- package/dist/runtime/runtime.js +0 -294
- package/dist/runtime/runtime.js.map +0 -1
- package/dist/runtime/snapshot.d.ts +0 -39
- package/dist/runtime/snapshot.d.ts.map +0 -1
- package/dist/runtime/snapshot.js +0 -264
- package/dist/runtime/snapshot.js.map +0 -1
- package/dist/runtime/subscription.d.ts +0 -82
- package/dist/runtime/subscription.d.ts.map +0 -1
- package/dist/runtime/subscription.js +0 -222
- package/dist/runtime/subscription.js.map +0 -1
- package/dist/schema/integration.d.ts +0 -89
- package/dist/schema/integration.d.ts.map +0 -1
- package/dist/schema/integration.js +0 -171
- package/dist/schema/integration.js.map +0 -1
- package/dist/schema/validation.d.ts +0 -51
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/schema/validation.js +0 -212
- package/dist/schema/validation.js.map +0 -1
package/dist/effect/result.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import type { Effect } from './types.js';
|
|
2
|
-
import type { EvaluationContext } from '../expression/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Result: 성공/실패를 명시적으로 표현
|
|
5
|
-
*/
|
|
6
|
-
export type Result<T, E = EffectError> = {
|
|
7
|
-
ok: true;
|
|
8
|
-
value: T;
|
|
9
|
-
} | {
|
|
10
|
-
ok: false;
|
|
11
|
-
error: E;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* EffectError: Effect 실행 에러
|
|
15
|
-
*/
|
|
16
|
-
export type EffectError = {
|
|
17
|
-
_tag: 'EffectError';
|
|
18
|
-
/** 실패한 Effect */
|
|
19
|
-
effect: Effect;
|
|
20
|
-
/** 에러 원인 */
|
|
21
|
-
cause: Error;
|
|
22
|
-
/** 실패 시점 컨텍스트 */
|
|
23
|
-
context?: EvaluationContext;
|
|
24
|
-
/** 에러 코드 (있으면) */
|
|
25
|
-
code?: string;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* 성공 Result 생성
|
|
29
|
-
*/
|
|
30
|
-
export declare function ok<T>(value: T): Result<T, never>;
|
|
31
|
-
/**
|
|
32
|
-
* 실패 Result 생성
|
|
33
|
-
*/
|
|
34
|
-
export declare function err<E>(error: E): Result<never, E>;
|
|
35
|
-
/**
|
|
36
|
-
* EffectError 생성
|
|
37
|
-
*/
|
|
38
|
-
export declare function effectError(effect: Effect, cause: Error, options?: {
|
|
39
|
-
context?: EvaluationContext;
|
|
40
|
-
code?: string;
|
|
41
|
-
}): EffectError;
|
|
42
|
-
/**
|
|
43
|
-
* Result가 성공인지 확인
|
|
44
|
-
*/
|
|
45
|
-
export declare function isOk<T, E>(result: Result<T, E>): result is {
|
|
46
|
-
ok: true;
|
|
47
|
-
value: T;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Result가 실패인지 확인
|
|
51
|
-
*/
|
|
52
|
-
export declare function isErr<T, E>(result: Result<T, E>): result is {
|
|
53
|
-
ok: false;
|
|
54
|
-
error: E;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Result에서 값 추출 (실패 시 예외)
|
|
58
|
-
*/
|
|
59
|
-
export declare function unwrap<T, E>(result: Result<T, E>): T;
|
|
60
|
-
/**
|
|
61
|
-
* Result에서 값 추출 (실패 시 기본값)
|
|
62
|
-
*/
|
|
63
|
-
export declare function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T;
|
|
64
|
-
/**
|
|
65
|
-
* Result에서 에러 추출 (성공 시 undefined)
|
|
66
|
-
*/
|
|
67
|
-
export declare function unwrapErr<T, E>(result: Result<T, E>): E | undefined;
|
|
68
|
-
/**
|
|
69
|
-
* Result.map: 성공 값 변환
|
|
70
|
-
*/
|
|
71
|
-
export declare function map<T, U, E>(result: Result<T, E>, fn: (value: T) => U): Result<U, E>;
|
|
72
|
-
/**
|
|
73
|
-
* Result.mapErr: 에러 값 변환
|
|
74
|
-
*/
|
|
75
|
-
export declare function mapErr<T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F>;
|
|
76
|
-
/**
|
|
77
|
-
* Result.flatMap (bind/chain): 연쇄 연산
|
|
78
|
-
*/
|
|
79
|
-
export declare function flatMap<T, U, E>(result: Result<T, E>, fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
80
|
-
/**
|
|
81
|
-
* Result.flatten: 중첩 Result 평탄화
|
|
82
|
-
*/
|
|
83
|
-
export declare function flatten<T, E>(result: Result<Result<T, E>, E>): Result<T, E>;
|
|
84
|
-
/**
|
|
85
|
-
* 여러 Result를 하나로 합침 (모두 성공해야 성공)
|
|
86
|
-
*/
|
|
87
|
-
export declare function all<T, E>(results: Result<T, E>[]): Result<T[], E>;
|
|
88
|
-
/**
|
|
89
|
-
* 첫 번째 성공 Result 반환
|
|
90
|
-
*/
|
|
91
|
-
export declare function any<T, E>(results: Result<T, E>[]): Result<T, E[]>;
|
|
92
|
-
/**
|
|
93
|
-
* Promise를 Result로 변환
|
|
94
|
-
*/
|
|
95
|
-
export declare function fromPromise<T>(promise: Promise<T>, mapError?: (e: unknown) => Error): Promise<Result<T, Error>>;
|
|
96
|
-
/**
|
|
97
|
-
* try-catch를 Result로 변환
|
|
98
|
-
*/
|
|
99
|
-
export declare function tryCatch<T>(fn: () => T, mapError?: (e: unknown) => Error): Result<T, Error>;
|
|
100
|
-
//# sourceMappingURL=result.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/effect/result.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/result.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// Result Constructors
|
|
3
|
-
// =============================================================================
|
|
4
|
-
/**
|
|
5
|
-
* 성공 Result 생성
|
|
6
|
-
*/
|
|
7
|
-
export function ok(value) {
|
|
8
|
-
return { ok: true, value };
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* 실패 Result 생성
|
|
12
|
-
*/
|
|
13
|
-
export function err(error) {
|
|
14
|
-
return { ok: false, error };
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* EffectError 생성
|
|
18
|
-
*/
|
|
19
|
-
export function effectError(effect, cause, options) {
|
|
20
|
-
return {
|
|
21
|
-
_tag: 'EffectError',
|
|
22
|
-
effect,
|
|
23
|
-
cause,
|
|
24
|
-
context: options?.context,
|
|
25
|
-
code: options?.code,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
// =============================================================================
|
|
29
|
-
// Result Utilities
|
|
30
|
-
// =============================================================================
|
|
31
|
-
/**
|
|
32
|
-
* Result가 성공인지 확인
|
|
33
|
-
*/
|
|
34
|
-
export function isOk(result) {
|
|
35
|
-
return result.ok;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Result가 실패인지 확인
|
|
39
|
-
*/
|
|
40
|
-
export function isErr(result) {
|
|
41
|
-
return !result.ok;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Result에서 값 추출 (실패 시 예외)
|
|
45
|
-
*/
|
|
46
|
-
export function unwrap(result) {
|
|
47
|
-
if (result.ok) {
|
|
48
|
-
return result.value;
|
|
49
|
-
}
|
|
50
|
-
throw result.error;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Result에서 값 추출 (실패 시 기본값)
|
|
54
|
-
*/
|
|
55
|
-
export function unwrapOr(result, defaultValue) {
|
|
56
|
-
if (result.ok) {
|
|
57
|
-
return result.value;
|
|
58
|
-
}
|
|
59
|
-
return defaultValue;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Result에서 에러 추출 (성공 시 undefined)
|
|
63
|
-
*/
|
|
64
|
-
export function unwrapErr(result) {
|
|
65
|
-
if (!result.ok) {
|
|
66
|
-
return result.error;
|
|
67
|
-
}
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
// =============================================================================
|
|
71
|
-
// Result Transformations (Monadic Operations)
|
|
72
|
-
// =============================================================================
|
|
73
|
-
/**
|
|
74
|
-
* Result.map: 성공 값 변환
|
|
75
|
-
*/
|
|
76
|
-
export function map(result, fn) {
|
|
77
|
-
if (result.ok) {
|
|
78
|
-
return ok(fn(result.value));
|
|
79
|
-
}
|
|
80
|
-
return result;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Result.mapErr: 에러 값 변환
|
|
84
|
-
*/
|
|
85
|
-
export function mapErr(result, fn) {
|
|
86
|
-
if (!result.ok) {
|
|
87
|
-
return err(fn(result.error));
|
|
88
|
-
}
|
|
89
|
-
return result;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Result.flatMap (bind/chain): 연쇄 연산
|
|
93
|
-
*/
|
|
94
|
-
export function flatMap(result, fn) {
|
|
95
|
-
if (result.ok) {
|
|
96
|
-
return fn(result.value);
|
|
97
|
-
}
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Result.flatten: 중첩 Result 평탄화
|
|
102
|
-
*/
|
|
103
|
-
export function flatten(result) {
|
|
104
|
-
if (result.ok) {
|
|
105
|
-
return result.value;
|
|
106
|
-
}
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
// =============================================================================
|
|
110
|
-
// Result Combinators
|
|
111
|
-
// =============================================================================
|
|
112
|
-
/**
|
|
113
|
-
* 여러 Result를 하나로 합침 (모두 성공해야 성공)
|
|
114
|
-
*/
|
|
115
|
-
export function all(results) {
|
|
116
|
-
const values = [];
|
|
117
|
-
for (const result of results) {
|
|
118
|
-
if (!result.ok) {
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
values.push(result.value);
|
|
122
|
-
}
|
|
123
|
-
return ok(values);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* 첫 번째 성공 Result 반환
|
|
127
|
-
*/
|
|
128
|
-
export function any(results) {
|
|
129
|
-
const errors = [];
|
|
130
|
-
for (const result of results) {
|
|
131
|
-
if (result.ok) {
|
|
132
|
-
return result;
|
|
133
|
-
}
|
|
134
|
-
errors.push(result.error);
|
|
135
|
-
}
|
|
136
|
-
return err(errors);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Promise를 Result로 변환
|
|
140
|
-
*/
|
|
141
|
-
export async function fromPromise(promise, mapError) {
|
|
142
|
-
try {
|
|
143
|
-
const value = await promise;
|
|
144
|
-
return ok(value);
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
const error = mapError ? mapError(e) : e instanceof Error ? e : new Error(String(e));
|
|
148
|
-
return err(error);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* try-catch를 Result로 변환
|
|
153
|
-
*/
|
|
154
|
-
export function tryCatch(fn, mapError) {
|
|
155
|
-
try {
|
|
156
|
-
return ok(fn());
|
|
157
|
-
}
|
|
158
|
-
catch (e) {
|
|
159
|
-
const error = mapError ? mapError(e) : e instanceof Error ? e : new Error(String(e));
|
|
160
|
-
return err(error);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/effect/result.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/runner.d.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { Effect, SetValueEffect, SetStateEffect, ApiCallEffect, NavigateEffect, DelayEffect, SequenceEffect, ParallelEffect, ConditionalEffect, CatchEffect, EmitEventEffect } from './types.js';
|
|
2
|
-
import type { Result } from './result.js';
|
|
3
|
-
import type { EvaluationContext, Expression } from '../expression/types.js';
|
|
4
|
-
import type { SemanticPath } from '../domain/types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Effect 실행 핸들러
|
|
7
|
-
*/
|
|
8
|
-
export type EffectHandler = {
|
|
9
|
-
/** 데이터 값 설정 */
|
|
10
|
-
setValue: (path: SemanticPath, value: unknown) => void;
|
|
11
|
-
/** 상태 값 설정 */
|
|
12
|
-
setState: (path: SemanticPath, value: unknown) => void;
|
|
13
|
-
/** API 호출 */
|
|
14
|
-
apiCall: (request: {
|
|
15
|
-
endpoint: string;
|
|
16
|
-
method: string;
|
|
17
|
-
body?: unknown;
|
|
18
|
-
headers?: Record<string, string>;
|
|
19
|
-
query?: Record<string, unknown>;
|
|
20
|
-
timeout?: number;
|
|
21
|
-
}) => Promise<unknown>;
|
|
22
|
-
/** 네비게이션 */
|
|
23
|
-
navigate: (to: string, mode?: 'push' | 'replace') => void;
|
|
24
|
-
/** 이벤트 발행 */
|
|
25
|
-
emitEvent: (channel: string, payload: unknown) => void;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Effect Runner 설정
|
|
29
|
-
*/
|
|
30
|
-
export type EffectRunnerConfig = {
|
|
31
|
-
handler: EffectHandler;
|
|
32
|
-
context: EvaluationContext;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Effect 실행 결과
|
|
36
|
-
*/
|
|
37
|
-
export type EffectResult = Result<unknown, import('./result.js').EffectError>;
|
|
38
|
-
/**
|
|
39
|
-
* Effect 실행
|
|
40
|
-
*/
|
|
41
|
-
export declare function runEffect(effect: Effect, config: EffectRunnerConfig): Promise<EffectResult>;
|
|
42
|
-
/**
|
|
43
|
-
* SetValue Effect 생성
|
|
44
|
-
*/
|
|
45
|
-
export declare function setValue(path: SemanticPath, value: Expression, description: string): SetValueEffect;
|
|
46
|
-
/**
|
|
47
|
-
* SetState Effect 생성
|
|
48
|
-
*/
|
|
49
|
-
export declare function setState(path: SemanticPath, value: Expression, description: string): SetStateEffect;
|
|
50
|
-
/**
|
|
51
|
-
* ApiCall Effect 생성
|
|
52
|
-
*/
|
|
53
|
-
export declare function apiCall(options: Omit<ApiCallEffect, '_tag'>): ApiCallEffect;
|
|
54
|
-
/**
|
|
55
|
-
* Navigate Effect 생성
|
|
56
|
-
*/
|
|
57
|
-
export declare function navigate(to: string | Expression, options?: {
|
|
58
|
-
mode?: 'push' | 'replace';
|
|
59
|
-
description?: string;
|
|
60
|
-
}): NavigateEffect;
|
|
61
|
-
/**
|
|
62
|
-
* Delay Effect 생성
|
|
63
|
-
*/
|
|
64
|
-
export declare function delay(ms: number, description?: string): DelayEffect;
|
|
65
|
-
/**
|
|
66
|
-
* Sequence Effect 생성
|
|
67
|
-
*/
|
|
68
|
-
export declare function sequence(effects: Effect[], description?: string): SequenceEffect;
|
|
69
|
-
/**
|
|
70
|
-
* Parallel Effect 생성
|
|
71
|
-
*/
|
|
72
|
-
export declare function parallel(effects: Effect[], options?: {
|
|
73
|
-
waitAll?: boolean;
|
|
74
|
-
description?: string;
|
|
75
|
-
}): ParallelEffect;
|
|
76
|
-
/**
|
|
77
|
-
* Conditional Effect 생성
|
|
78
|
-
*/
|
|
79
|
-
export declare function conditional(options: {
|
|
80
|
-
condition: Expression;
|
|
81
|
-
then: Effect;
|
|
82
|
-
else?: Effect;
|
|
83
|
-
description?: string;
|
|
84
|
-
}): ConditionalEffect;
|
|
85
|
-
/**
|
|
86
|
-
* Catch Effect 생성
|
|
87
|
-
*/
|
|
88
|
-
export declare function catchEffect(options: {
|
|
89
|
-
try: Effect;
|
|
90
|
-
catch: Effect;
|
|
91
|
-
finally?: Effect;
|
|
92
|
-
description?: string;
|
|
93
|
-
}): CatchEffect;
|
|
94
|
-
/**
|
|
95
|
-
* EmitEvent Effect 생성
|
|
96
|
-
*/
|
|
97
|
-
export declare function emitEvent(channel: 'ui' | 'domain' | 'analytics', payload: EmitEventEffect['payload'], description?: string): EmitEventEffect;
|
|
98
|
-
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/effect/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/runner.js
DELETED
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
import { ok, err, effectError } from './result.js';
|
|
2
|
-
import { evaluate } from '../expression/evaluator.js';
|
|
3
|
-
/**
|
|
4
|
-
* Effect 실행
|
|
5
|
-
*/
|
|
6
|
-
export async function runEffect(effect, config) {
|
|
7
|
-
const { handler, context } = config;
|
|
8
|
-
try {
|
|
9
|
-
switch (effect._tag) {
|
|
10
|
-
case 'SetValue':
|
|
11
|
-
return await runSetValue(effect, handler, context);
|
|
12
|
-
case 'SetState':
|
|
13
|
-
return await runSetState(effect, handler, context);
|
|
14
|
-
case 'ApiCall':
|
|
15
|
-
return await runApiCall(effect, handler, context);
|
|
16
|
-
case 'Navigate':
|
|
17
|
-
return await runNavigate(effect, handler, context);
|
|
18
|
-
case 'Delay':
|
|
19
|
-
return await runDelay(effect);
|
|
20
|
-
case 'Sequence':
|
|
21
|
-
return await runSequence(effect, config);
|
|
22
|
-
case 'Parallel':
|
|
23
|
-
return await runParallel(effect, config);
|
|
24
|
-
case 'Conditional':
|
|
25
|
-
return await runConditional(effect, config);
|
|
26
|
-
case 'Catch':
|
|
27
|
-
return await runCatch(effect, config);
|
|
28
|
-
case 'EmitEvent':
|
|
29
|
-
return await runEmitEvent(effect, handler);
|
|
30
|
-
default:
|
|
31
|
-
return err(effectError(effect, new Error(`Unknown effect type: ${effect._tag}`)));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
return err(effectError(effect, e instanceof Error ? e : new Error(String(e)), { context }));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* SetValue 실행
|
|
40
|
-
*/
|
|
41
|
-
async function runSetValue(effect, handler, context) {
|
|
42
|
-
const valueResult = evaluate(effect.value, context);
|
|
43
|
-
if (!valueResult.ok) {
|
|
44
|
-
return err(effectError(effect, new Error(valueResult.error)));
|
|
45
|
-
}
|
|
46
|
-
handler.setValue(effect.path, valueResult.value);
|
|
47
|
-
return ok(undefined);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* SetState 실행
|
|
51
|
-
*/
|
|
52
|
-
async function runSetState(effect, handler, context) {
|
|
53
|
-
const valueResult = evaluate(effect.value, context);
|
|
54
|
-
if (!valueResult.ok) {
|
|
55
|
-
return err(effectError(effect, new Error(valueResult.error)));
|
|
56
|
-
}
|
|
57
|
-
handler.setState(effect.path, valueResult.value);
|
|
58
|
-
return ok(undefined);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* ApiCall 실행
|
|
62
|
-
*/
|
|
63
|
-
async function runApiCall(effect, handler, context) {
|
|
64
|
-
// 엔드포인트 평가
|
|
65
|
-
let endpoint;
|
|
66
|
-
if (typeof effect.endpoint === 'string') {
|
|
67
|
-
endpoint = effect.endpoint;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const endpointResult = evaluate(effect.endpoint, context);
|
|
71
|
-
if (!endpointResult.ok) {
|
|
72
|
-
return err(effectError(effect, new Error(endpointResult.error)));
|
|
73
|
-
}
|
|
74
|
-
endpoint = String(endpointResult.value);
|
|
75
|
-
}
|
|
76
|
-
// body 평가
|
|
77
|
-
let body = undefined;
|
|
78
|
-
if (effect.body) {
|
|
79
|
-
const evaluatedBody = {};
|
|
80
|
-
for (const [key, expr] of Object.entries(effect.body)) {
|
|
81
|
-
const result = evaluate(expr, context);
|
|
82
|
-
if (!result.ok) {
|
|
83
|
-
return err(effectError(effect, new Error(result.error)));
|
|
84
|
-
}
|
|
85
|
-
evaluatedBody[key] = result.value;
|
|
86
|
-
}
|
|
87
|
-
body = evaluatedBody;
|
|
88
|
-
}
|
|
89
|
-
// query 평가
|
|
90
|
-
let query = undefined;
|
|
91
|
-
if (effect.query) {
|
|
92
|
-
query = {};
|
|
93
|
-
for (const [key, expr] of Object.entries(effect.query)) {
|
|
94
|
-
const result = evaluate(expr, context);
|
|
95
|
-
if (!result.ok) {
|
|
96
|
-
return err(effectError(effect, new Error(result.error)));
|
|
97
|
-
}
|
|
98
|
-
query[key] = result.value;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
try {
|
|
102
|
-
const response = await handler.apiCall({
|
|
103
|
-
endpoint,
|
|
104
|
-
method: effect.method,
|
|
105
|
-
body,
|
|
106
|
-
headers: effect.headers,
|
|
107
|
-
query,
|
|
108
|
-
timeout: effect.timeout,
|
|
109
|
-
});
|
|
110
|
-
return ok(response);
|
|
111
|
-
}
|
|
112
|
-
catch (e) {
|
|
113
|
-
return err(effectError(effect, e instanceof Error ? e : new Error(String(e)), {
|
|
114
|
-
code: 'API_CALL_FAILED',
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Navigate 실행
|
|
120
|
-
*/
|
|
121
|
-
async function runNavigate(effect, handler, context) {
|
|
122
|
-
let to;
|
|
123
|
-
if (typeof effect.to === 'string') {
|
|
124
|
-
to = effect.to;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
const toResult = evaluate(effect.to, context);
|
|
128
|
-
if (!toResult.ok) {
|
|
129
|
-
return err(effectError(effect, new Error(toResult.error)));
|
|
130
|
-
}
|
|
131
|
-
to = String(toResult.value);
|
|
132
|
-
}
|
|
133
|
-
handler.navigate(to, effect.mode);
|
|
134
|
-
return ok(undefined);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Delay 실행
|
|
138
|
-
*/
|
|
139
|
-
async function runDelay(effect) {
|
|
140
|
-
await new Promise((resolve) => setTimeout(resolve, effect.ms));
|
|
141
|
-
return ok(undefined);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Sequence 실행
|
|
145
|
-
*/
|
|
146
|
-
async function runSequence(effect, config) {
|
|
147
|
-
let lastResult = undefined;
|
|
148
|
-
for (const childEffect of effect.effects) {
|
|
149
|
-
const result = await runEffect(childEffect, config);
|
|
150
|
-
if (!result.ok) {
|
|
151
|
-
return result;
|
|
152
|
-
}
|
|
153
|
-
lastResult = result.value;
|
|
154
|
-
}
|
|
155
|
-
return ok(lastResult);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Parallel 실행
|
|
159
|
-
*/
|
|
160
|
-
async function runParallel(effect, config) {
|
|
161
|
-
const promises = effect.effects.map((e) => runEffect(e, config));
|
|
162
|
-
if (effect.waitAll !== false) {
|
|
163
|
-
const results = await Promise.all(promises);
|
|
164
|
-
const values = [];
|
|
165
|
-
for (const result of results) {
|
|
166
|
-
if (!result.ok) {
|
|
167
|
-
return result;
|
|
168
|
-
}
|
|
169
|
-
values.push(result.value);
|
|
170
|
-
}
|
|
171
|
-
return ok(values);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
// 하나라도 완료되면 반환
|
|
175
|
-
const result = await Promise.race(promises);
|
|
176
|
-
return result;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Conditional 실행
|
|
181
|
-
*/
|
|
182
|
-
async function runConditional(effect, config) {
|
|
183
|
-
const conditionResult = evaluate(effect.condition, config.context);
|
|
184
|
-
if (!conditionResult.ok) {
|
|
185
|
-
return err(effectError(effect, new Error(conditionResult.error)));
|
|
186
|
-
}
|
|
187
|
-
if (conditionResult.value) {
|
|
188
|
-
return runEffect(effect.then, config);
|
|
189
|
-
}
|
|
190
|
-
else if (effect.else) {
|
|
191
|
-
return runEffect(effect.else, config);
|
|
192
|
-
}
|
|
193
|
-
return ok(undefined);
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Catch 실행
|
|
197
|
-
*/
|
|
198
|
-
async function runCatch(effect, config) {
|
|
199
|
-
let result;
|
|
200
|
-
try {
|
|
201
|
-
result = await runEffect(effect.try, config);
|
|
202
|
-
}
|
|
203
|
-
catch (e) {
|
|
204
|
-
result = err(effectError(effect.try, e instanceof Error ? e : new Error(String(e))));
|
|
205
|
-
}
|
|
206
|
-
// 에러 발생 시 catch 실행
|
|
207
|
-
if (!result.ok) {
|
|
208
|
-
result = await runEffect(effect.catch, config);
|
|
209
|
-
}
|
|
210
|
-
// finally 항상 실행
|
|
211
|
-
if (effect.finally) {
|
|
212
|
-
await runEffect(effect.finally, config);
|
|
213
|
-
}
|
|
214
|
-
return result;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* EmitEvent 실행
|
|
218
|
-
*/
|
|
219
|
-
async function runEmitEvent(effect, handler) {
|
|
220
|
-
handler.emitEvent(effect.channel, effect.payload);
|
|
221
|
-
return ok(undefined);
|
|
222
|
-
}
|
|
223
|
-
// =============================================================================
|
|
224
|
-
// Effect Builders
|
|
225
|
-
// =============================================================================
|
|
226
|
-
/**
|
|
227
|
-
* SetValue Effect 생성
|
|
228
|
-
*/
|
|
229
|
-
export function setValue(path, value, description) {
|
|
230
|
-
return { _tag: 'SetValue', path, value, description };
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* SetState Effect 생성
|
|
234
|
-
*/
|
|
235
|
-
export function setState(path, value, description) {
|
|
236
|
-
return { _tag: 'SetState', path, value, description };
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* ApiCall Effect 생성
|
|
240
|
-
*/
|
|
241
|
-
export function apiCall(options) {
|
|
242
|
-
return { _tag: 'ApiCall', ...options };
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Navigate Effect 생성
|
|
246
|
-
*/
|
|
247
|
-
export function navigate(to, options) {
|
|
248
|
-
return {
|
|
249
|
-
_tag: 'Navigate',
|
|
250
|
-
to,
|
|
251
|
-
mode: options?.mode,
|
|
252
|
-
description: options?.description ?? `Navigate to ${typeof to === 'string' ? to : 'computed path'}`,
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Delay Effect 생성
|
|
257
|
-
*/
|
|
258
|
-
export function delay(ms, description) {
|
|
259
|
-
return {
|
|
260
|
-
_tag: 'Delay',
|
|
261
|
-
ms,
|
|
262
|
-
description: description ?? `Wait ${ms}ms`,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Sequence Effect 생성
|
|
267
|
-
*/
|
|
268
|
-
export function sequence(effects, description) {
|
|
269
|
-
return {
|
|
270
|
-
_tag: 'Sequence',
|
|
271
|
-
effects,
|
|
272
|
-
description: description ?? `Sequence of ${effects.length} effects`,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Parallel Effect 생성
|
|
277
|
-
*/
|
|
278
|
-
export function parallel(effects, options) {
|
|
279
|
-
return {
|
|
280
|
-
_tag: 'Parallel',
|
|
281
|
-
effects,
|
|
282
|
-
waitAll: options?.waitAll,
|
|
283
|
-
description: options?.description ?? `Parallel execution of ${effects.length} effects`,
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* Conditional Effect 생성
|
|
288
|
-
*/
|
|
289
|
-
export function conditional(options) {
|
|
290
|
-
return {
|
|
291
|
-
_tag: 'Conditional',
|
|
292
|
-
condition: options.condition,
|
|
293
|
-
then: options.then,
|
|
294
|
-
else: options.else,
|
|
295
|
-
description: options.description ?? 'Conditional effect',
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Catch Effect 생성
|
|
300
|
-
*/
|
|
301
|
-
export function catchEffect(options) {
|
|
302
|
-
return {
|
|
303
|
-
_tag: 'Catch',
|
|
304
|
-
try: options.try,
|
|
305
|
-
catch: options.catch,
|
|
306
|
-
finally: options.finally,
|
|
307
|
-
description: options.description ?? 'Try-catch effect',
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* EmitEvent Effect 생성
|
|
312
|
-
*/
|
|
313
|
-
export function emitEvent(channel, payload, description) {
|
|
314
|
-
return {
|
|
315
|
-
_tag: 'EmitEvent',
|
|
316
|
-
channel,
|
|
317
|
-
payload,
|
|
318
|
-
description: description ?? `Emit ${payload.type} event`,
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
//# sourceMappingURL=runner.js.map
|