@higher.archi/boe 1.0.30 → 1.0.31

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 (226) hide show
  1. package/dist/core/evaluation/decay.d.ts +13 -2
  2. package/dist/core/evaluation/decay.d.ts.map +1 -1
  3. package/dist/core/evaluation/decay.js +24 -0
  4. package/dist/core/evaluation/decay.js.map +1 -1
  5. package/dist/core/types/rule.d.ts +25 -1
  6. package/dist/core/types/rule.d.ts.map +1 -1
  7. package/dist/core/types/rule.js +28 -0
  8. package/dist/core/types/rule.js.map +1 -1
  9. package/dist/engines/bayesian/index.d.ts +1 -1
  10. package/dist/engines/bayesian/index.d.ts.map +1 -1
  11. package/dist/engines/bayesian/index.js +2 -1
  12. package/dist/engines/bayesian/index.js.map +1 -1
  13. package/dist/engines/bayesian/types.d.ts +10 -1
  14. package/dist/engines/bayesian/types.d.ts.map +1 -1
  15. package/dist/engines/bayesian/types.js +16 -1
  16. package/dist/engines/bayesian/types.js.map +1 -1
  17. package/dist/engines/constraint/types.d.ts +36 -5
  18. package/dist/engines/constraint/types.d.ts.map +1 -1
  19. package/dist/engines/constraint/types.js +44 -1
  20. package/dist/engines/constraint/types.js.map +1 -1
  21. package/dist/engines/decay/index.d.ts +1 -1
  22. package/dist/engines/decay/index.d.ts.map +1 -1
  23. package/dist/engines/decay/index.js +5 -1
  24. package/dist/engines/decay/index.js.map +1 -1
  25. package/dist/engines/decay/types.d.ts +26 -4
  26. package/dist/engines/decay/types.d.ts.map +1 -1
  27. package/dist/engines/decay/types.js +30 -1
  28. package/dist/engines/decay/types.js.map +1 -1
  29. package/dist/engines/defeasible/index.d.ts +1 -1
  30. package/dist/engines/defeasible/index.d.ts.map +1 -1
  31. package/dist/engines/defeasible/index.js +8 -1
  32. package/dist/engines/defeasible/index.js.map +1 -1
  33. package/dist/engines/defeasible/types.d.ts +40 -5
  34. package/dist/engines/defeasible/types.d.ts.map +1 -1
  35. package/dist/engines/defeasible/types.js +56 -1
  36. package/dist/engines/defeasible/types.js.map +1 -1
  37. package/dist/engines/ensemble/index.d.ts +1 -0
  38. package/dist/engines/ensemble/index.d.ts.map +1 -1
  39. package/dist/engines/ensemble/index.js +5 -1
  40. package/dist/engines/ensemble/index.js.map +1 -1
  41. package/dist/engines/ensemble/types.d.ts +17 -2
  42. package/dist/engines/ensemble/types.d.ts.map +1 -1
  43. package/dist/engines/ensemble/types.js +23 -0
  44. package/dist/engines/ensemble/types.js.map +1 -1
  45. package/dist/engines/expert/index.d.ts +1 -1
  46. package/dist/engines/expert/index.d.ts.map +1 -1
  47. package/dist/engines/expert/index.js +3 -1
  48. package/dist/engines/expert/index.js.map +1 -1
  49. package/dist/engines/expert/types.d.ts +11 -1
  50. package/dist/engines/expert/types.d.ts.map +1 -1
  51. package/dist/engines/expert/types.js +18 -1
  52. package/dist/engines/expert/types.js.map +1 -1
  53. package/dist/engines/fuzzy/fuzzy.types.d.ts +65 -8
  54. package/dist/engines/fuzzy/fuzzy.types.d.ts.map +1 -1
  55. package/dist/engines/fuzzy/fuzzy.types.js +89 -1
  56. package/dist/engines/fuzzy/fuzzy.types.js.map +1 -1
  57. package/dist/engines/loyalty/index.d.ts +1 -0
  58. package/dist/engines/loyalty/index.d.ts.map +1 -1
  59. package/dist/engines/loyalty/index.js +8 -1
  60. package/dist/engines/loyalty/index.js.map +1 -1
  61. package/dist/engines/loyalty/types.d.ts +36 -5
  62. package/dist/engines/loyalty/types.d.ts.map +1 -1
  63. package/dist/engines/loyalty/types.js +40 -0
  64. package/dist/engines/loyalty/types.js.map +1 -1
  65. package/dist/engines/menu-engineering/compiler.d.ts +11 -0
  66. package/dist/engines/menu-engineering/compiler.d.ts.map +1 -0
  67. package/dist/engines/menu-engineering/compiler.js +119 -0
  68. package/dist/engines/menu-engineering/compiler.js.map +1 -0
  69. package/dist/engines/menu-engineering/engine.d.ts +32 -0
  70. package/dist/engines/menu-engineering/engine.d.ts.map +1 -0
  71. package/dist/engines/menu-engineering/engine.js +40 -0
  72. package/dist/engines/menu-engineering/engine.js.map +1 -0
  73. package/dist/engines/menu-engineering/index.d.ts +9 -0
  74. package/dist/engines/menu-engineering/index.d.ts.map +1 -0
  75. package/dist/engines/menu-engineering/index.js +21 -0
  76. package/dist/engines/menu-engineering/index.js.map +1 -0
  77. package/dist/engines/menu-engineering/strategy.d.ts +18 -0
  78. package/dist/engines/menu-engineering/strategy.d.ts.map +1 -0
  79. package/dist/engines/menu-engineering/strategy.js +318 -0
  80. package/dist/engines/menu-engineering/strategy.js.map +1 -0
  81. package/dist/engines/menu-engineering/types.d.ts +187 -0
  82. package/dist/engines/menu-engineering/types.d.ts.map +1 -0
  83. package/dist/engines/menu-engineering/types.js +27 -0
  84. package/dist/engines/menu-engineering/types.js.map +1 -0
  85. package/dist/engines/monte-carlo/index.d.ts +1 -1
  86. package/dist/engines/monte-carlo/index.d.ts.map +1 -1
  87. package/dist/engines/monte-carlo/index.js +5 -1
  88. package/dist/engines/monte-carlo/index.js.map +1 -1
  89. package/dist/engines/monte-carlo/types.d.ts +16 -1
  90. package/dist/engines/monte-carlo/types.d.ts.map +1 -1
  91. package/dist/engines/monte-carlo/types.js +23 -1
  92. package/dist/engines/monte-carlo/types.js.map +1 -1
  93. package/dist/engines/negotiation/index.d.ts +1 -0
  94. package/dist/engines/negotiation/index.d.ts.map +1 -1
  95. package/dist/engines/negotiation/index.js +7 -1
  96. package/dist/engines/negotiation/index.js.map +1 -1
  97. package/dist/engines/negotiation/types.d.ts +23 -4
  98. package/dist/engines/negotiation/types.d.ts.map +1 -1
  99. package/dist/engines/negotiation/types.js +27 -0
  100. package/dist/engines/negotiation/types.js.map +1 -1
  101. package/dist/engines/prediction/index.d.ts +1 -1
  102. package/dist/engines/prediction/index.d.ts.map +1 -1
  103. package/dist/engines/prediction/index.js +6 -1
  104. package/dist/engines/prediction/index.js.map +1 -1
  105. package/dist/engines/prediction/types.d.ts +35 -5
  106. package/dist/engines/prediction/types.d.ts.map +1 -1
  107. package/dist/engines/prediction/types.js +39 -1
  108. package/dist/engines/prediction/types.js.map +1 -1
  109. package/dist/engines/pricing/index.d.ts +2 -2
  110. package/dist/engines/pricing/index.d.ts.map +1 -1
  111. package/dist/engines/pricing/index.js +3 -1
  112. package/dist/engines/pricing/index.js.map +1 -1
  113. package/dist/engines/pricing/types.d.ts +15 -1
  114. package/dist/engines/pricing/types.d.ts.map +1 -1
  115. package/dist/engines/pricing/types.js +16 -1
  116. package/dist/engines/pricing/types.js.map +1 -1
  117. package/dist/engines/ranking/index.d.ts +1 -1
  118. package/dist/engines/ranking/index.d.ts.map +1 -1
  119. package/dist/engines/ranking/index.js +6 -1
  120. package/dist/engines/ranking/index.js.map +1 -1
  121. package/dist/engines/ranking/types.d.ts +32 -5
  122. package/dist/engines/ranking/types.d.ts.map +1 -1
  123. package/dist/engines/ranking/types.js +36 -1
  124. package/dist/engines/ranking/types.js.map +1 -1
  125. package/dist/engines/recipe-costing/compiler.d.ts +11 -0
  126. package/dist/engines/recipe-costing/compiler.d.ts.map +1 -0
  127. package/dist/engines/recipe-costing/compiler.js +177 -0
  128. package/dist/engines/recipe-costing/compiler.js.map +1 -0
  129. package/dist/engines/recipe-costing/engine.d.ts +32 -0
  130. package/dist/engines/recipe-costing/engine.d.ts.map +1 -0
  131. package/dist/engines/recipe-costing/engine.js +40 -0
  132. package/dist/engines/recipe-costing/engine.js.map +1 -0
  133. package/dist/engines/recipe-costing/index.d.ts +9 -0
  134. package/dist/engines/recipe-costing/index.d.ts.map +1 -0
  135. package/dist/engines/recipe-costing/index.js +21 -0
  136. package/dist/engines/recipe-costing/index.js.map +1 -0
  137. package/dist/engines/recipe-costing/strategy.d.ts +20 -0
  138. package/dist/engines/recipe-costing/strategy.d.ts.map +1 -0
  139. package/dist/engines/recipe-costing/strategy.js +265 -0
  140. package/dist/engines/recipe-costing/strategy.js.map +1 -0
  141. package/dist/engines/recipe-costing/types.d.ts +213 -0
  142. package/dist/engines/recipe-costing/types.d.ts.map +1 -0
  143. package/dist/engines/recipe-costing/types.js +36 -0
  144. package/dist/engines/recipe-costing/types.js.map +1 -0
  145. package/dist/engines/scoring/index.d.ts +1 -1
  146. package/dist/engines/scoring/index.d.ts.map +1 -1
  147. package/dist/engines/scoring/index.js +3 -1
  148. package/dist/engines/scoring/index.js.map +1 -1
  149. package/dist/engines/scoring/types.d.ts +8 -1
  150. package/dist/engines/scoring/types.d.ts.map +1 -1
  151. package/dist/engines/scoring/types.js +18 -1
  152. package/dist/engines/scoring/types.js.map +1 -1
  153. package/dist/engines/sentiment/index.d.ts +1 -1
  154. package/dist/engines/sentiment/index.d.ts.map +1 -1
  155. package/dist/engines/sentiment/index.js +3 -1
  156. package/dist/engines/sentiment/index.js.map +1 -1
  157. package/dist/engines/sentiment/types.d.ts +13 -2
  158. package/dist/engines/sentiment/types.d.ts.map +1 -1
  159. package/dist/engines/sentiment/types.js +17 -1
  160. package/dist/engines/sentiment/types.js.map +1 -1
  161. package/dist/engines/state-machine/index.d.ts +1 -1
  162. package/dist/engines/state-machine/index.d.ts.map +1 -1
  163. package/dist/engines/state-machine/index.js +5 -1
  164. package/dist/engines/state-machine/index.js.map +1 -1
  165. package/dist/engines/state-machine/types.d.ts +7 -0
  166. package/dist/engines/state-machine/types.d.ts.map +1 -1
  167. package/dist/engines/state-machine/types.js +14 -0
  168. package/dist/engines/state-machine/types.js.map +1 -1
  169. package/dist/engines/utility/index.d.ts +2 -2
  170. package/dist/engines/utility/index.d.ts.map +1 -1
  171. package/dist/engines/utility/index.js +4 -1
  172. package/dist/engines/utility/index.js.map +1 -1
  173. package/dist/engines/utility/types.d.ts +21 -3
  174. package/dist/engines/utility/types.d.ts.map +1 -1
  175. package/dist/engines/utility/types.js +37 -1
  176. package/dist/engines/utility/types.js.map +1 -1
  177. package/dist/index.d.ts +28 -22
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +73 -3
  180. package/dist/index.js.map +1 -1
  181. package/package.json +1 -1
  182. package/src/core/evaluation/decay.ts +13 -2
  183. package/src/core/types/rule.ts +25 -1
  184. package/src/engines/bayesian/index.ts +1 -0
  185. package/src/engines/bayesian/types.ts +10 -8
  186. package/src/engines/constraint/types.ts +40 -11
  187. package/src/engines/decay/index.ts +4 -0
  188. package/src/engines/decay/types.ts +26 -4
  189. package/src/engines/defeasible/index.ts +7 -0
  190. package/src/engines/defeasible/types.ts +42 -18
  191. package/src/engines/ensemble/index.ts +6 -0
  192. package/src/engines/ensemble/types.ts +17 -13
  193. package/src/engines/expert/index.ts +1 -0
  194. package/src/engines/expert/types.ts +11 -9
  195. package/src/engines/fuzzy/fuzzy.types.ts +65 -31
  196. package/src/engines/loyalty/index.ts +9 -0
  197. package/src/engines/loyalty/types.ts +36 -5
  198. package/src/engines/menu-engineering/compiler.ts +145 -0
  199. package/src/engines/menu-engineering/engine.ts +48 -0
  200. package/src/engines/menu-engineering/index.ts +47 -0
  201. package/src/engines/menu-engineering/strategy.ts +414 -0
  202. package/src/engines/menu-engineering/types.ts +242 -0
  203. package/src/engines/monte-carlo/index.ts +1 -0
  204. package/src/engines/monte-carlo/types.ts +16 -21
  205. package/src/engines/negotiation/index.ts +8 -0
  206. package/src/engines/negotiation/types.ts +23 -4
  207. package/src/engines/prediction/index.ts +5 -0
  208. package/src/engines/prediction/types.ts +35 -5
  209. package/src/engines/pricing/index.ts +3 -1
  210. package/src/engines/pricing/types.ts +17 -1
  211. package/src/engines/ranking/index.ts +5 -0
  212. package/src/engines/ranking/types.ts +32 -11
  213. package/src/engines/recipe-costing/compiler.ts +219 -0
  214. package/src/engines/recipe-costing/engine.ts +48 -0
  215. package/src/engines/recipe-costing/index.ts +48 -0
  216. package/src/engines/recipe-costing/strategy.ts +357 -0
  217. package/src/engines/recipe-costing/types.ts +269 -0
  218. package/src/engines/scoring/index.ts +2 -0
  219. package/src/engines/scoring/types.ts +8 -6
  220. package/src/engines/sentiment/index.ts +2 -0
  221. package/src/engines/sentiment/types.ts +13 -2
  222. package/src/engines/state-machine/index.ts +3 -0
  223. package/src/engines/state-machine/types.ts +8 -0
  224. package/src/engines/utility/index.ts +5 -0
  225. package/src/engines/utility/types.ts +23 -3
  226. package/src/index.ts +146 -8
