@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.
Files changed (259) hide show
  1. package/README.md +129 -499
  2. package/dist/core/apply.d.ts +16 -0
  3. package/dist/core/apply.d.ts.map +1 -0
  4. package/dist/core/apply.js +52 -0
  5. package/dist/core/apply.js.map +1 -0
  6. package/dist/core/compute.d.ts +17 -0
  7. package/dist/core/compute.d.ts.map +1 -0
  8. package/dist/core/compute.js +197 -0
  9. package/dist/core/compute.js.map +1 -0
  10. package/dist/core/compute.test.d.ts +2 -0
  11. package/dist/core/compute.test.d.ts.map +1 -0
  12. package/dist/core/compute.test.js +400 -0
  13. package/dist/core/compute.test.js.map +1 -0
  14. package/dist/core/explain.d.ts +14 -0
  15. package/dist/core/explain.d.ts.map +1 -0
  16. package/dist/core/explain.js +74 -0
  17. package/dist/core/explain.js.map +1 -0
  18. package/dist/core/index.d.ts +5 -0
  19. package/dist/core/index.d.ts.map +1 -0
  20. package/dist/core/index.js +5 -0
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/core/validate.d.ts +15 -0
  23. package/dist/core/validate.d.ts.map +1 -0
  24. package/dist/core/validate.js +143 -0
  25. package/dist/core/validate.js.map +1 -0
  26. package/dist/core/validate.test.d.ts +2 -0
  27. package/dist/core/validate.test.d.ts.map +1 -0
  28. package/dist/core/validate.test.js +450 -0
  29. package/dist/core/validate.test.js.map +1 -0
  30. package/dist/errors.d.ts +30 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +51 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/evaluator/computed.d.ts +14 -0
  35. package/dist/evaluator/computed.d.ts.map +1 -0
  36. package/dist/evaluator/computed.js +57 -0
  37. package/dist/evaluator/computed.js.map +1 -0
  38. package/dist/evaluator/context.d.ts +46 -0
  39. package/dist/evaluator/context.d.ts.map +1 -0
  40. package/dist/evaluator/context.js +35 -0
  41. package/dist/evaluator/context.js.map +1 -0
  42. package/dist/evaluator/dag.d.ts +30 -0
  43. package/dist/evaluator/dag.d.ts.map +1 -0
  44. package/dist/evaluator/dag.js +121 -0
  45. package/dist/evaluator/dag.js.map +1 -0
  46. package/dist/evaluator/expr.d.ts +11 -0
  47. package/dist/evaluator/expr.d.ts.map +1 -0
  48. package/dist/evaluator/expr.js +498 -0
  49. package/dist/evaluator/expr.js.map +1 -0
  50. package/dist/evaluator/expr.test.d.ts +2 -0
  51. package/dist/evaluator/expr.test.d.ts.map +1 -0
  52. package/dist/evaluator/expr.test.js +426 -0
  53. package/dist/evaluator/expr.test.js.map +1 -0
  54. package/dist/evaluator/flow.d.ts +35 -0
  55. package/dist/evaluator/flow.d.ts.map +1 -0
  56. package/dist/evaluator/flow.js +234 -0
  57. package/dist/evaluator/flow.js.map +1 -0
  58. package/dist/evaluator/flow.test.d.ts +2 -0
  59. package/dist/evaluator/flow.test.d.ts.map +1 -0
  60. package/dist/evaluator/flow.test.js +446 -0
  61. package/dist/evaluator/flow.test.js.map +1 -0
  62. package/dist/evaluator/index.d.ts +6 -0
  63. package/dist/evaluator/index.d.ts.map +1 -0
  64. package/dist/evaluator/index.js +6 -0
  65. package/dist/evaluator/index.js.map +1 -0
  66. package/dist/factories.d.ts +20 -0
  67. package/dist/factories.d.ts.map +1 -0
  68. package/dist/factories.js +43 -0
  69. package/dist/factories.js.map +1 -0
  70. package/dist/index.d.ts +46 -11
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +30 -45
  73. package/dist/index.js.map +1 -1
  74. package/dist/index.test.d.ts +2 -0
  75. package/dist/index.test.d.ts.map +1 -0
  76. package/dist/index.test.js +13 -0
  77. package/dist/index.test.js.map +1 -0
  78. package/dist/schema/action.d.ts +14 -0
  79. package/dist/schema/action.d.ts.map +1 -0
  80. package/dist/schema/action.js +30 -0
  81. package/dist/schema/action.js.map +1 -0
  82. package/dist/schema/common.d.ts +37 -0
  83. package/dist/schema/common.d.ts.map +1 -0
  84. package/dist/schema/common.js +20 -0
  85. package/dist/schema/common.js.map +1 -0
  86. package/dist/schema/computed.d.ts +23 -0
  87. package/dist/schema/computed.d.ts.map +1 -0
  88. package/dist/schema/computed.js +34 -0
  89. package/dist/schema/computed.js.map +1 -0
  90. package/dist/schema/domain.d.ts +46 -0
  91. package/dist/schema/domain.d.ts.map +1 -0
  92. package/dist/schema/domain.js +54 -0
  93. package/dist/schema/domain.js.map +1 -0
  94. package/dist/schema/expr.d.ts +260 -0
  95. package/dist/schema/expr.d.ts.map +1 -0
  96. package/dist/schema/expr.js +247 -0
  97. package/dist/schema/expr.js.map +1 -0
  98. package/dist/schema/field.d.ts +48 -0
  99. package/dist/schema/field.d.ts.map +1 -0
  100. package/dist/schema/field.js +31 -0
  101. package/dist/schema/field.js.map +1 -0
  102. package/dist/schema/flow.d.ts +103 -0
  103. package/dist/schema/flow.d.ts.map +1 -0
  104. package/dist/schema/flow.js +82 -0
  105. package/dist/schema/flow.js.map +1 -0
  106. package/dist/schema/index.d.ts +11 -2
  107. package/dist/schema/index.d.ts.map +1 -1
  108. package/dist/schema/index.js +22 -2
  109. package/dist/schema/index.js.map +1 -1
  110. package/dist/schema/patch.d.ts +59 -0
  111. package/dist/schema/patch.d.ts.map +1 -0
  112. package/dist/schema/patch.js +60 -0
  113. package/dist/schema/patch.js.map +1 -0
  114. package/dist/schema/result.d.ts +130 -0
  115. package/dist/schema/result.d.ts.map +1 -0
  116. package/dist/schema/result.js +90 -0
  117. package/dist/schema/result.js.map +1 -0
  118. package/dist/schema/snapshot.d.ts +151 -0
  119. package/dist/schema/snapshot.d.ts.map +1 -0
  120. package/dist/schema/snapshot.js +156 -0
  121. package/dist/schema/snapshot.js.map +1 -0
  122. package/dist/schema/trace.d.ts +87 -0
  123. package/dist/schema/trace.d.ts.map +1 -0
  124. package/dist/schema/trace.js +79 -0
  125. package/dist/schema/trace.js.map +1 -0
  126. package/dist/utils/canonical.d.ts +29 -0
  127. package/dist/utils/canonical.d.ts.map +1 -0
  128. package/dist/utils/canonical.js +56 -0
  129. package/dist/utils/canonical.js.map +1 -0
  130. package/dist/utils/canonical.test.d.ts +2 -0
  131. package/dist/utils/canonical.test.d.ts.map +1 -0
  132. package/dist/utils/canonical.test.js +153 -0
  133. package/dist/utils/canonical.test.js.map +1 -0
  134. package/dist/utils/hash.d.ts +20 -0
  135. package/dist/utils/hash.d.ts.map +1 -0
  136. package/dist/utils/hash.js +38 -0
  137. package/dist/utils/hash.js.map +1 -0
  138. package/dist/utils/hash.test.d.ts +2 -0
  139. package/dist/utils/hash.test.d.ts.map +1 -0
  140. package/dist/utils/hash.test.js +146 -0
  141. package/dist/utils/hash.test.js.map +1 -0
  142. package/dist/utils/index.d.ts +4 -0
  143. package/dist/utils/index.d.ts.map +1 -0
  144. package/dist/utils/index.js +4 -0
  145. package/dist/utils/index.js.map +1 -0
  146. package/dist/utils/path.d.ts +40 -0
  147. package/dist/utils/path.d.ts.map +1 -0
  148. package/dist/utils/path.js +132 -0
  149. package/dist/utils/path.js.map +1 -0
  150. package/dist/utils/path.test.d.ts +2 -0
  151. package/dist/utils/path.test.d.ts.map +1 -0
  152. package/dist/utils/path.test.js +191 -0
  153. package/dist/utils/path.test.js.map +1 -0
  154. package/package.json +25 -39
  155. package/LICENSE +0 -21
  156. package/dist/dag/graph.d.ts +0 -62
  157. package/dist/dag/graph.d.ts.map +0 -1
  158. package/dist/dag/graph.js +0 -244
  159. package/dist/dag/graph.js.map +0 -1
  160. package/dist/dag/index.d.ts +0 -4
  161. package/dist/dag/index.d.ts.map +0 -1
  162. package/dist/dag/index.js +0 -4
  163. package/dist/dag/index.js.map +0 -1
  164. package/dist/dag/propagation.d.ts +0 -58
  165. package/dist/dag/propagation.d.ts.map +0 -1
  166. package/dist/dag/propagation.js +0 -224
  167. package/dist/dag/propagation.js.map +0 -1
  168. package/dist/dag/topological.d.ts +0 -33
  169. package/dist/dag/topological.d.ts.map +0 -1
  170. package/dist/dag/topological.js +0 -173
  171. package/dist/dag/topological.js.map +0 -1
  172. package/dist/domain/define.d.ts +0 -82
  173. package/dist/domain/define.d.ts.map +0 -1
  174. package/dist/domain/define.js +0 -105
  175. package/dist/domain/define.js.map +0 -1
  176. package/dist/domain/index.d.ts +0 -4
  177. package/dist/domain/index.d.ts.map +0 -1
  178. package/dist/domain/index.js +0 -4
  179. package/dist/domain/index.js.map +0 -1
  180. package/dist/domain/types.d.ts +0 -203
  181. package/dist/domain/types.d.ts.map +0 -1
  182. package/dist/domain/types.js +0 -2
  183. package/dist/domain/types.js.map +0 -1
  184. package/dist/domain/validate.d.ts +0 -17
  185. package/dist/domain/validate.d.ts.map +0 -1
  186. package/dist/domain/validate.js +0 -204
  187. package/dist/domain/validate.js.map +0 -1
  188. package/dist/effect/index.d.ts +0 -4
  189. package/dist/effect/index.d.ts.map +0 -1
  190. package/dist/effect/index.js +0 -4
  191. package/dist/effect/index.js.map +0 -1
  192. package/dist/effect/result.d.ts +0 -100
  193. package/dist/effect/result.d.ts.map +0 -1
  194. package/dist/effect/result.js +0 -163
  195. package/dist/effect/result.js.map +0 -1
  196. package/dist/effect/runner.d.ts +0 -98
  197. package/dist/effect/runner.d.ts.map +0 -1
  198. package/dist/effect/runner.js +0 -321
  199. package/dist/effect/runner.js.map +0 -1
  200. package/dist/effect/types.d.ts +0 -169
  201. package/dist/effect/types.d.ts.map +0 -1
  202. package/dist/effect/types.js +0 -28
  203. package/dist/effect/types.js.map +0 -1
  204. package/dist/expression/analyzer.d.ts +0 -42
  205. package/dist/expression/analyzer.d.ts.map +0 -1
  206. package/dist/expression/analyzer.js +0 -166
  207. package/dist/expression/analyzer.js.map +0 -1
  208. package/dist/expression/evaluator.d.ts +0 -16
  209. package/dist/expression/evaluator.d.ts.map +0 -1
  210. package/dist/expression/evaluator.js +0 -382
  211. package/dist/expression/evaluator.js.map +0 -1
  212. package/dist/expression/index.d.ts +0 -5
  213. package/dist/expression/index.d.ts.map +0 -1
  214. package/dist/expression/index.js +0 -5
  215. package/dist/expression/index.js.map +0 -1
  216. package/dist/expression/parser.d.ts +0 -37
  217. package/dist/expression/parser.d.ts.map +0 -1
  218. package/dist/expression/parser.js +0 -201
  219. package/dist/expression/parser.js.map +0 -1
  220. package/dist/expression/types.d.ts +0 -123
  221. package/dist/expression/types.d.ts.map +0 -1
  222. package/dist/expression/types.js +0 -10
  223. package/dist/expression/types.js.map +0 -1
  224. package/dist/policy/field-policy.d.ts +0 -63
  225. package/dist/policy/field-policy.d.ts.map +0 -1
  226. package/dist/policy/field-policy.js +0 -138
  227. package/dist/policy/field-policy.js.map +0 -1
  228. package/dist/policy/index.d.ts +0 -3
  229. package/dist/policy/index.d.ts.map +0 -1
  230. package/dist/policy/index.js +0 -3
  231. package/dist/policy/index.js.map +0 -1
  232. package/dist/policy/precondition.d.ts +0 -58
  233. package/dist/policy/precondition.d.ts.map +0 -1
  234. package/dist/policy/precondition.js +0 -115
  235. package/dist/policy/precondition.js.map +0 -1
  236. package/dist/runtime/index.d.ts +0 -4
  237. package/dist/runtime/index.d.ts.map +0 -1
  238. package/dist/runtime/index.js +0 -4
  239. package/dist/runtime/index.js.map +0 -1
  240. package/dist/runtime/runtime.d.ts +0 -94
  241. package/dist/runtime/runtime.d.ts.map +0 -1
  242. package/dist/runtime/runtime.js +0 -294
  243. package/dist/runtime/runtime.js.map +0 -1
  244. package/dist/runtime/snapshot.d.ts +0 -39
  245. package/dist/runtime/snapshot.d.ts.map +0 -1
  246. package/dist/runtime/snapshot.js +0 -264
  247. package/dist/runtime/snapshot.js.map +0 -1
  248. package/dist/runtime/subscription.d.ts +0 -82
  249. package/dist/runtime/subscription.d.ts.map +0 -1
  250. package/dist/runtime/subscription.js +0 -222
  251. package/dist/runtime/subscription.js.map +0 -1
  252. package/dist/schema/integration.d.ts +0 -89
  253. package/dist/schema/integration.d.ts.map +0 -1
  254. package/dist/schema/integration.js +0 -171
  255. package/dist/schema/integration.js.map +0 -1
  256. package/dist/schema/validation.d.ts +0 -51
  257. package/dist/schema/validation.d.ts.map +0 -1
  258. package/dist/schema/validation.js +0 -212
  259. package/dist/schema/validation.js.map +0 -1
