@manifesto-ai/core 0.3.0 → 1.3.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.
Files changed (279) hide show
  1. package/README.md +148 -498
  2. package/dist/__tests__/apply.test.d.ts +2 -0
  3. package/dist/__tests__/apply.test.d.ts.map +1 -0
  4. package/dist/__tests__/apply.test.js +144 -0
  5. package/dist/__tests__/apply.test.js.map +1 -0
  6. package/dist/__tests__/jcs.test.d.ts +2 -0
  7. package/dist/__tests__/jcs.test.d.ts.map +1 -0
  8. package/dist/__tests__/jcs.test.js +45 -0
  9. package/dist/__tests__/jcs.test.js.map +1 -0
  10. package/dist/core/apply.d.ts +17 -0
  11. package/dist/core/apply.d.ts.map +1 -0
  12. package/dist/core/apply.js +130 -0
  13. package/dist/core/apply.js.map +1 -0
  14. package/dist/core/compute.d.ts +17 -0
  15. package/dist/core/compute.d.ts.map +1 -0
  16. package/dist/core/compute.js +287 -0
  17. package/dist/core/compute.js.map +1 -0
  18. package/dist/core/compute.test.d.ts +2 -0
  19. package/dist/core/compute.test.d.ts.map +1 -0
  20. package/dist/core/compute.test.js +633 -0
  21. package/dist/core/compute.test.js.map +1 -0
  22. package/dist/core/explain.d.ts +14 -0
  23. package/dist/core/explain.d.ts.map +1 -0
  24. package/dist/core/explain.js +78 -0
  25. package/dist/core/explain.js.map +1 -0
  26. package/dist/core/index.d.ts +5 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/core/index.js +5 -0
  29. package/dist/core/index.js.map +1 -0
  30. package/dist/core/validate.d.ts +16 -0
  31. package/dist/core/validate.d.ts.map +1 -0
  32. package/dist/core/validate.js +361 -0
  33. package/dist/core/validate.js.map +1 -0
  34. package/dist/core/validate.test.d.ts +2 -0
  35. package/dist/core/validate.test.d.ts.map +1 -0
  36. package/dist/core/validate.test.js +638 -0
  37. package/dist/core/validate.test.js.map +1 -0
  38. package/dist/core/validation-utils.d.ts +20 -0
  39. package/dist/core/validation-utils.d.ts.map +1 -0
  40. package/dist/core/validation-utils.js +289 -0
  41. package/dist/core/validation-utils.js.map +1 -0
  42. package/dist/errors.d.ts +30 -0
  43. package/dist/errors.d.ts.map +1 -0
  44. package/dist/errors.js +51 -0
  45. package/dist/errors.js.map +1 -0
  46. package/dist/evaluator/computed.d.ts +14 -0
  47. package/dist/evaluator/computed.d.ts.map +1 -0
  48. package/dist/evaluator/computed.js +60 -0
  49. package/dist/evaluator/computed.js.map +1 -0
  50. package/dist/evaluator/context.d.ts +59 -0
  51. package/dist/evaluator/context.d.ts.map +1 -0
  52. package/dist/evaluator/context.js +41 -0
  53. package/dist/evaluator/context.js.map +1 -0
  54. package/dist/evaluator/dag.d.ts +30 -0
  55. package/dist/evaluator/dag.d.ts.map +1 -0
  56. package/dist/evaluator/dag.js +121 -0
  57. package/dist/evaluator/dag.js.map +1 -0
  58. package/dist/evaluator/expr.d.ts +11 -0
  59. package/dist/evaluator/expr.d.ts.map +1 -0
  60. package/dist/evaluator/expr.js +649 -0
  61. package/dist/evaluator/expr.js.map +1 -0
  62. package/dist/evaluator/expr.test.d.ts +2 -0
  63. package/dist/evaluator/expr.test.d.ts.map +1 -0
  64. package/dist/evaluator/expr.test.js +449 -0
  65. package/dist/evaluator/expr.test.js.map +1 -0
  66. package/dist/evaluator/flow.d.ts +35 -0
  67. package/dist/evaluator/flow.d.ts.map +1 -0
  68. package/dist/evaluator/flow.js +387 -0
  69. package/dist/evaluator/flow.js.map +1 -0
  70. package/dist/evaluator/flow.test.d.ts +2 -0
  71. package/dist/evaluator/flow.test.d.ts.map +1 -0
  72. package/dist/evaluator/flow.test.js +499 -0
  73. package/dist/evaluator/flow.test.js.map +1 -0
  74. package/dist/evaluator/index.d.ts +6 -0
  75. package/dist/evaluator/index.d.ts.map +1 -0
  76. package/dist/evaluator/index.js +6 -0
  77. package/dist/evaluator/index.js.map +1 -0
  78. package/dist/factories.d.ts +22 -0
  79. package/dist/factories.d.ts.map +1 -0
  80. package/dist/factories.js +44 -0
  81. package/dist/factories.js.map +1 -0
  82. package/dist/index.d.ts +47 -11
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +30 -45
  85. package/dist/index.js.map +1 -1
  86. package/dist/index.test.d.ts +2 -0
  87. package/dist/index.test.d.ts.map +1 -0
  88. package/dist/index.test.js +13 -0
  89. package/dist/index.test.js.map +1 -0
  90. package/dist/schema/action.d.ts +14 -0
  91. package/dist/schema/action.d.ts.map +1 -0
  92. package/dist/schema/action.js +30 -0
  93. package/dist/schema/action.js.map +1 -0
  94. package/dist/schema/common.d.ts +37 -0
  95. package/dist/schema/common.d.ts.map +1 -0
  96. package/dist/schema/common.js +20 -0
  97. package/dist/schema/common.js.map +1 -0
  98. package/dist/schema/computed.d.ts +23 -0
  99. package/dist/schema/computed.d.ts.map +1 -0
  100. package/dist/schema/computed.js +34 -0
  101. package/dist/schema/computed.js.map +1 -0
  102. package/dist/schema/domain.d.ts +50 -0
  103. package/dist/schema/domain.d.ts.map +1 -0
  104. package/dist/schema/domain.js +60 -0
  105. package/dist/schema/domain.js.map +1 -0
  106. package/dist/schema/expr.d.ts +303 -0
  107. package/dist/schema/expr.d.ts.map +1 -0
  108. package/dist/schema/expr.js +283 -0
  109. package/dist/schema/expr.js.map +1 -0
  110. package/dist/schema/field.d.ts +48 -0
  111. package/dist/schema/field.d.ts.map +1 -0
  112. package/dist/schema/field.js +31 -0
  113. package/dist/schema/field.js.map +1 -0
  114. package/dist/schema/flow.d.ts +103 -0
  115. package/dist/schema/flow.d.ts.map +1 -0
  116. package/dist/schema/flow.js +82 -0
  117. package/dist/schema/flow.js.map +1 -0
  118. package/dist/schema/host-context.d.ts +12 -0
  119. package/dist/schema/host-context.d.ts.map +1 -0
  120. package/dist/schema/host-context.js +23 -0
  121. package/dist/schema/host-context.js.map +1 -0
  122. package/dist/schema/index.d.ts +13 -2
  123. package/dist/schema/index.d.ts.map +1 -1
  124. package/dist/schema/index.js +25 -2
  125. package/dist/schema/index.js.map +1 -1
  126. package/dist/schema/patch.d.ts +59 -0
  127. package/dist/schema/patch.d.ts.map +1 -0
  128. package/dist/schema/patch.js +60 -0
  129. package/dist/schema/patch.js.map +1 -0
  130. package/dist/schema/result.d.ts +142 -0
  131. package/dist/schema/result.d.ts.map +1 -0
  132. package/dist/schema/result.js +94 -0
  133. package/dist/schema/result.js.map +1 -0
  134. package/dist/schema/snapshot.d.ts +153 -0
  135. package/dist/schema/snapshot.d.ts.map +1 -0
  136. package/dist/schema/snapshot.js +160 -0
  137. package/dist/schema/snapshot.js.map +1 -0
  138. package/dist/schema/trace.d.ts +98 -0
  139. package/dist/schema/trace.d.ts.map +1 -0
  140. package/dist/schema/trace.js +90 -0
  141. package/dist/schema/trace.js.map +1 -0
  142. package/dist/schema/type-spec.d.ts +34 -0
  143. package/dist/schema/type-spec.d.ts.map +1 -0
  144. package/dist/schema/type-spec.js +40 -0
  145. package/dist/schema/type-spec.js.map +1 -0
  146. package/dist/utils/canonical.d.ts +37 -0
  147. package/dist/utils/canonical.d.ts.map +1 -0
  148. package/dist/utils/canonical.js +122 -0
  149. package/dist/utils/canonical.js.map +1 -0
  150. package/dist/utils/canonical.test.d.ts +2 -0
  151. package/dist/utils/canonical.test.d.ts.map +1 -0
  152. package/dist/utils/canonical.test.js +183 -0
  153. package/dist/utils/canonical.test.js.map +1 -0
  154. package/dist/utils/hash.d.ts +28 -0
  155. package/dist/utils/hash.d.ts.map +1 -0
  156. package/dist/utils/hash.js +152 -0
  157. package/dist/utils/hash.js.map +1 -0
  158. package/dist/utils/hash.test.d.ts +2 -0
  159. package/dist/utils/hash.test.d.ts.map +1 -0
  160. package/dist/utils/hash.test.js +170 -0
  161. package/dist/utils/hash.test.js.map +1 -0
  162. package/dist/utils/index.d.ts +4 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +4 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/path.d.ts +40 -0
  167. package/dist/utils/path.d.ts.map +1 -0
  168. package/dist/utils/path.js +132 -0
  169. package/dist/utils/path.js.map +1 -0
  170. package/dist/utils/path.test.d.ts +2 -0
  171. package/dist/utils/path.test.d.ts.map +1 -0
  172. package/dist/utils/path.test.js +191 -0
  173. package/dist/utils/path.test.js.map +1 -0
  174. package/package.json +28 -41
  175. package/LICENSE +0 -21
  176. package/dist/dag/graph.d.ts +0 -62
  177. package/dist/dag/graph.d.ts.map +0 -1
  178. package/dist/dag/graph.js +0 -244
  179. package/dist/dag/graph.js.map +0 -1
  180. package/dist/dag/index.d.ts +0 -4
  181. package/dist/dag/index.d.ts.map +0 -1
  182. package/dist/dag/index.js +0 -4
  183. package/dist/dag/index.js.map +0 -1
  184. package/dist/dag/propagation.d.ts +0 -58
  185. package/dist/dag/propagation.d.ts.map +0 -1
  186. package/dist/dag/propagation.js +0 -224
  187. package/dist/dag/propagation.js.map +0 -1
  188. package/dist/dag/topological.d.ts +0 -33
  189. package/dist/dag/topological.d.ts.map +0 -1
  190. package/dist/dag/topological.js +0 -173
  191. package/dist/dag/topological.js.map +0 -1
  192. package/dist/domain/define.d.ts +0 -82
  193. package/dist/domain/define.d.ts.map +0 -1
  194. package/dist/domain/define.js +0 -105
  195. package/dist/domain/define.js.map +0 -1
  196. package/dist/domain/index.d.ts +0 -4
  197. package/dist/domain/index.d.ts.map +0 -1
  198. package/dist/domain/index.js +0 -4
  199. package/dist/domain/index.js.map +0 -1
  200. package/dist/domain/types.d.ts +0 -203
  201. package/dist/domain/types.d.ts.map +0 -1
  202. package/dist/domain/types.js +0 -2
  203. package/dist/domain/types.js.map +0 -1
  204. package/dist/domain/validate.d.ts +0 -17
  205. package/dist/domain/validate.d.ts.map +0 -1
  206. package/dist/domain/validate.js +0 -204
  207. package/dist/domain/validate.js.map +0 -1
  208. package/dist/effect/index.d.ts +0 -4
  209. package/dist/effect/index.d.ts.map +0 -1
  210. package/dist/effect/index.js +0 -4
  211. package/dist/effect/index.js.map +0 -1
  212. package/dist/effect/result.d.ts +0 -100
  213. package/dist/effect/result.d.ts.map +0 -1
  214. package/dist/effect/result.js +0 -163
  215. package/dist/effect/result.js.map +0 -1
  216. package/dist/effect/runner.d.ts +0 -98
  217. package/dist/effect/runner.d.ts.map +0 -1
  218. package/dist/effect/runner.js +0 -321
  219. package/dist/effect/runner.js.map +0 -1
  220. package/dist/effect/types.d.ts +0 -169
  221. package/dist/effect/types.d.ts.map +0 -1
  222. package/dist/effect/types.js +0 -28
  223. package/dist/effect/types.js.map +0 -1
  224. package/dist/expression/analyzer.d.ts +0 -42
  225. package/dist/expression/analyzer.d.ts.map +0 -1
  226. package/dist/expression/analyzer.js +0 -166
  227. package/dist/expression/analyzer.js.map +0 -1
  228. package/dist/expression/evaluator.d.ts +0 -16
  229. package/dist/expression/evaluator.d.ts.map +0 -1
  230. package/dist/expression/evaluator.js +0 -382
  231. package/dist/expression/evaluator.js.map +0 -1
  232. package/dist/expression/index.d.ts +0 -5
  233. package/dist/expression/index.d.ts.map +0 -1
  234. package/dist/expression/index.js +0 -5
  235. package/dist/expression/index.js.map +0 -1
  236. package/dist/expression/parser.d.ts +0 -37
  237. package/dist/expression/parser.d.ts.map +0 -1
  238. package/dist/expression/parser.js +0 -201
  239. package/dist/expression/parser.js.map +0 -1
  240. package/dist/expression/types.d.ts +0 -123
  241. package/dist/expression/types.d.ts.map +0 -1
  242. package/dist/expression/types.js +0 -10
  243. package/dist/expression/types.js.map +0 -1
  244. package/dist/policy/field-policy.d.ts +0 -63
  245. package/dist/policy/field-policy.d.ts.map +0 -1
  246. package/dist/policy/field-policy.js +0 -138
  247. package/dist/policy/field-policy.js.map +0 -1
  248. package/dist/policy/index.d.ts +0 -3
  249. package/dist/policy/index.d.ts.map +0 -1
  250. package/dist/policy/index.js +0 -3
  251. package/dist/policy/index.js.map +0 -1
  252. package/dist/policy/precondition.d.ts +0 -58
  253. package/dist/policy/precondition.d.ts.map +0 -1
  254. package/dist/policy/precondition.js +0 -115
  255. package/dist/policy/precondition.js.map +0 -1
  256. package/dist/runtime/index.d.ts +0 -4
  257. package/dist/runtime/index.d.ts.map +0 -1
  258. package/dist/runtime/index.js +0 -4
  259. package/dist/runtime/index.js.map +0 -1
  260. package/dist/runtime/runtime.d.ts +0 -94
  261. package/dist/runtime/runtime.d.ts.map +0 -1
  262. package/dist/runtime/runtime.js +0 -294
  263. package/dist/runtime/runtime.js.map +0 -1
  264. package/dist/runtime/snapshot.d.ts +0 -39
  265. package/dist/runtime/snapshot.d.ts.map +0 -1
  266. package/dist/runtime/snapshot.js +0 -264
  267. package/dist/runtime/snapshot.js.map +0 -1
  268. package/dist/runtime/subscription.d.ts +0 -82
  269. package/dist/runtime/subscription.d.ts.map +0 -1
  270. package/dist/runtime/subscription.js +0 -222
  271. package/dist/runtime/subscription.js.map +0 -1
  272. package/dist/schema/integration.d.ts +0 -89
  273. package/dist/schema/integration.d.ts.map +0 -1
  274. package/dist/schema/integration.js +0 -171
  275. package/dist/schema/integration.js.map +0 -1
  276. package/dist/schema/validation.d.ts +0 -51
  277. package/dist/schema/validation.d.ts.map +0 -1
  278. package/dist/schema/validation.js +0 -212
  279. package/dist/schema/validation.js.map +0 -1