@@ -6,10 +6,52 @@
6
6
  * and fuzzy inference. Self-contained within the fuzzy engine.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.WIDTH_VALUES = exports.POSITION_VALUES = void 0;
9
+ exports.WIDTH_VALUES = exports.POSITION_VALUES = exports.DefuzzifyPresets = exports.TransformMethods = exports.DefuzzifyMethods = exports.AggregationMethods = exports.EdgeSemantics = exports.WidthSemantics = exports.PositionSemantics = exports.MembershipShapes = void 0;
10
10
  exports.isSemanticTerm = isSemanticTerm;
11
11
  exports.isExplicitTerm = isExplicitTerm;
12
12
  exports.expandDefuzzifyPreset = expandDefuzzifyPreset;
13
+ // ========================================
14
+ // Membership Shape Types
15
+ // ========================================
16
+ /**
17
+ * Membership function shapes
18
+ * These define how membership degree (0-1) is calculated from a crisp value
19
+ */
20
+ exports.MembershipShapes = {
21
+ triangle: 'triangle',
22
+ trapezoid: 'trapezoid',
23
+ gaussian: 'gaussian',
24
+ shoulder: 'shoulder',
25
+ block: 'block',
26
+ };
27
+ /**
28
+ * Semantic position within domain (compiles to numeric center)
29
+ */
30
+ exports.PositionSemantics = {
31
+ veryLow: 'very-low',
32
+ low: 'low',
33
+ medium: 'medium',
34
+ high: 'high',
35
+ veryHigh: 'very-high',
36
+ };
37
+ /**
38
+ * Semantic width/spread (compiles to numeric spread as % of domain)
39
+ */
40
+ exports.WidthSemantics = {
41
+ tight: 'tight',
42
+ narrow: 'narrow',
43
+ medium: 'medium',
44
+ wide: 'wide',
45
+ veryWide: 'very-wide',
46
+ };
47
+ /**
48
+ * Edge behavior for shoulder/block shapes
49
+ */
50
+ exports.EdgeSemantics = {
51
+ openLeft: 'open-left',
52
+ openRight: 'open-right',
53
+ closed: 'closed',
54
+ };
13
55
  /**
14
56
  * Type guard for semantic terms
15
57
  */