@@ -1,382 +0,0 @@
1
- /**
2
- * Expression 평가
3
- */
4
- export function evaluate(expr, ctx) {
5
- try {
6
- const value = evalExpr(expr, ctx);
7
- return { ok: true, value };
8
- }
9
- catch (e) {
10
- return { ok: false, error: e instanceof Error ? e.message : String(e) };
11
- }
12
- }
13
- /**
14
- * 내부 평가 함수
15
- */
16
- function evalExpr(expr, ctx) {
17
- // Literals
18
- if (expr === null)
19
- return null;
20
- if (typeof expr === 'string')
21
- return expr;
22
- if (typeof expr === 'number')
23
- return expr;
24
- if (typeof expr === 'boolean')
25
- return expr;
26
- if (!Array.isArray(expr)) {
27
- throw new Error(`Invalid expression: ${JSON.stringify(expr)}`);
28
- }
29
- const [op, ...args] = expr;
30
- switch (op) {
31
- // Value Access
32
- case 'get':
33
- return evalGet(args[0], ctx);
34
- // Comparison
35
- case '==':
36
- return evalExpr(args[0], ctx) === evalExpr(args[1], ctx);
37
- case '!=':
38
- return evalExpr(args[0], ctx) !== evalExpr(args[1], ctx);
39
- case '>':
40
- return (evalExpr(args[0], ctx) >
41
- evalExpr(args[1], ctx));
42
- case '>=':
43
- return (evalExpr(args[0], ctx) >=
44
- evalExpr(args[1], ctx));
45
- case '<':
46
- return (evalExpr(args[0], ctx) <
47
- evalExpr(args[1], ctx));
48
- case '<=':
49
- return (evalExpr(args[0], ctx) <=
50
- evalExpr(args[1], ctx));
51
- // Logical
52
- case '!':
53
- return !evalExpr(args[0], ctx);
54
- case 'all':
55
- return args.every((a) => Boolean(evalExpr(a, ctx)));
56
- case 'any':
57
- return args.some((a) => Boolean(evalExpr(a, ctx)));
58
- // Arithmetic
59
- case '+':
60
- return (evalExpr(args[0], ctx) +
61
- evalExpr(args[1], ctx));
62
- case '-':
63
- return (evalExpr(args[0], ctx) -
64
- evalExpr(args[1], ctx));
65
- case '*':
66
- return (evalExpr(args[0], ctx) *
67
- evalExpr(args[1], ctx));
68
- case '/':
69
- return (evalExpr(args[0], ctx) /
70
- evalExpr(args[1], ctx));
71
- case '%':
72
- return (evalExpr(args[0], ctx) %
73
- evalExpr(args[1], ctx));
74
- // Conditional
75
- case 'case':
76
- return evalCase(args, ctx);
77
- case 'match':
78
- return evalMatch(args, ctx);
79
- case 'coalesce':
80
- return evalCoalesce(args, ctx);
81
- // String
82
- case 'concat':
83
- return args.map((a) => String(evalExpr(a, ctx))).join('');
84
- case 'upper':
85
- return String(evalExpr(args[0], ctx)).toUpperCase();
86
- case 'lower':
87
- return String(evalExpr(args[0], ctx)).toLowerCase();
88
- case 'trim':
89
- return String(evalExpr(args[0], ctx)).trim();
90
- case 'slice':
91
- return String(evalExpr(args[0], ctx)).slice(args[1], args[2]);
92
- case 'split':
93
- return String(evalExpr(args[0], ctx)).split(args[1]);
94
- case 'join':
95
- return evalExpr(args[0], ctx).join(args[1]);
96
- case 'matches':
97
- return new RegExp(args[1]).test(String(evalExpr(args[0], ctx)));
98
- case 'replace':
99
- return String(evalExpr(args[0], ctx)).replace(new RegExp(args[1], 'g'), args[2]);
100
- // Array
101
- case 'length':
102
- return evalExpr(args[0], ctx).length;
103
- case 'at':
104
- return evalExpr(args[0], ctx)[args[1]];
105
- case 'first':
106
- return evalExpr(args[0], ctx)[0];
107
- case 'last': {
108
- const arr = evalExpr(args[0], ctx);
109
- return arr[arr.length - 1];
110
- }
111
- case 'includes':
112
- return evalExpr(args[0], ctx).includes(evalExpr(args[1], ctx));
113
- case 'indexOf':
114
- return evalExpr(args[0], ctx).indexOf(evalExpr(args[1], ctx));
115
- case 'map':
116
- return evalMap(args, ctx);
117
- case 'filter':
118
- return evalFilter(args, ctx);
119
- case 'every':
120
- return evalEvery(args, ctx);
121
- case 'some':
122
- return evalSome(args, ctx);
123
- case 'reduce':
124
- return evalReduce(args, ctx);
125
- case 'flatten':
126
- return evalExpr(args[0], ctx).flat();
127
- case 'unique':
128
- return [...new Set(evalExpr(args[0], ctx))];
129
- case 'sort':
130
- return evalSort(args, ctx);
131
- case 'reverse':
132
- return [...evalExpr(args[0], ctx)].reverse();
133
- // Number
134
- case 'sum':
135
- return evalExpr(args[0], ctx).reduce((a, b) => a + b, 0);
136
- case 'min':
137
- return Math.min(...evalExpr(args[0], ctx));
138
- case 'max':
139
- return Math.max(...evalExpr(args[0], ctx));
140
- case 'avg': {
141
- const nums = evalExpr(args[0], ctx);
142
- return nums.reduce((a, b) => a + b, 0) / nums.length;
143
- }
144
- case 'count':
145
- return evalExpr(args[0], ctx).length;
146
- case 'round': {
147
- const val = evalExpr(args[0], ctx);
148
- const precision = args[1] ?? 0;
149
- const factor = Math.pow(10, precision);
150
- return Math.round(val * factor) / factor;
151
- }
152
- case 'floor':
153
- return Math.floor(evalExpr(args[0], ctx));
154
- case 'ceil':
155
- return Math.ceil(evalExpr(args[0], ctx));
156
- case 'abs':
157
- return Math.abs(evalExpr(args[0], ctx));
158
- case 'clamp': {
159
- const val = evalExpr(args[0], ctx);
160
- const min = args[1];
161
- const max = args[2];
162
- return Math.max(min, Math.min(max, val));
163
- }
164
- // Object
165
- case 'has':
166
- return args[1] in evalExpr(args[0], ctx);
167
- case 'keys':
168
- return Object.keys(evalExpr(args[0], ctx));
169
- case 'values':
170
- return Object.values(evalExpr(args[0], ctx));
171
- case 'entries':
172
- return Object.entries(evalExpr(args[0], ctx));
173
- case 'pick': {
174
- const obj = evalExpr(args[0], ctx);
175
- const keys = args.slice(1);
176
- const result = {};
177
- for (const k of keys) {
178
- if (k in obj)
179
- result[k] = obj[k];
180
- }
181
- return result;
182
- }
183
- case 'omit': {
184
- const obj = evalExpr(args[0], ctx);
185
- const keysToOmit = new Set(args.slice(1));
186
- const result = {};
187
- for (const [k, v] of Object.entries(obj)) {
188
- if (!keysToOmit.has(k))
189
- result[k] = v;
190
- }
191
- return result;
192
- }
193
- // Type
194
- case 'isNull':
195
- return evalExpr(args[0], ctx) === null;
196
- case 'isNumber':
197
- return typeof evalExpr(args[0], ctx) === 'number';
198
- case 'isString':
199
- return typeof evalExpr(args[0], ctx) === 'string';
200
- case 'isArray':
201
- return Array.isArray(evalExpr(args[0], ctx));
202
- case 'isObject': {
203
- const val = evalExpr(args[0], ctx);
204
- return val !== null && typeof val === 'object' && !Array.isArray(val);
205
- }
206
- case 'toNumber':
207
- return Number(evalExpr(args[0], ctx));
208
- case 'toString':
209
- return String(evalExpr(args[0], ctx));
210
- // Date
211
- case 'now':
212
- return Date.now();
213
- case 'date':
214
- return new Date(evalExpr(args[0], ctx)).getTime();
215
- case 'year':
216
- return new Date(evalExpr(args[0], ctx)).getFullYear();
217
- case 'month':
218
- return new Date(evalExpr(args[0], ctx)).getMonth() + 1;
219
- case 'day':
220
- return new Date(evalExpr(args[0], ctx)).getDate();
221
- case 'diff': {
222
- const d1 = evalExpr(args[0], ctx);
223
- const d2 = evalExpr(args[1], ctx);
224
- const unit = args[2];
225
- const diffMs = d1 - d2;
226
- switch (unit) {
227
- case 'days':
228
- return Math.floor(diffMs / (1000 * 60 * 60 * 24));
229
- case 'hours':
230
- return Math.floor(diffMs / (1000 * 60 * 60));
231
- case 'minutes':
232
- return Math.floor(diffMs / (1000 * 60));
233
- case 'seconds':
234
- return Math.floor(diffMs / 1000);
235
- default:
236
- return diffMs;
237
- }
238
- }
239
- default:
240
- throw new Error(`Unknown operator: ${op}`);
241
- }
242
- }
243
- /**
244
- * get 연산자 평가
245
- */
246
- function evalGet(path, ctx) {
247
- if (path === '$') {
248
- return ctx.current;
249
- }
250
- if (path === '$index') {
251
- return ctx.index;
252
- }
253
- if (path === '$acc') {
254
- return ctx.accumulator;
255
- }
256
- if (path.startsWith('$.')) {
257
- const subPath = path.slice(2);
258
- return getNestedValue(ctx.current, subPath);
259
- }
260
- return ctx.get(path);
261
- }
262
- /**
263
- * 중첩된 객체에서 값 가져오기
264
- */
265
- function getNestedValue(obj, path) {
266
- const parts = path.split('.');
267
- let current = obj;
268
- for (const part of parts) {
269
- if (current === null || current === undefined)
270
- return undefined;
271
- current = current[part];
272
- }
273
- return current;
274
- }
275
- /**
276
- * case 연산자 평가
277
- */
278
- function evalCase(args, ctx) {
279
- // 마지막이 default, 나머지는 [condition, result] 쌍
280
- for (let i = 0; i < args.length - 1; i += 2) {
281
- const condition = args[i];
282
- const result = args[i + 1];
283
- if (condition !== undefined && evalExpr(condition, ctx)) {
284
- return result !== undefined ? evalExpr(result, ctx) : undefined;
285
- }
286
- }
287
- // default
288
- const defaultVal = args[args.length - 1];
289
- return defaultVal !== undefined ? evalExpr(defaultVal, ctx) : undefined;
290
- }
291
- /**
292
- * match 연산자 평가
293
- */
294
- function evalMatch(args, ctx) {
295
- const target = evalExpr(args[0], ctx);
296
- // [target, ...pattern-result pairs, default]
297
- for (let i = 1; i < args.length - 1; i += 2) {
298
- const pattern = evalExpr(args[i], ctx);
299
- const result = args[i + 1];
300
- if (target === pattern) {
301
- return result !== undefined ? evalExpr(result, ctx) : undefined;
302
- }
303
- }
304
- // default
305
- const defaultVal = args[args.length - 1];
306
- return defaultVal !== undefined ? evalExpr(defaultVal, ctx) : undefined;
307
- }
308
- /**
309
- * coalesce 연산자 평가
310
- */
311
- function evalCoalesce(args, ctx) {
312
- for (const arg of args) {
313
- const val = evalExpr(arg, ctx);
314
- if (val !== null && val !== undefined) {
315
- return val;
316
- }
317
- }
318
- return null;
319
- }
320
- /**
321
- * map 연산자 평가
322
- */
323
- function evalMap(args, ctx) {
324
- const arr = evalExpr(args[0], ctx);
325
- const mapper = args[1];
326
- return arr.map((item, index) => evalExpr(mapper, { ...ctx, current: item, index }));
327
- }
328
- /**
329
- * filter 연산자 평가
330
- */
331
- function evalFilter(args, ctx) {
332
- const arr = evalExpr(args[0], ctx);
333
- const predicate = args[1];
334
- return arr.filter((item, index) => Boolean(evalExpr(predicate, { ...ctx, current: item, index })));
335
- }
336
- /**
337
- * every 연산자 평가
338
- */
339
- function evalEvery(args, ctx) {
340
- const arr = evalExpr(args[0], ctx);
341
- const predicate = args[1];
342
- return arr.every((item, index) => Boolean(evalExpr(predicate, { ...ctx, current: item, index })));
343
- }
344
- /**
345
- * some 연산자 평가
346
- */
347
- function evalSome(args, ctx) {
348
- const arr = evalExpr(args[0], ctx);
349
- const predicate = args[1];
350
- return arr.some((item, index) => Boolean(evalExpr(predicate, { ...ctx, current: item, index })));
351
- }
352
- /**
353
- * reduce 연산자 평가
354
- */
355
- function evalReduce(args, ctx) {
356
- const arr = evalExpr(args[0], ctx);
357
- const reducer = args[1];
358
- const initial = evalExpr(args[2], ctx);
359
- return arr.reduce((acc, item, index) => evalExpr(reducer, { ...ctx, current: item, index, accumulator: acc }), initial);
360
- }
361
- /**
362
- * sort 연산자 평가
363
- */
364
- function evalSort(args, ctx) {
365
- const arr = [...evalExpr(args[0], ctx)];
366
- const comparator = args[1];
367
- if (!comparator) {
368
- return arr.sort();
369
- }
370
- return arr.sort((a, b) => {
371
- const aVal = evalExpr(comparator, { ...ctx, current: a });
372
- const bVal = evalExpr(comparator, { ...ctx, current: b });
373
- if (aVal === bVal)
374
- return 0;
375
- if (aVal === null || aVal === undefined)
376
- return 1;
377
- if (bVal === null || bVal === undefined)
378
- return -1;
379
- return aVal < bVal ? -1 : 1;
380
- });
381
- }
382
- //# sourceMappingURL=evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/expression/evaluator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export * from './types.js';
2
- export * from './parser.js';
3
- export * from './evaluator.js';
4
- export * from './analyzer.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -1,5 +0,0 @@
1
- export * from './types.js';
2
- export * from './parser.js';
3
- export * from './evaluator.js';
4
- export * from './analyzer.js';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
@@ -1,37 +0,0 @@
1
- import type { Expression, GetExpr } from './types.js';
2
- import type { SemanticPath } from '../domain/types.js';
3
- /**
4
- * Expression 파싱 결과
5
- */
6
- export type ParseResult = {
7
- ok: true;
8
- expression: Expression;
9
- } | {
10
- ok: false;
11
- error: string;
12
- };
13
- /**
14
- * Expression 유효성 검사
15
- */
16
- export declare function isValidExpression(expr: unknown): expr is Expression;
17
- /**
18
- * Get 표현식인지 확인
19
- */
20
- export declare function isGetExpr(expr: Expression): expr is GetExpr;
21
- /**
22
- * Expression에서 모든 get 경로 추출
23
- */
24
- export declare function extractPaths(expr: Expression): SemanticPath[];
25
- /**
26
- * Expression을 JSON 문자열로 변환
27
- */
28
- export declare function stringifyExpression(expr: Expression): string;
29
- /**
30
- * JSON 문자열을 Expression으로 파싱
31
- */
32
- export declare function parseExpression(json: string): ParseResult;
33
- /**
34
- * Expression을 사람이 읽을 수 있는 형태로 변환
35
- */
36
- export declare function expressionToString(expr: Expression): string;
37
- //# sourceMappingURL=parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/expression/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,UAAU,CAanE;AA8FD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAsB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAUzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgC3D"}
@@ -1,201 +0,0 @@
1
- /**
2
- * Expression 유효성 검사
3
- */
4
- export function isValidExpression(expr) {
5
- if (expr === null)
6
- return true;
7
- if (typeof expr === 'string')
8
- return true;
9
- if (typeof expr === 'number')
10
- return true;
11
- if (typeof expr === 'boolean')
12
- return true;
13
- if (!Array.isArray(expr))
14
- return false;
15
- if (expr.length === 0)
16
- return false;
17
- const [op] = expr;
18
- if (typeof op !== 'string')
19
- return false;
20
- return isValidOperator(op);
21
- }
22
- /**
23
- * 유효한 연산자인지 확인
24
- */
25
- function isValidOperator(op) {
26
- const validOperators = new Set([
27
- // Value access
28
- 'get',
29
- // Comparison
30
- '==',
31
- '!=',
32
- '>',
33
- '>=',
34
- '<',
35
- '<=',
36
- // Logical
37
- '!',
38
- 'all',
39
- 'any',
40
- // Arithmetic
41
- '+',
42
- '-',
43
- '*',
44
- '/',
45
- '%',
46
- // Conditional
47
- 'case',
48
- 'match',
49
- 'coalesce',
50
- // String
51
- 'concat',
52
- 'upper',
53
- 'lower',
54
- 'trim',
55
- 'slice',
56
- 'split',
57
- 'join',
58
- 'matches',
59
- 'replace',
60
- // Array
61
- 'length',
62
- 'at',
63
- 'first',
64
- 'last',
65
- 'includes',
66
- 'indexOf',
67
- 'map',
68
- 'filter',
69
- 'every',
70
- 'some',
71
- 'reduce',
72
- 'flatten',
73
- 'unique',
74
- 'sort',
75
- 'reverse',
76
- // Number
77
- 'sum',
78
- 'min',
79
- 'max',
80
- 'avg',
81
- 'count',
82
- 'round',
83
- 'floor',
84
- 'ceil',
85
- 'abs',
86
- 'clamp',
87
- // Object
88
- 'has',
89
- 'keys',
90
- 'values',
91
- 'entries',
92
- 'pick',
93
- 'omit',
94
- // Type
95
- 'isNull',
96
- 'isNumber',
97
- 'isString',
98
- 'isArray',
99
- 'isObject',
100
- 'toNumber',
101
- 'toString',
102
- // Date
103
- 'now',
104
- 'date',
105
- 'year',
106
- 'month',
107
- 'day',
108
- 'diff',
109
- ]);
110
- return validOperators.has(op);
111
- }
112
- /**
113
- * Get 표현식인지 확인
114
- */
115
- export function isGetExpr(expr) {
116
- return Array.isArray(expr) && expr.length === 2 && expr[0] === 'get';
117
- }
118
- /**
119
- * Expression에서 모든 get 경로 추출
120
- */
121
- export function extractPaths(expr) {
122
- const paths = [];
123
- function traverse(e) {
124
- if (e === null || typeof e !== 'object')
125
- return;
126
- if (!Array.isArray(e))
127
- return;
128
- const [op, ...args] = e;
129
- if (op === 'get' && typeof args[0] === 'string') {
130
- paths.push(args[0]);
131
- return;
132
- }
133
- for (const arg of args) {
134
- if (isValidExpression(arg)) {
135
- traverse(arg);
136
- }
137
- }
138
- }
139
- traverse(expr);
140
- return paths;
141
- }
142
- /**
143
- * Expression을 JSON 문자열로 변환
144
- */
145
- export function stringifyExpression(expr) {
146
- return JSON.stringify(expr);
147
- }
148
- /**
149
- * JSON 문자열을 Expression으로 파싱
150
- */
151
- export function parseExpression(json) {
152
- try {
153
- const parsed = JSON.parse(json);
154
- if (isValidExpression(parsed)) {
155
- return { ok: true, expression: parsed };
156
- }
157
- return { ok: false, error: 'Invalid expression structure' };
158
- }
159
- catch (e) {
160
- return { ok: false, error: `JSON parse error: ${String(e)}` };
161
- }
162
- }
163
- /**
164
- * Expression을 사람이 읽을 수 있는 형태로 변환
165
- */
166
- export function expressionToString(expr) {
167
- if (expr === null)
168
- return 'null';
169
- if (typeof expr === 'string')
170
- return `"${expr}"`;
171
- if (typeof expr === 'number')
172
- return String(expr);
173
- if (typeof expr === 'boolean')
174
- return String(expr);
175
- const [op, ...args] = expr;
176
- switch (op) {
177
- case 'get':
178
- return `$${args[0]}`;
179
- case '==':
180
- case '!=':
181
- case '>':
182
- case '>=':
183
- case '<':
184
- case '<=':
185
- case '+':
186
- case '-':
187
- case '*':
188
- case '/':
189
- case '%':
190
- return `(${expressionToString(args[0])} ${op} ${expressionToString(args[1])})`;
191
- case '!':
192
- return `!${expressionToString(args[0])}`;
193
- case 'all':
194
- return `(${args.map((a) => expressionToString(a)).join(' && ')})`;
195
- case 'any':
196
- return `(${args.map((a) => expressionToString(a)).join(' || ')})`;
197
- default:
198
- return `${op}(${args.map((a) => (isValidExpression(a) ? expressionToString(a) : String(a))).join(', ')})`;
199
- }
200
- }
201
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/expression/parser.ts"],"names":[],"mappings":"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"}