@@ -1,169 +0,0 @@
1
- import type { Expression } from '../expression/types.js';
2
- import type { SemanticPath } from '../domain/types.js';
3
- /**
4
- * Effect: 부수효과를 캡슐화하는 타입
5
- *
6
- * Monadic Design Principles:
7
- * - 실행 전까지는 "설명"일 뿐 (데이터로서의 Effect)
8
- * - 합성 가능 (Sequence, Parallel, Conditional)
9
- * - 에러 처리 일관됨 (Result<T, E>)
10
- * - AI가 "무슨 일이 일어날지" 이해 가능
11
- */
12
- export type Effect = SetValueEffect | SetStateEffect | ApiCallEffect | DelayEffect | NavigateEffect | SequenceEffect | ParallelEffect | ConditionalEffect | CatchEffect | EmitEventEffect;
13
- /**
14
- * SetValueEffect: 데이터 값 설정
15
- */
16
- export type SetValueEffect = {
17
- _tag: 'SetValue';
18
- /** 대상 경로 */
19
- path: SemanticPath;
20
- /** 설정할 값 (Expression으로 계산 가능) */
21
- value: Expression;
22
- /** 설명 */
23
- description: string;
24
- };
25
- /**
26
- * SetStateEffect: 상태 값 설정
27
- */
28
- export type SetStateEffect = {
29
- _tag: 'SetState';
30
- /** 대상 경로 */
31
- path: SemanticPath;
32
- /** 설정할 값 */
33
- value: Expression;
34
- /** 설명 */
35
- description: string;
36
- };
37
- /**
38
- * ApiCallEffect: API 호출
39
- */
40
- export type ApiCallEffect = {
41
- _tag: 'ApiCall';
42
- /** 엔드포인트 (Expression 가능) */
43
- endpoint: string | Expression;
44
- /** HTTP 메서드 */
45
- method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
46
- /** 요청 본문 */
47
- body?: Record<string, Expression>;
48
- /** 요청 헤더 */
49
- headers?: Record<string, string>;
50
- /** 쿼리 파라미터 */
51
- query?: Record<string, Expression>;
52
- /** 타임아웃 (ms) */
53
- timeout?: number;
54
- /** 설명 */
55
- description: string;
56
- };
57
- /**
58
- * NavigateEffect: 페이지 이동
59
- */
60
- export type NavigateEffect = {
61
- _tag: 'Navigate';
62
- /** 이동할 경로 (Expression 가능) */
63
- to: string | Expression;
64
- /** 히스토리 모드 */
65
- mode?: 'push' | 'replace';
66
- /** 설명 */
67
- description: string;
68
- };
69
- /**
70
- * DelayEffect: 대기
71
- */
72
- export type DelayEffect = {
73
- _tag: 'Delay';
74
- /** 대기 시간 (ms) */
75
- ms: number;
76
- /** 설명 */
77
- description: string;
78
- };
79
- /**
80
- * SequenceEffect: 순차 실행
81
- */
82
- export type SequenceEffect = {
83
- _tag: 'Sequence';
84
- /** 순차 실행할 Effect들 */
85
- effects: Effect[];
86
- /** 설명 */
87
- description: string;
88
- };
89
- /**
90
- * ParallelEffect: 병렬 실행
91
- */
92
- export type ParallelEffect = {
93
- _tag: 'Parallel';
94
- /** 병렬 실행할 Effect들 */
95
- effects: Effect[];
96
- /** 모두 완료 대기 여부 */
97
- waitAll?: boolean;
98
- /** 설명 */
99
- description: string;
100
- };
101
- /**
102
- * ConditionalEffect: 조건부 실행
103
- */
104
- export type ConditionalEffect = {
105
- _tag: 'Conditional';
106
- /** 조건 */
107
- condition: Expression;
108
- /** 참일 때 실행 */
109
- then: Effect;
110
- /** 거짓일 때 실행 (선택) */
111
- else?: Effect;
112
- /** 설명 */
113
- description: string;
114
- };
115
- /**
116
- * CatchEffect: 에러 처리
117
- */
118
- export type CatchEffect = {
119
- _tag: 'Catch';
120
- /** 시도할 Effect */
121
- try: Effect;
122
- /** 에러 시 실행할 Effect */
123
- catch: Effect;
124
- /** 항상 실행할 Effect (선택) */
125
- finally?: Effect;
126
- /** 설명 */
127
- description: string;
128
- };
129
- /**
130
- * EmitEventEffect: 일회성 이벤트 발행
131
- *
132
- * State와 달리 Snapshot에 저장되지 않음.
133
- * Projection Layer에서 구독하여 처리.
134
- */
135
- export type EmitEventEffect = {
136
- _tag: 'EmitEvent';
137
- /** 이벤트 채널 */
138
- channel: 'ui' | 'domain' | 'analytics';
139
- /** 이벤트 페이로드 */
140
- payload: {
141
- /** 이벤트 타입 */
142
- type: string;
143
- /** 메시지 (선택) */
144
- message?: string;
145
- /** 추가 데이터 (선택) */
146
- data?: unknown;
147
- /** 이벤트 심각도 (선택, UI 채널용) */
148
- severity?: 'success' | 'info' | 'warning' | 'error';
149
- /** 지속 시간 (선택, 토스트 등) */
150
- duration?: number;
151
- };
152
- /** 설명 */
153
- description: string;
154
- };
155
- /**
156
- * Effect 타입 가드
157
- */
158
- export declare function isEffect(value: unknown): value is Effect;
159
- /**
160
- * Effect 태그 타입
161
- */
162
- export type EffectTag = Effect['_tag'];
163
- /**
164
- * 특정 태그의 Effect인지 확인
165
- */
166
- export declare function isEffectOfType<T extends EffectTag>(effect: Effect, tag: T): effect is Extract<Effect, {
167
- _tag: T;
168
- }>;
169
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/effect/types.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- // =============================================================================
2
- // Effect Helpers
3
- // =============================================================================
4
- /**
5
- * Effect 타입 가드
6
- */
7
- export function isEffect(value) {
8
- if (!value || typeof value !== 'object')
9
- return false;
10
- const { _tag } = value;
11
- return (_tag === 'SetValue' ||
12
- _tag === 'SetState' ||
13
- _tag === 'ApiCall' ||
14
- _tag === 'Navigate' ||
15
- _tag === 'Delay' ||
16
- _tag === 'Sequence' ||
17
- _tag === 'Parallel' ||
18
- _tag === 'Conditional' ||
19
- _tag === 'Catch' ||
20
- _tag === 'EmitEvent');
21
- }
22
- /**
23
- * 특정 태그의 Effect인지 확인
24
- */
25
- export function isEffectOfType(effect, tag) {
26
- return effect._tag === tag;
27
- }
28
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/effect/types.ts"],"names":[],"mappings":"AAoMA,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,GAAG,KAA0B,CAAC;IAC5C,OAAO,CACL,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,WAAW,CACrB,CAAC;AACJ,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,GAAM;IAEN,OAAO,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC;AAC7B,CAAC"}
@@ -1,42 +0,0 @@
1
- import type { Expression } from './types.js';
2
- import type { SemanticPath } from '../domain/types.js';
3
- /**
4
- * 의존성 분석 결과
5
- */
6
- export type DependencyAnalysis = {
7
- /** 직접 의존하는 경로들 */
8
- directDeps: SemanticPath[];
9
- /** 사용된 연산자들 */
10
- operators: string[];
11
- /** 표현식의 복잡도 (노드 수) */
12
- complexity: number;
13
- /** 부분 표현식에서 사용되는 컨텍스트 변수 */
14
- usesContext: boolean;
15
- };
16
- /**
17
- * Expression 의존성 분석
18
- */
19
- export declare function analyzeExpression(expr: Expression): DependencyAnalysis;
20
- /**
21
- * Expression이 순수한지 확인 (부수효과 없음)
22
- * 모든 Expression은 순수해야 하지만, 추가 검증용
23
- */
24
- export declare function isPureExpression(expr: Expression): boolean;
25
- /**
26
- * Expression이 상수인지 확인 (의존성 없음)
27
- */
28
- export declare function isConstantExpression(expr: Expression): boolean;
29
- /**
30
- * 두 Expression이 동일한지 확인 (구조적 동등성)
31
- */
32
- export declare function areExpressionsEqual(a: Expression, b: Expression): boolean;
33
- /**
34
- * Expression 최적화 (기본적인 상수 폴딩)
35
- */
36
- export declare function optimizeExpression(expr: Expression): Expression;
37
- /**
38
- * Expression에서 특정 경로에 대한 의존성 제거
39
- * (경로가 상수로 대체되었을 때 사용)
40
- */
41
- export declare function substitutePathWithValue(expr: Expression, path: SemanticPath, value: Expression): Expression;
42
- //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/expression/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kBAAkB;IAClB,UAAU,EAAE,YAAY,EAAE,CAAC;IAE3B,eAAe;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB,CAsCtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAI1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAG9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAmBzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA6C/D;AA2BD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,UAAU,GAChB,UAAU,CAgBZ"}
@@ -1,166 +0,0 @@
1
- import { extractPaths, isValidExpression } from './parser.js';
2
- /**
3
- * Expression 의존성 분석
4
- */
5
- export function analyzeExpression(expr) {
6
- const directDeps = extractPaths(expr);
7
- const operators = new Set();
8
- let complexity = 0;
9
- let usesContext = false;
10
- function traverse(e) {
11
- complexity++;
12
- if (e === null || typeof e !== 'object')
13
- return;
14
- if (!Array.isArray(e))
15
- return;
16
- const [op, ...args] = e;
17
- operators.add(op);
18
- // 컨텍스트 변수 사용 확인
19
- if (op === 'get') {
20
- const path = args[0];
21
- if (path.startsWith('$')) {
22
- usesContext = true;
23
- }
24
- }
25
- for (const arg of args) {
26
- if (isValidExpression(arg)) {
27
- traverse(arg);
28
- }
29
- }
30
- }
31
- traverse(expr);
32
- return {
33
- directDeps,
34
- operators: [...operators],
35
- complexity,
36
- usesContext,
37
- };
38
- }
39
- /**
40
- * Expression이 순수한지 확인 (부수효과 없음)
41
- * 모든 Expression은 순수해야 하지만, 추가 검증용
42
- */
43
- export function isPureExpression(expr) {
44
- // 현재 모든 Expression 연산자는 순수함
45
- // 향후 사용자 정의 함수 허용 시 검증 필요
46
- return isValidExpression(expr);
47
- }
48
- /**
49
- * Expression이 상수인지 확인 (의존성 없음)
50
- */
51
- export function isConstantExpression(expr) {
52
- const analysis = analyzeExpression(expr);
53
- return analysis.directDeps.length === 0 && !analysis.usesContext;
54
- }
55
- /**
56
- * 두 Expression이 동일한지 확인 (구조적 동등성)
57
- */
58
- export function areExpressionsEqual(a, b) {
59
- if (a === b)
60
- return true;
61
- if (a === null || b === null)
62
- return a === b;
63
- if (typeof a !== typeof b)
64
- return false;
65
- if (typeof a !== 'object')
66
- return a === b;
67
- if (!Array.isArray(a) || !Array.isArray(b))
68
- return false;
69
- if (a.length !== b.length)
70
- return false;
71
- for (let i = 0; i < a.length; i++) {
72
- const aItem = a[i];
73
- const bItem = b[i];
74
- if (isValidExpression(aItem) && isValidExpression(bItem)) {
75
- if (!areExpressionsEqual(aItem, bItem))
76
- return false;
77
- }
78
- else if (aItem !== bItem) {
79
- return false;
80
- }
81
- }
82
- return true;
83
- }
84
- /**
85
- * Expression 최적화 (기본적인 상수 폴딩)
86
- */
87
- export function optimizeExpression(expr) {
88
- if (expr === null || typeof expr !== 'object')
89
- return expr;
90
- if (!Array.isArray(expr))
91
- return expr;
92
- const [op, ...args] = expr;
93
- // 재귀적으로 자식 최적화
94
- const optimizedArgs = args.map((arg) => isValidExpression(arg) ? optimizeExpression(arg) : arg);
95
- // 상수 폴딩: 모든 인자가 리터럴이면 미리 계산
96
- const allLiterals = optimizedArgs.every((arg) => !Array.isArray(arg) && typeof arg !== 'object');
97
- if (allLiterals && canFoldOperator(op)) {
98
- // 상수 폴딩은 현재 생략 (런타임에 평가)
99
- // 향후 빌드 타임 최적화로 구현 가능
100
- }
101
- // all/any 단축 평가
102
- if (op === 'all') {
103
- // all에서 false 리터럴이 있으면 false
104
- if (optimizedArgs.some((arg) => arg === false)) {
105
- return false;
106
- }
107
- // all에서 모든 인자가 true면 true
108
- if (optimizedArgs.every((arg) => arg === true)) {
109
- return true;
110
- }
111
- }
112
- if (op === 'any') {
113
- // any에서 true 리터럴이 있으면 true
114
- if (optimizedArgs.some((arg) => arg === true)) {
115
- return true;
116
- }
117
- // any에서 모든 인자가 false면 false
118
- if (optimizedArgs.every((arg) => arg === false)) {
119
- return false;
120
- }
121
- }
122
- return [op, ...optimizedArgs];
123
- }
124
- /**
125
- * 상수 폴딩이 가능한 연산자인지 확인
126
- */
127
- function canFoldOperator(op) {
128
- const foldableOps = new Set([
129
- '+',
130
- '-',
131
- '*',
132
- '/',
133
- '%',
134
- '==',
135
- '!=',
136
- '>',
137
- '>=',
138
- '<',
139
- '<=',
140
- '!',
141
- 'concat',
142
- 'upper',
143
- 'lower',
144
- 'trim',
145
- ]);
146
- return foldableOps.has(op);
147
- }
148
- /**
149
- * Expression에서 특정 경로에 대한 의존성 제거
150
- * (경로가 상수로 대체되었을 때 사용)
151
- */
152
- export function substitutePathWithValue(expr, path, value) {
153
- if (expr === null || typeof expr !== 'object')
154
- return expr;
155
- if (!Array.isArray(expr))
156
- return expr;
157
- const [op, ...args] = expr;
158
- if (op === 'get' && args[0] === path) {
159
- return value;
160
- }
161
- return [
162
- op,
163
- ...args.map((arg) => isValidExpression(arg) ? substitutePathWithValue(arg, path, value) : arg),
164
- ];
165
- }
166
- //# sourceMappingURL=analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/expression/analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { Expression, EvaluationContext } from './types.js';
2
- /**
3
- * Expression 평가 결과
4
- */
5
- export type EvalResult<T = unknown> = {
6
- ok: true;
7
- value: T;
8
- } | {
9
- ok: false;
10
- error: string;
11
- };
12
- /**
13
- * Expression 평가
14
- */
15
- export declare function evaluate(expr: Expression, ctx: EvaluationContext): EvalResult;
16
- //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/expression/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,GAAG,UAAU,CAO7E"}