@@ -23,6 +65,52 @@ function isExplicitTerm(term) {
23
65
  return 'params' in term;
24
66
  }
25
67
  // ========================================
68
+ // Defuzzification Pipeline Types
69
+ // ========================================
70
+ /**
71
+ * Aggregation methods - combine multiple rule activations for same output
72
+ */
73
+ exports.AggregationMethods = {
74
+ max: 'max',
75
+ sum: 'sum',
76
+ probor: 'probor',
77
+ bound: 'bound',
78
+ min: 'min',
79
+ };
80
+ /**
81
+ * Defuzzification methods - convert fuzzy output to crisp value
82
+ */
83
+ exports.DefuzzifyMethods = {
84
+ centroid: 'centroid',
85
+ bisector: 'bisector',
86
+ mom: 'mom',
87
+ som: 'som',
88
+ lom: 'lom',
89
+ wtaver: 'wtaver',
90
+ };
91
+ /**
92
+ * Transform methods - post-process the crisp output
93
+ */
94
+ exports.TransformMethods = {
95
+ clamp: 'clamp',
96
+ round: 'round',
97
+ deadband: 'deadband',
98
+ scale: 'scale',
99
+ quantize: 'quantize',
100
+ };
101
+ /**
102
+ * Named presets that expand to full pipelines
103
+ */
104
+ exports.DefuzzifyPresets = {
105
+ balanced: 'balanced',
106
+ smooth: 'smooth',
107
+ decisive: 'decisive',
108
+ cautious: 'cautious',
109
+ aggressive: 'aggressive',
110
+ discrete: 'discrete',
111
+ stable: 'stable',
112
+ };
113
+ // ========================================
26
114
  // Preset Expansions
27
115
  // ========================================
28
116
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.types.js","sourceRoot":"","sources":["../../../src/engines/fuzzy/fuzzy.types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA+DH,wCAEC;AAKD,wCAEC;AA8OD,sDAmBC;AA7QD;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAe;IAC5C,OAAO,UAAU,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAe;IAC5C,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC;AAuOD,2CAA2C;AAC3C,oBAAoB;AACpB,2CAA2C;AAE3C;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAuB;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,YAAY;YACf,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,UAAU;YACb,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,eAAe,GAAqC;IAC/D,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAkC;IACzD,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;CAClB,CAAC"}
1
+ {"version":3,"file":"fuzzy.types.js","sourceRoot":"","sources":["../../../src/engines/fuzzy/fuzzy.types.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Loyalty Engine -- Point Ledger Management
3
3
  */
4
4
  export type { LoyaltyStrategy, PointTransactionType, TierStatus, QualifyingMetric, EvaluationPeriod, EarningRule, RedemptionOption, LoyaltyTierDefinition, PromotionRule, ExpirationPolicy, PointTransaction, MemberBalance, EarningRuleSet, RedemptionRuleSet, TierEvaluationRuleSet, LoyaltyRuleSet, CompiledEarningRuleSet, CompiledRedemptionRuleSet, CompiledTierEvaluationRuleSet, CompiledLoyaltyRuleSet, EarningResult, RedemptionResult, MemberTierResult, TierEvaluationResult, LoyaltyResult, LoyaltyOptions, LoyaltyIngestResult } from './types';
5
+ export { LoyaltyStrategies, PointTransactionTypes, TierStatuses, QualifyingMetrics, EvaluationPeriods } from './types';
5
6
  export { compileLoyaltyRuleSet } from './compiler';
6
7
  export { LoyaltyExecutor, loyaltyStrategy } from './strategy';
7
8
  export { LoyaltyEngine } from './engine';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -3,7 +3,14 @@
3
3
  * Loyalty Engine -- Point Ledger Management
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LoyaltyEngine = exports.loyaltyStrategy = exports.LoyaltyExecutor = exports.compileLoyaltyRuleSet = void 0;
6
+ exports.LoyaltyEngine = exports.loyaltyStrategy = exports.LoyaltyExecutor = exports.compileLoyaltyRuleSet = exports.EvaluationPeriods = exports.QualifyingMetrics = exports.TierStatuses = exports.PointTransactionTypes = exports.LoyaltyStrategies = void 0;
7
+ // Constants
8
+ var types_1 = require("./types");
9
+ Object.defineProperty(exports, "LoyaltyStrategies", { enumerable: true, get: function () { return types_1.LoyaltyStrategies; } });
10
+ Object.defineProperty(exports, "PointTransactionTypes", { enumerable: true, get: function () { return types_1.PointTransactionTypes; } });
11
+ Object.defineProperty(exports, "TierStatuses", { enumerable: true, get: function () { return types_1.TierStatuses; } });
12
+ Object.defineProperty(exports, "QualifyingMetrics", { enumerable: true, get: function () { return types_1.QualifyingMetrics; } });
13
+ Object.defineProperty(exports, "EvaluationPeriods", { enumerable: true, get: function () { return types_1.EvaluationPeriods; } });
7
14
  // Compiler
8
15
  var compiler_1 = require("./compiler");
9
16
  Object.defineProperty(exports, "compileLoyaltyRuleSet", { enumerable: true, get: function () { return compiler_1.compileLoyaltyRuleSet; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/loyalty/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiCH,WAAW;AACX,uCAAmD;AAA1C,iHAAA,qBAAqB,OAAA;AAE9B,WAAW;AACX,uCAA8D;AAArD,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAEzC,SAAS;AACT,mCAAyC;AAAhC,uGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/loyalty/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiCH,YAAY;AACZ,iCAMiB;AALf,0GAAA,iBAAiB,OAAA;AACjB,8GAAA,qBAAqB,OAAA;AACrB,qGAAA,YAAY,OAAA;AACZ,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AAGnB,WAAW;AACX,uCAAmD;AAA1C,iHAAA,qBAAqB,OAAA;AAE9B,WAAW;AACX,uCAA8D;AAArD,2GAAA,eAAe,OAAA;AAAE,2GAAA,eAAe,OAAA;AAEzC,SAAS;AACT,mCAAyC;AAAhC,uGAAA,aAAa,OAAA"}
@@ -8,15 +8,46 @@
8
8
  */
9
9
  import type { Condition } from '../../core/types/condition';
10
10
  /** Loyalty strategy to use */
11
- export type LoyaltyStrategy = 'earning' | 'redemption' | 'tier-evaluation';
11
+ export declare const LoyaltyStrategies: {
12
+ readonly earning: "earning";
13
+ readonly redemption: "redemption";
14
+ readonly tierEvaluation: "tier-evaluation";
15
+ };
16
+ export type LoyaltyStrategy = typeof LoyaltyStrategies[keyof typeof LoyaltyStrategies];
12
17
  /** Point transaction type */
13
- export type PointTransactionType = 'earn' | 'redeem' | 'expire' | 'transfer' | 'adjust';
18
+ export declare const PointTransactionTypes: {
19
+ readonly earn: "earn";
20
+ readonly redeem: "redeem";
21
+ readonly expire: "expire";
22
+ readonly transfer: "transfer";
23
+ readonly adjust: "adjust";
24
+ };
25
+ export type PointTransactionType = typeof PointTransactionTypes[keyof typeof PointTransactionTypes];
14
26
  /** Member tier status */
15
- export type TierStatus = 'qualified' | 'at-risk' | 'downgrade-pending' | 'locked';
27
+ export declare const TierStatuses: {
28
+ readonly qualified: "qualified";
29
+ readonly atRisk: "at-risk";
30
+ readonly downgradePending: "downgrade-pending";
31
+ readonly locked: "locked";
32
+ };
33
+ export type TierStatus = typeof TierStatuses[keyof typeof TierStatuses];
16
34
  /** Qualifying metric for tier evaluation */
17
- export type QualifyingMetric = 'points-earned' | 'qualifying-spend' | 'qualifying-nights' | 'qualifying-flights';
35
+ export declare const QualifyingMetrics: {
36
+ readonly pointsEarned: "points-earned";
37
+ readonly qualifyingSpend: "qualifying-spend";
38
+ readonly qualifyingNights: "qualifying-nights";
39
+ readonly qualifyingFlights: "qualifying-flights";
40
+ readonly qualifyingRentalDays: "qualifying-rental-days";
41
+ readonly qualifyingCruiseDays: "qualifying-cruise-days";
42
+ };
43
+ export type QualifyingMetric = typeof QualifyingMetrics[keyof typeof QualifyingMetrics];
18
44
  /** Evaluation period for tier assessment */
19
- export type EvaluationPeriod = 'rolling-12-months' | 'calendar-year' | 'custom';
45
+ export declare const EvaluationPeriods: {
46
+ readonly rolling12Months: "rolling-12-months";
47
+ readonly calendarYear: "calendar-year";
48
+ readonly custom: "custom";
49
+ };
50
+ export type EvaluationPeriod = typeof EvaluationPeriods[keyof typeof EvaluationPeriods];
20
51
  /** An earning rule that maps activities to points */
21
52
  export type EarningRule = {
22
53
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAM5D,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAE3E,6BAA6B;AAC7B,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExF,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAElF,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEjH,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,eAAe,GAAG,QAAQ,CAAC;AAMhF,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAMF,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACnD,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACvD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,iBAAiB,GACjB,qBAAqB,CAAC;AAM1B,KAAK,0BAA0B,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG;IACnE,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,0BAA0B,GAAG;IACvE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,yBAAyB,GACzB,6BAA6B,CAAC;AAMlC,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAMpF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/loyalty/types.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,44 @@
8
8
  * maintains running balance state across operations.
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.EvaluationPeriods = exports.QualifyingMetrics = exports.TierStatuses = exports.PointTransactionTypes = exports.LoyaltyStrategies = void 0;
12
+ // ========================================
13
+ // Semantic Types
14
+ // ========================================
15
+ /** Loyalty strategy to use */
16
+ exports.LoyaltyStrategies = {
17
+ earning: 'earning',
18
+ redemption: 'redemption',
19
+ tierEvaluation: 'tier-evaluation',
20
+ };
21
+ /** Point transaction type */
22
+ exports.PointTransactionTypes = {
23
+ earn: 'earn',
24
+ redeem: 'redeem',
25
+ expire: 'expire',
26
+ transfer: 'transfer',
27
+ adjust: 'adjust',
28
+ };
29
+ /** Member tier status */
30
+ exports.TierStatuses = {
31
+ qualified: 'qualified',
32
+ atRisk: 'at-risk',
33
+ downgradePending: 'downgrade-pending',
34
+ locked: 'locked',
35
+ };
36
+ /** Qualifying metric for tier evaluation */
37
+ exports.QualifyingMetrics = {
38
+ pointsEarned: 'points-earned',
39
+ qualifyingSpend: 'qualifying-spend',
40
+ qualifyingNights: 'qualifying-nights',
41
+ qualifyingFlights: 'qualifying-flights',
42
+ qualifyingRentalDays: 'qualifying-rental-days',
43
+ qualifyingCruiseDays: 'qualifying-cruise-days',
44
+ };
45
+ /** Evaluation period for tier assessment */
46
+ exports.EvaluationPeriods = {
47
+ rolling12Months: 'rolling-12-months',
48
+ calendarYear: 'calendar-year',
49
+ custom: 'custom',
50
+ };
11
51
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/loyalty/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/loyalty/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAIH,2CAA2C;AAC3C,iBAAiB;AACjB,2CAA2C;AAE3C,8BAA8B;AACjB,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;CACzB,CAAC;AAGX,6BAA6B;AAChB,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX,yBAAyB;AACZ,QAAA,YAAY,GAAG;IAC1B,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,mBAAmB;IACrC,MAAM,EAAE,QAAQ;CACR,CAAC;AAGX,4CAA4C;AAC/B,QAAA,iBAAiB,GAAG;IAC/B,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,wBAAwB;IAC9C,oBAAoB,EAAE,wBAAwB;CACtC,CAAC;AAGX,4CAA4C;AAC/B,QAAA,iBAAiB,GAAG;IAC/B,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE,QAAQ;CACR,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Menu Engineering Engine Compiler
3
+ *
4
+ * Validates menu engineering rulesets and resolves defaults.
5
+ */
6
+ import type { MenuEngineeringRuleSet, CompiledMenuEngineeringRuleSet } from './types';
7
+ /**
8
+ * Compile and validate a menu engineering ruleset.
9
+ */
10
+ export declare function compileMenuEngineeringRuleSet(ruleSet: MenuEngineeringRuleSet): CompiledMenuEngineeringRuleSet;
11
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/engines/menu-engineering/compiler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,sBAAsB,EACtB,8BAA8B,EAI/B,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,sBAAsB,GAC9B,8BAA8B,CA4ChC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Menu Engineering Engine Compiler
4
+ *
5
+ * Validates menu engineering rulesets and resolves defaults.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.compileMenuEngineeringRuleSet = compileMenuEngineeringRuleSet;
9
+ const errors_1 = require("../../core/errors");
10
+ /**
11
+ * Compile and validate a menu engineering ruleset.
12
+ */
13
+ function compileMenuEngineeringRuleSet(ruleSet) {
14
+ if (!ruleSet.id) {
15
+ throw new errors_1.CompilationError('Menu engineering ruleset requires an id');
16
+ }
17
+ if (ruleSet.mode !== 'menu-engineering') {
18
+ throw new errors_1.CompilationError(`Expected mode 'menu-engineering', got '${ruleSet.mode}'`);
19
+ }
20
+ if (!ruleSet.items || ruleSet.items.length === 0) {
21
+ throw new errors_1.CompilationError('Menu engineering ruleset requires at least one menu item');
22
+ }
23
+ // Validate unique item IDs
24
+ const itemIds = new Set();
25
+ for (const item of ruleSet.items) {
26
+ if (!item.id) {
27
+ throw new errors_1.CompilationError('Each menu item requires an id');
28
+ }
29
+ if (itemIds.has(item.id)) {
30
+ throw new errors_1.CompilationError(`Duplicate menu item id: '${item.id}'`);
31
+ }
32
+ if (item.sellingPrice < 0) {
33
+ throw new errors_1.CompilationError(`Menu item '${item.id}' sellingPrice must be non-negative`);
34
+ }
35
+ if (item.plateCost < 0) {
36
+ throw new errors_1.CompilationError(`Menu item '${item.id}' plateCost must be non-negative`);
37
+ }
38
+ if (item.salesCount < 0) {
39
+ throw new errors_1.CompilationError(`Menu item '${item.id}' salesCount must be non-negative`);
40
+ }
41
+ itemIds.add(item.id);
42
+ }
43
+ switch (ruleSet.strategy) {
44
+ case 'classify':
45
+ return compileClassify(ruleSet);
46
+ case 'price-optimization':
47
+ return compilePriceOptimization(ruleSet);
48
+ case 'mix-analysis':
49
+ return compileMixAnalysis(ruleSet);
50
+ default:
51
+ throw new errors_1.CompilationError(`Unknown menu engineering strategy: '${ruleSet.strategy}'`);
52
+ }
53
+ }
54
+ function compileClassify(ruleSet) {
55
+ const config = ruleSet.config ?? {};
56
+ return {
57
+ id: ruleSet.id,
58
+ name: ruleSet.name,
59
+ mode: 'menu-engineering',
60
+ strategy: 'classify',
61
+ items: ruleSet.items,
62
+ config: {
63
+ mixThresholdMode: config.mixThresholdMode ?? 'average',
64
+ customMixThreshold: config.customMixThreshold ?? 0,
65
+ marginThresholdMode: config.marginThresholdMode ?? 'average',
66
+ customMarginThreshold: config.customMarginThreshold ?? 0
67
+ }
68
+ };
69
+ }
70
+ function compilePriceOptimization(ruleSet) {
71
+ if (!ruleSet.config || !ruleSet.config.priceChanges || ruleSet.config.priceChanges.length === 0) {
72
+ throw new errors_1.CompilationError('Price-optimization strategy requires at least one price change');
73
+ }
74
+ // Validate price changes reference existing items
75
+ const itemIds = new Set(ruleSet.items.map(i => i.id));
76
+ for (const change of ruleSet.config.priceChanges) {
77
+ if (!itemIds.has(change.itemId)) {
78
+ throw new errors_1.CompilationError(`Price change references unknown item: '${change.itemId}'`);
79
+ }
80
+ if (change.newPrice < 0) {
81
+ throw new errors_1.CompilationError(`Price change for '${change.itemId}' newPrice must be non-negative`);
82
+ }
83
+ }
84
+ return {
85
+ id: ruleSet.id,
86
+ name: ruleSet.name,
87
+ mode: 'menu-engineering',
88
+ strategy: 'price-optimization',
89
+ items: ruleSet.items,
90
+ config: {
91
+ priceChanges: ruleSet.config.priceChanges,
92
+ elasticities: ruleSet.config.elasticities ?? [],
93
+ defaultElasticity: ruleSet.config.defaultElasticity ?? -1.0
94
+ }
95
+ };
96
+ }
97
+ function compileMixAnalysis(ruleSet) {
98
+ const config = ruleSet.config ?? {};
99
+ const groupBy = config.groupBy ?? 'category';
100
+ if (groupBy === 'category') {
101
+ // Verify at least some items have categories
102
+ const hasCategories = ruleSet.items.some(i => i.category);
103
+ if (!hasCategories) {
104
+ throw new errors_1.CompilationError('Mix-analysis with groupBy "category" requires items with category values');
105
+ }
106
+ }
107
+ return {
108
+ id: ruleSet.id,
109
+ name: ruleSet.name,
110
+ mode: 'menu-engineering',
111
+ strategy: 'mix-analysis',
112
+ items: ruleSet.items,
113
+ config: {
114
+ groupBy,
115
+ daypartField: config.daypartField ?? 'daypart'
116
+ }
117
+ };
118
+ }
119
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/engines/menu-engineering/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Menu Engineering Engine
3
+ *
4
+ * Classifies menu items into Stars/Plowhorses/Puzzles/Dogs based on
5
+ * sales mix percentage and contribution margin. Supports price optimization
6
+ * with elasticity modeling and category-level mix analysis.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const engine = new MenuEngineeringEngine();
11
+ *
12
+ * const result = engine.execute(compiledMenuEngineering);
13
+ * // result.items -> classified menu items with recommendations
14
+ * ```
15
+ */
16
+ import type { CompiledMenuEngineeringRuleSet, MenuEngineeringOptions, MenuEngineeringResult } from './types';
17
+ export declare class MenuEngineeringEngine {
18
+ private strategy;
19
+ constructor();
20
+ /**
21
+ * Execute a menu engineering ruleset.
22
+ *
23
+ * Classifies menu items, optimizes prices, or analyzes category mix
24
+ * depending on the strategy.
25
+ *
26
+ * @param ruleSet - Compiled menu engineering ruleset
27
+ * @param options - Runtime options
28
+ * @returns Menu engineering result
29
+ */
30
+ execute(ruleSet: CompiledMenuEngineeringRuleSet, options?: MenuEngineeringOptions): MenuEngineeringResult;
31
+ }
32
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/engines/menu-engineering/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAIjB,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAA0B;;IAM1C;;;;;;;;;OASG;IACH,OAAO,CACL,OAAO,EAAE,8BAA8B,EACvC,OAAO,GAAE,sBAA2B,GACnC,qBAAqB;CAGzB"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Menu Engineering Engine
4
+ *
5
+ * Classifies menu items into Stars/Plowhorses/Puzzles/Dogs based on
6
+ * sales mix percentage and contribution margin. Supports price optimization
7
+ * with elasticity modeling and category-level mix analysis.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const engine = new MenuEngineeringEngine();
12
+ *
13
+ * const result = engine.execute(compiledMenuEngineering);
14
+ * // result.items -> classified menu items with recommendations
15
+ * ```
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MenuEngineeringEngine = void 0;
19
+ const strategy_1 = require("./strategy");
20
+ class MenuEngineeringEngine {
21
+ strategy;
22
+ constructor() {
23
+ this.strategy = new strategy_1.MenuEngineeringExecutor();
24
+ }
25
+ /**
26
+ * Execute a menu engineering ruleset.
27
+ *
28
+ * Classifies menu items, optimizes prices, or analyzes category mix
29
+ * depending on the strategy.
30
+ *
31
+ * @param ruleSet - Compiled menu engineering ruleset
32
+ * @param options - Runtime options
33
+ * @returns Menu engineering result
34
+ */
35
+ execute(ruleSet, options = {}) {
36
+ return this.strategy.run(ruleSet, options);
37
+ }
38
+ }
39
+ exports.MenuEngineeringEngine = MenuEngineeringEngine;
40
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/engines/menu-engineering/engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAQH,yCAAqD;AAErD,MAAa,qBAAqB;IACxB,QAAQ,CAA0B;IAE1C;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,kCAAuB,EAAE,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO,CACL,OAAuC,EACvC,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAvBD,sDAuBC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Menu Engineering Engine -- Menu Item Classification & Optimization
3
+ */
4
+ export type { MenuEngineeringStrategy, MenuClassification, MenuItem, PriceElasticity, PriceChange, ClassifyConfig, PriceOptimizationConfig, MixAnalysisConfig, ClassifyRuleSet, PriceOptimizationRuleSet, MixAnalysisRuleSet, MenuEngineeringRuleSet, CompiledClassifyRuleSet, CompiledPriceOptimizationRuleSet, CompiledMixAnalysisRuleSet, CompiledMenuEngineeringRuleSet, ClassifiedItem, MenuSummary, PriceOptimizationItem, CategoryMixResult, ClassifyResult, PriceOptimizationResult, MixAnalysisResult, MenuEngineeringResult, MenuEngineeringOptions } from './types';
5
+ export { MenuEngineeringStrategies, MenuClassifications } from './types';
6
+ export { compileMenuEngineeringRuleSet } from './compiler';
7
+ export { MenuEngineeringExecutor, menuEngineeringStrategy } from './strategy';
8
+ export { MenuEngineeringEngine } from './engine';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engines/menu-engineering/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,gCAAgC,EAChC,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Menu Engineering Engine -- Menu Item Classification & Optimization
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MenuEngineeringEngine = exports.menuEngineeringStrategy = exports.MenuEngineeringExecutor = exports.compileMenuEngineeringRuleSet = exports.MenuClassifications = exports.MenuEngineeringStrategies = void 0;
7
+ // Constants
8
+ var types_1 = require("./types");
9
+ Object.defineProperty(exports, "MenuEngineeringStrategies", { enumerable: true, get: function () { return types_1.MenuEngineeringStrategies; } });
10
+ Object.defineProperty(exports, "MenuClassifications", { enumerable: true, get: function () { return types_1.MenuClassifications; } });
11
+ // Compiler
12
+ var compiler_1 = require("./compiler");
13
+ Object.defineProperty(exports, "compileMenuEngineeringRuleSet", { enumerable: true, get: function () { return compiler_1.compileMenuEngineeringRuleSet; } });
14
+ // Strategy
15
+ var strategy_1 = require("./strategy");
16
+ Object.defineProperty(exports, "MenuEngineeringExecutor", { enumerable: true, get: function () { return strategy_1.MenuEngineeringExecutor; } });
17
+ Object.defineProperty(exports, "menuEngineeringStrategy", { enumerable: true, get: function () { return strategy_1.menuEngineeringStrategy; } });
18
+ // Engine
19
+ var engine_1 = require("./engine");
20
+ Object.defineProperty(exports, "MenuEngineeringEngine", { enumerable: true, get: function () { return engine_1.MenuEngineeringEngine; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engines/menu-engineering/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA+BH,YAAY;AACZ,iCAGiB;AAFf,kHAAA,yBAAyB,OAAA;AACzB,4GAAA,mBAAmB,OAAA;AAGrB,WAAW;AACX,uCAA2D;AAAlD,yHAAA,6BAA6B,OAAA;AAEtC,WAAW;AACX,uCAA8E;AAArE,mHAAA,uBAAuB,OAAA;AAAE,mHAAA,uBAAuB,OAAA;AAEzD,SAAS;AACT,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Menu Engineering Engine Strategy
3
+ *
4
+ * Core execution logic for all menu engineering strategies:
5
+ * - classify: categorize items into Stars/Plowhorses/Puzzles/Dogs
6
+ * - price-optimization: model price change impacts with elasticity
7
+ * - mix-analysis: analyze category/daypart mix with divergence detection
8
+ */
9
+ import type { CompiledMenuEngineeringRuleSet, MenuEngineeringResult, MenuEngineeringOptions } from './types';
10
+ export declare class MenuEngineeringExecutor {
11
+ run(ruleSet: CompiledMenuEngineeringRuleSet, _options?: MenuEngineeringOptions): MenuEngineeringResult;
12
+ private runClassify;
13
+ private runPriceOptimization;
14
+ private runMixAnalysis;
15
+ }
16
+ /** Singleton instance */
17
+ export declare const menuEngineeringStrategy: MenuEngineeringExecutor;
18
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/engines/menu-engineering/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,8BAA8B,EAa9B,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAuHjB,qBAAa,uBAAuB;IAClC,GAAG,CACD,OAAO,EAAE,8BAA8B,EACvC,QAAQ,GAAE,sBAA2B,GACpC,qBAAqB;IAiBxB,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,oBAAoB;IAuH5B,OAAO,CAAC,cAAc;CA2FvB;AAED,yBAAyB;AACzB,eAAO,MAAM,uBAAuB,yBAAgC,CAAC"}