@adaptabletools/adaptable 24.0.0 → 24.0.2

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 (250) hide show
  1. package/devtools.d.ts +13 -0
  2. package/index.css +76 -76
  3. package/package.json +1 -1
  4. package/src/Api/Internal/FormatColumnInternalApi.d.ts +3 -2
  5. package/src/Api/Internal/FormatColumnInternalApi.js +15 -7
  6. package/src/Utilities/Services/QueryLanguageService.js +1 -1
  7. package/src/agGrid/AdaptableAgGrid.js +22 -31
  8. package/src/env.js +2 -2
  9. package/src/migration/VersionUpgrade24.d.ts +44 -9
  10. package/src/migration/VersionUpgrade24.js +97 -25
  11. package/src/migration/legacyPredicateLowering.d.ts +1 -1
  12. package/src/migration/legacyPredicateLowering.js +2 -0
  13. package/src/migration/predicateExpressionMigration.d.ts +49 -12
  14. package/src/migration/predicateExpressionMigration.js +141 -10
  15. package/src/setupDevTools.js +106 -170
  16. package/tsconfig.esm.tsbuildinfo +1 -1
  17. package/vendor/aql/api/QueryLanguageApi.d.ts +2 -1
  18. package/vendor/aql/api/QueryLanguageApi.d.ts.map +1 -1
  19. package/vendor/aql/api/QueryLanguageApi.js +28 -108
  20. package/vendor/aql/api/QueryLanguageApi.js.map +1 -1
  21. package/vendor/aql/contract/index.js +0 -34
  22. package/vendor/aql/contract/index.js.map +1 -1
  23. package/vendor/aql/corpus/corpusExpressions.js +0 -13
  24. package/vendor/aql/corpus/corpusExpressions.js.map +1 -1
  25. package/vendor/aql/corpus/corpusFixture.js +0 -7
  26. package/vendor/aql/corpus/corpusFixture.js.map +1 -1
  27. package/vendor/aql/draft/index.js +0 -4
  28. package/vendor/aql/draft/index.js.map +1 -1
  29. package/vendor/aql/evaluate.js +0 -22
  30. package/vendor/aql/evaluate.js.map +1 -1
  31. package/vendor/aql/evaluator/ExpressionEvaluationError.js +0 -4
  32. package/vendor/aql/evaluator/ExpressionEvaluationError.js.map +1 -1
  33. package/vendor/aql/evaluator/ExpressionNaError.js +0 -4
  34. package/vendor/aql/evaluator/ExpressionNaError.js.map +1 -1
  35. package/vendor/aql/evaluator/evaluateNode.js +0 -23
  36. package/vendor/aql/evaluator/evaluateNode.js.map +1 -1
  37. package/vendor/aql/functions/dateUtils.js +0 -63
  38. package/vendor/aql/functions/dateUtils.js.map +1 -1
  39. package/vendor/aql/functions/numberUtils.js +0 -12
  40. package/vendor/aql/functions/numberUtils.js.map +1 -1
  41. package/vendor/aql/functions/operatorFunctions.js +0 -13
  42. package/vendor/aql/functions/operatorFunctions.js.map +1 -1
  43. package/vendor/aql/functions/scalar/functions/AND.js +0 -5
  44. package/vendor/aql/functions/scalar/functions/AND.js.map +1 -1
  45. package/vendor/aql/functions/scalar/functions/ANY_CHANGE.js +0 -4
  46. package/vendor/aql/functions/scalar/functions/ANY_CHANGE.js.map +1 -1
  47. package/vendor/aql/functions/scalar/functions/ANY_CONTAINS.js +0 -4
  48. package/vendor/aql/functions/scalar/functions/ANY_CONTAINS.js.map +1 -1
  49. package/vendor/aql/functions/scalar/functions/AVG.js +0 -1
  50. package/vendor/aql/functions/scalar/functions/AVG.js.map +1 -1
  51. package/vendor/aql/functions/scalar/functions/CASE.js +2 -2
  52. package/vendor/aql/functions/scalar/functions/CASE.js.map +1 -1
  53. package/vendor/aql/functions/scalar/functions/COL.js +0 -2
  54. package/vendor/aql/functions/scalar/functions/COL.js.map +1 -1
  55. package/vendor/aql/functions/scalar/functions/CONTAINS.js +0 -3
  56. package/vendor/aql/functions/scalar/functions/CONTAINS.js.map +1 -1
  57. package/vendor/aql/functions/scalar/functions/DATE.js +0 -2
  58. package/vendor/aql/functions/scalar/functions/DATE.js.map +1 -1
  59. package/vendor/aql/functions/scalar/functions/ENDS_WITH.js +0 -1
  60. package/vendor/aql/functions/scalar/functions/ENDS_WITH.js.map +1 -1
  61. package/vendor/aql/functions/scalar/functions/EQ.js +0 -5
  62. package/vendor/aql/functions/scalar/functions/EQ.js.map +1 -1
  63. package/vendor/aql/functions/scalar/functions/GT.js +0 -3
  64. package/vendor/aql/functions/scalar/functions/GT.js.map +1 -1
  65. package/vendor/aql/functions/scalar/functions/GTE.js +0 -3
  66. package/vendor/aql/functions/scalar/functions/GTE.js.map +1 -1
  67. package/vendor/aql/functions/scalar/functions/IF.js +0 -5
  68. package/vendor/aql/functions/scalar/functions/IF.js.map +1 -1
  69. package/vendor/aql/functions/scalar/functions/IFERROR.js +0 -4
  70. package/vendor/aql/functions/scalar/functions/IFERROR.js.map +1 -1
  71. package/vendor/aql/functions/scalar/functions/IFNA.js +0 -5
  72. package/vendor/aql/functions/scalar/functions/IFNA.js.map +1 -1
  73. package/vendor/aql/functions/scalar/functions/IN.d.ts.map +1 -1
  74. package/vendor/aql/functions/scalar/functions/IN.js +54 -11
  75. package/vendor/aql/functions/scalar/functions/IN.js.map +1 -1
  76. package/vendor/aql/functions/scalar/functions/IS_BLANK.js +0 -1
  77. package/vendor/aql/functions/scalar/functions/IS_BLANK.js.map +1 -1
  78. package/vendor/aql/functions/scalar/functions/IS_DIFFERENT_DAY.js +0 -1
  79. package/vendor/aql/functions/scalar/functions/IS_DIFFERENT_DAY.js.map +1 -1
  80. package/vendor/aql/functions/scalar/functions/IS_NOT_BLANK.js +0 -1
  81. package/vendor/aql/functions/scalar/functions/IS_NOT_BLANK.js.map +1 -1
  82. package/vendor/aql/functions/scalar/functions/LT.js +0 -3
  83. package/vendor/aql/functions/scalar/functions/LT.js.map +1 -1
  84. package/vendor/aql/functions/scalar/functions/LTE.js +0 -3
  85. package/vendor/aql/functions/scalar/functions/LTE.js.map +1 -1
  86. package/vendor/aql/functions/scalar/functions/NA.js +0 -3
  87. package/vendor/aql/functions/scalar/functions/NA.js.map +1 -1
  88. package/vendor/aql/functions/scalar/functions/NOT_CONTAINS.js +0 -1
  89. package/vendor/aql/functions/scalar/functions/NOT_CONTAINS.js.map +1 -1
  90. package/vendor/aql/functions/scalar/functions/NOT_IN.js +0 -3
  91. package/vendor/aql/functions/scalar/functions/NOT_IN.js.map +1 -1
  92. package/vendor/aql/functions/scalar/functions/OR.js +0 -4
  93. package/vendor/aql/functions/scalar/functions/OR.js.map +1 -1
  94. package/vendor/aql/functions/scalar/functions/PRODUCT.js +0 -6
  95. package/vendor/aql/functions/scalar/functions/PRODUCT.js.map +1 -1
  96. package/vendor/aql/functions/scalar/functions/QUERY.js +0 -1
  97. package/vendor/aql/functions/scalar/functions/QUERY.js.map +1 -1
  98. package/vendor/aql/functions/scalar/functions/REGEX.js +0 -1
  99. package/vendor/aql/functions/scalar/functions/REGEX.js.map +1 -1
  100. package/vendor/aql/functions/scalar/functions/SCOPE.js +0 -4
  101. package/vendor/aql/functions/scalar/functions/SCOPE.js.map +1 -1
  102. package/vendor/aql/functions/scalar/functions/STARTS_WITH.js +0 -1
  103. package/vendor/aql/functions/scalar/functions/STARTS_WITH.js.map +1 -1
  104. package/vendor/aql/functions/scalar/functions/SUB.js +0 -1
  105. package/vendor/aql/functions/scalar/functions/SUB.js.map +1 -1
  106. package/vendor/aql/functions/scalar/functions/SUM.js +0 -5
  107. package/vendor/aql/functions/scalar/functions/SUM.js.map +1 -1
  108. package/vendor/aql/functions/scalar/helpers.js +0 -3
  109. package/vendor/aql/functions/scalar/helpers.js.map +1 -1
  110. package/vendor/aql/functions/shared/FIELD.js +0 -3
  111. package/vendor/aql/functions/shared/FIELD.js.map +1 -1
  112. package/vendor/aql/functions/shared/VAR.js +0 -4
  113. package/vendor/aql/functions/shared/VAR.js.map +1 -1
  114. package/vendor/aql/functions/shared/index.js +0 -9
  115. package/vendor/aql/functions/shared/index.js.map +1 -1
  116. package/vendor/aql/functions/stringUtils.js +0 -25
  117. package/vendor/aql/functions/stringUtils.js.map +1 -1
  118. package/vendor/aql/functions/utils.js +0 -20
  119. package/vendor/aql/functions/utils.js.map +1 -1
  120. package/vendor/aql/host/access.js +0 -2
  121. package/vendor/aql/host/access.js.map +1 -1
  122. package/vendor/aql/host/createHostExpressionContext.js +0 -25
  123. package/vendor/aql/host/createHostExpressionContext.js.map +1 -1
  124. package/vendor/aql/host/createObjectDataHost.js +0 -9
  125. package/vendor/aql/host/createObjectDataHost.js.map +1 -1
  126. package/vendor/aql/index.js +0 -2
  127. package/vendor/aql/index.js.map +1 -1
  128. package/vendor/aql/normalize/canonicalize.js +0 -7
  129. package/vendor/aql/normalize/canonicalize.js.map +1 -1
  130. package/vendor/aql/normalize/migrateExpression.js +0 -8
  131. package/vendor/aql/normalize/migrateExpression.js.map +1 -1
  132. package/vendor/aql/normalize/names.js +0 -72
  133. package/vendor/aql/normalize/names.js.map +1 -1
  134. package/vendor/aql/normalize/normalizeAst.js +0 -102
  135. package/vendor/aql/normalize/normalizeAst.js.map +1 -1
  136. package/vendor/aql/normalize/print.js +0 -35
  137. package/vendor/aql/normalize/print.js.map +1 -1
  138. package/vendor/aql/operator/primitiveSlots.js +0 -4
  139. package/vendor/aql/operator/primitiveSlots.js.map +1 -1
  140. package/vendor/aql/operator/resolve.js +0 -18
  141. package/vendor/aql/operator/resolve.js.map +1 -1
  142. package/vendor/aql/parser/parser.js +4 -125
  143. package/vendor/aql/parser/parser.js.map +1 -1
  144. package/vendor/aql/plan/catalogue.js +0 -35
  145. package/vendor/aql/plan/catalogue.js.map +1 -1
  146. package/vendor/aql/plan/compile.js +0 -68
  147. package/vendor/aql/plan/compile.js.map +1 -1
  148. package/vendor/aql/plan/deepMap.js +0 -16
  149. package/vendor/aql/plan/deepMap.js.map +1 -1
  150. package/vendor/aql/plan/execute.js +0 -91
  151. package/vendor/aql/plan/execute.js.map +1 -1
  152. package/vendor/aql/plan/magnitudeLiteral.js +0 -29
  153. package/vendor/aql/plan/magnitudeLiteral.js.map +1 -1
  154. package/vendor/aql/plan/observable.js +0 -31
  155. package/vendor/aql/plan/observable.js.map +1 -1
  156. package/vendor/aql/plan/observableFixture.js +0 -3
  157. package/vendor/aql/plan/observableFixture.js.map +1 -1
  158. package/vendor/aql/plan/operators.js +0 -35
  159. package/vendor/aql/plan/operators.js.map +1 -1
  160. package/vendor/aql/plan/outer.js +0 -16
  161. package/vendor/aql/plan/outer.js.map +1 -1
  162. package/vendor/aql/predicate/mapExpressionToQlPredicate.js +1 -46
  163. package/vendor/aql/predicate/mapExpressionToQlPredicate.js.map +1 -1
  164. package/vendor/aql/predicate/mapQlPredicateToExpression.js +0 -13
  165. package/vendor/aql/predicate/mapQlPredicateToExpression.js.map +1 -1
  166. package/vendor/aql/store/computedValueStore.js +0 -35
  167. package/vendor/aql/store/computedValueStore.js.map +1 -1
  168. package/vendor/aql/store/history/clock.js +0 -1
  169. package/vendor/aql/store/history/clock.js.map +1 -1
  170. package/vendor/aql/store/history/historyStore.js +0 -14
  171. package/vendor/aql/store/history/historyStore.js.map +1 -1
  172. package/vendor/aql/store/history/monotonicDeque.js +0 -9
  173. package/vendor/aql/store/history/monotonicDeque.js.map +1 -1
  174. package/vendor/aql/store/history/operators.js +0 -13
  175. package/vendor/aql/store/history/operators.js.map +1 -1
  176. package/vendor/aql/store/history/ringBuffer.js +0 -12
  177. package/vendor/aql/store/history/ringBuffer.js.map +1 -1
  178. package/vendor/aql/store/history/rowSeries.js +0 -17
  179. package/vendor/aql/store/history/rowSeries.js.map +1 -1
  180. package/vendor/aql/store/history/types.js +0 -18
  181. package/vendor/aql/store/history/types.js.map +1 -1
  182. package/vendor/aql/tokenizer/tokenizer.js +0 -3
  183. package/vendor/aql/tokenizer/tokenizer.js.map +1 -1
  184. package/vendor/aql/types.js +0 -27
  185. package/vendor/aql/types.js.map +1 -1
  186. package/vendor/aql/utils/astUtils.js +0 -1
  187. package/vendor/aql/utils/astUtils.js.map +1 -1
  188. package/vendor/aql/utils/dependencyCycle.js +0 -5
  189. package/vendor/aql/utils/dependencyCycle.js.map +1 -1
  190. package/vendor/aql/validation/classifyExpression.js +0 -4
  191. package/vendor/aql/validation/classifyExpression.js.map +1 -1
  192. package/vendor/aql/validation/functionMetadata.js +0 -31
  193. package/vendor/aql/validation/functionMetadata.js.map +1 -1
  194. package/vendor/aql/validation/validateAqlExpression.js +2 -81
  195. package/vendor/aql/validation/validateAqlExpression.js.map +1 -1
  196. package/vendor/aql/validation/validateExpressionTypes.js +0 -64
  197. package/vendor/aql/validation/validateExpressionTypes.js.map +1 -1
  198. package/vendor/components/Button/index.js +0 -6
  199. package/vendor/components/Button/index.js.map +1 -1
  200. package/vendor/components/ColorField/index.js +0 -18
  201. package/vendor/components/ColorField/index.js.map +1 -1
  202. package/vendor/components/ColorPicker/colorPickerTab.js +0 -6
  203. package/vendor/components/ColorPicker/colorPickerTab.js.map +1 -1
  204. package/vendor/components/ColorPicker/index.js +1 -66
  205. package/vendor/components/ColorPicker/index.js.map +1 -1
  206. package/vendor/components/ColorPicker/themeColors.js +0 -55
  207. package/vendor/components/ColorPicker/themeColors.js.map +1 -1
  208. package/vendor/components/Combobox/VirtualizedList.js +0 -5
  209. package/vendor/components/Combobox/VirtualizedList.js.map +1 -1
  210. package/vendor/components/Combobox/comboboxUtils.js +0 -5
  211. package/vendor/components/Combobox/comboboxUtils.js.map +1 -1
  212. package/vendor/components/Combobox/index.js +7 -106
  213. package/vendor/components/Combobox/index.js.map +1 -1
  214. package/vendor/components/Combobox/useScrollNearEnd.js +0 -6
  215. package/vendor/components/Combobox/useScrollNearEnd.js.map +1 -1
  216. package/vendor/components/DropdownButton/index.js +0 -5
  217. package/vendor/components/DropdownButton/index.js.map +1 -1
  218. package/vendor/components/NumberInput/index.js +0 -10
  219. package/vendor/components/NumberInput/index.js.map +1 -1
  220. package/vendor/components/Resizable/index.js +3 -26
  221. package/vendor/components/Resizable/index.js.map +1 -1
  222. package/vendor/components/Resizable/resizableUtils.js +0 -24
  223. package/vendor/components/Resizable/resizableUtils.js.map +1 -1
  224. package/vendor/components/SearchInput/index.js +0 -5
  225. package/vendor/components/SearchInput/index.js.map +1 -1
  226. package/vendor/components/Tree/TreeDropdown/index.js +3 -139
  227. package/vendor/components/Tree/TreeDropdown/index.js.map +1 -1
  228. package/vendor/components/Tree/treeUtils.js +0 -4
  229. package/vendor/components/Tree/treeUtils.js.map +1 -1
  230. package/vendor/components/index.css +71 -71
  231. package/vendor/components/index.js +0 -5
  232. package/vendor/components/index.js.map +1 -1
  233. package/vendor/components/lib/useProperty.js +0 -18
  234. package/vendor/components/lib/useProperty.js.map +1 -1
  235. package/vendor/components/twMerge.js +0 -2
  236. package/vendor/components/twMerge.js.map +1 -1
  237. package/vendor/components/twUtils.js +3 -12
  238. package/vendor/components/twUtils.js.map +1 -1
  239. package/vendor/components/ui/alert-dialog.js +0 -4
  240. package/vendor/components/ui/alert-dialog.js.map +1 -1
  241. package/vendor/components/ui/calendar.js +1 -9
  242. package/vendor/components/ui/calendar.js.map +1 -1
  243. package/vendor/components/ui/combobox.js +2 -38
  244. package/vendor/components/ui/combobox.js.map +1 -1
  245. package/vendor/components/ui/dialog.js +0 -4
  246. package/vendor/components/ui/dialog.js.map +1 -1
  247. package/vendor/components/ui/input-group.js +3 -12
  248. package/vendor/components/ui/input-group.js.map +1 -1
  249. package/vendor/components/ui/tabs.js +0 -3
  250. package/vendor/components/ui/tabs.js.map +1 -1
@@ -4,9 +4,6 @@ import { resolveDateComparisonPair } from '../../dateUtils.js';
4
4
  import { getSubjectDataType } from '../helpers.js';
5
5
  export const GTE = {
6
6
  handler(args, context) {
7
- // Ordering against a missing value is undefined, not "compared to 0":
8
- // a blank cell is neither below nor above a threshold, and an observable
9
- // read with no history yet (`HIGHEST{…}` → null) is not a level.
10
7
  if (args[0] == null || args[1] == null) {
11
8
  return false;
12
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GTE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/GTE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,sEAAsE;QACtE,yEAAyE;QACzE,iEAAiE;QACjE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,IAAI,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,gIAAgI;IAClI,UAAU,EAAE;QACV,kBAAkB;QAClB,cAAc;QACd,2BAA2B;QAC3B,uBAAuB;KACxB;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;IAC7E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"GTE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/GTE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAI1B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,IAAI,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,gIAAgI;IAClI,UAAU,EAAE;QACV,kBAAkB;QAClB,cAAc;QACd,2BAA2B;QAC3B,uBAAuB;KACxB;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;IAC7E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,9 +1,4 @@
1
1
  import { evaluateNode } from '../../../evaluator/evaluateNode.js';
2
- /**
3
- * Only the selected branch is evaluated (like `CASE`). Besides the cost, this
4
- * is a correctness property: a throwing / N/A branch must not fail the
5
- * expression when the condition does not select it.
6
- */
7
2
  export const IF = {
8
3
  handler([conditionNode, trueNode, falseNode], context) {
9
4
  return evaluateNode(conditionNode, context)
@@ -1 +1 @@
1
- {"version":3,"file":"IF.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAQ,EAAE,OAAO;QAC1D,OAAO,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;YACzC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;YACjC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,8IAA8I;IAChJ,UAAU,EAAE;QACV,oCAAoC;QACpC,yDAAyD;KAC1D;IACD,QAAQ,EAAE;QACR,iCAAiC;QACjC,+CAA+C;KAChD;IACD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IF.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAS/D,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAQ,EAAE,OAAO;QAC1D,OAAO,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;YACzC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;YACjC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,8IAA8I;IAChJ,UAAU,EAAE;QACV,oCAAoC;QACpC,yDAAyD;KAC1D;IACD,QAAQ,EAAE;QACR,iCAAiC;QACjC,+CAA+C;KAChD;IACD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,9 +1,5 @@
1
1
  import { ExpressionEvaluationError } from '../../../evaluator/ExpressionEvaluationError.js';
2
2
  import { evaluateNode } from '../../../evaluator/evaluateNode.js';
3
- /**
4
- * Excel IFERROR: evaluate `value`; on any expression evaluation error return
5
- * `fallback`. Uses eager evaluation so the fallback is only evaluated when needed.
6
- */
7
3
  export const IFERROR = {
8
4
  handler([valueNode, fallbackNode], context) {
9
5
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"IFERROR.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IFERROR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAA8C;IAChE,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAQ,EAAE,OAAO;QAC/C,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,mJAAmJ;IACrJ,UAAU,EAAE,CAAC,oCAAoC,CAAC;IAClD,QAAQ,EAAE,CAAC,iCAAiC,EAAE,0BAA0B,CAAC;IACzE,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IFERROR.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IFERROR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAQ/D,MAAM,CAAC,MAAM,OAAO,GAA8C;IAChE,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAQ,EAAE,OAAO;QAC/C,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,mJAAmJ;IACrJ,UAAU,EAAE,CAAC,oCAAoC,CAAC;IAClD,QAAQ,EAAE,CAAC,iCAAiC,EAAE,0BAA0B,CAAC;IACzE,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,10 +1,5 @@
1
1
  import { ExpressionNaError } from '../../../evaluator/ExpressionNaError.js';
2
2
  import { evaluateNode } from '../../../evaluator/evaluateNode.js';
3
- /**
4
- * Excel IFNA: evaluate `value`; on `#N/A` ({@link ExpressionNaError}) return
5
- * `fallback`. Other evaluation errors propagate. Null/blank are not `#N/A`
6
- * (use COALESCE / IS_BLANK for those).
7
- */
8
3
  export const IFNA = {
9
4
  handler([valueNode, fallbackNode], context) {
10
5
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"IFNA.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IFNA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAA8C;IAC7D,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAQ,EAAE,OAAO;QAC/C,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,yLAAyL;IAC3L,UAAU,EAAE,CAAC,iCAAiC,CAAC;IAC/C,QAAQ,EAAE,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC3D,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IFNA.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IFNA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAS/D,MAAM,CAAC,MAAM,IAAI,GAA8C;IAC7D,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAQ,EAAE,OAAO;QAC/C,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,WAAW,EACT,yLAAyL;IAC3L,UAAU,EAAE,CAAC,iCAAiC,CAAC;IAC/C,QAAQ,EAAE,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC3D,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IN.d.ts","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IN.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAIvF,eAAO,MAAM,EAAE,EAAE,kBAAkB,CAAC,qBAAqB,CAsExD,CAAC"}
1
+ {"version":3,"file":"IN.d.ts","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IN.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AA+EvF,eAAO,MAAM,EAAE,EAAE,kBAAkB,CAAC,qBAAqB,CA8ExD,CAAC"}
@@ -1,9 +1,54 @@
1
1
  import { getExpressionArgColumnId } from '../../../types.js';
2
- import { getStringValue } from '../../utils.js';
2
+ import { getStringValue, isTextSearchCaseInsensitive } from '../../utils.js';
3
3
  import { matchDateInList } from '../../dateUtils.js';
4
+ const constantListLookups = new WeakMap();
5
+ const isLiteral = (entry) => entry == null ||
6
+ typeof entry === 'string' ||
7
+ typeof entry === 'number' ||
8
+ typeof entry === 'boolean';
9
+ const buildConstantListLookup = (listNode) => {
10
+ const lookup = { strings: new Set(), nonStrings: new Set() };
11
+ for (const entry of listNode) {
12
+ if (typeof entry === 'string') {
13
+ lookup.strings.add(entry);
14
+ }
15
+ else {
16
+ lookup.nonStrings.add(entry);
17
+ }
18
+ }
19
+ return lookup;
20
+ };
21
+ const getConstantListLookup = (listNode, haystack) => {
22
+ if (!Array.isArray(listNode) || listNode.length !== haystack.length) {
23
+ return undefined;
24
+ }
25
+ let lookup = constantListLookups.get(listNode);
26
+ if (lookup === undefined) {
27
+ lookup = listNode.every(isLiteral) ? buildConstantListLookup(listNode) : null;
28
+ constantListLookups.set(listNode, lookup);
29
+ }
30
+ if (!lookup) {
31
+ return undefined;
32
+ }
33
+ for (let i = 0; i < haystack.length; i++) {
34
+ if (haystack[i] !== listNode[i]) {
35
+ return undefined;
36
+ }
37
+ }
38
+ return lookup;
39
+ };
40
+ const constantListIncludes = (lookup, item, caseInsensitive) => {
41
+ if (typeof item !== 'string') {
42
+ return lookup.nonStrings.has(item);
43
+ }
44
+ if (!caseInsensitive) {
45
+ return lookup.strings.has(item);
46
+ }
47
+ lookup.lowerCaseStrings ??= new Set(Array.from(lookup.strings, (entry) => entry.toLowerCase()));
48
+ return lookup.lowerCaseStrings.has(item.toLowerCase());
49
+ };
4
50
  export const IN = {
5
51
  handler([needle, haystack], context) {
6
- // Auto-group / tree group column: path membership (legacy In semantics).
7
52
  const subjectColumnId = getExpressionArgColumnId(context.argNodes?.[0]) ?? context.columnScope;
8
53
  const subjectColumn = subjectColumnId ? context.host.getColumn(subjectColumnId) : undefined;
9
54
  if (subjectColumn?.isGroupColumn && context.host.grouping?.matchGroupColumnPaths) {
@@ -15,14 +60,10 @@ export const IN = {
15
60
  });
16
61
  }
17
62
  const haystackList = Array.isArray(haystack) ? haystack : [haystack];
18
- // Date membership: `list.includes` is reference equality for Date, and
19
- // string cells never match `DATE(...)` Dates. Use legacy In day/time
20
- // semantics. Trigger only for date
21
- // columns or when a Date instance is present — do not sniff free text
22
- // (e.g. "United States") as dates.
63
+ const constantLookup = getConstantListLookup(context.argNodes?.[1], haystackList);
23
64
  const useDateMatching = subjectColumn?.dataType === 'date' ||
24
65
  needle instanceof Date ||
25
- haystackList.some((entry) => entry instanceof Date);
66
+ (!constantLookup && haystackList.some((entry) => entry instanceof Date));
26
67
  if (useDateMatching) {
27
68
  return matchDateInList({
28
69
  value: needle,
@@ -31,6 +72,11 @@ export const IN = {
31
72
  context,
32
73
  });
33
74
  }
75
+ if (constantLookup) {
76
+ const caseInsensitive = isTextSearchCaseInsensitive(context);
77
+ const includes = (item) => constantListIncludes(constantLookup, item, caseInsensitive);
78
+ return Array.isArray(needle) ? needle.some(includes) : includes(needle);
79
+ }
34
80
  const listIncludes = (list, item) => {
35
81
  if (typeof item === 'string') {
36
82
  const normalised = getStringValue(context, item);
@@ -38,8 +84,6 @@ export const IN = {
38
84
  }
39
85
  return list.includes(item);
40
86
  };
41
- // Array-column parity with the legacy In predicate: the cell is an
42
- // array and matches when any of its elements is in the selection.
43
87
  if (Array.isArray(needle)) {
44
88
  return needle.some((item) => listIncludes(haystackList, item));
45
89
  }
@@ -60,7 +104,6 @@ export const IN = {
60
104
  ['number', 'number[]'],
61
105
  ['date', 'date[]'],
62
106
  ['text', 'text[]'],
63
- // Array columns (legacy In / NotIn on textArray / numberArray)
64
107
  ['number[]', 'number[]'],
65
108
  ['text[]', 'text[]'],
66
109
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"IN.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IN.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IN.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IN.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  export const IS_BLANK = {
2
2
  handler(args) {
3
3
  const value = args[0];
4
- // Array-column parity with the legacy Blanks predicate.
5
4
  if (Array.isArray(value)) {
6
5
  return value.length === 0;
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IS_BLANK.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_BLANK.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAA8C;IACjE,OAAO,CAAC,IAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,wDAAwD;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC/D,CAAC;IACD,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,mFAAmF;IACrF,UAAU,EAAE,CAAC,sBAAsB,CAAC;IACpC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;IACvD,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IS_BLANK.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_BLANK.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAA8C;IACjE,OAAO,CAAC,IAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC/D,CAAC;IACD,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,mFAAmF;IACrF,UAAU,EAAE,CAAC,sBAAsB,CAAC;IACpC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;IACvD,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -2,7 +2,6 @@ import { normalizeDateParam } from '../../dateUtils.js';
2
2
  import { getCalendar } from '../helpers.js';
3
3
  export const IS_DIFFERENT_DAY = {
4
4
  handler(args, context) {
5
- // Inverse of IS_SAME_DAY (time ignored).
6
5
  return !getCalendar(context, 'IS_DIFFERENT_DAY').isSameDay(normalizeDateParam(args[0]), normalizeDateParam(args[1]));
7
6
  },
8
7
  description: 'Returns true if two dates fall on different calendar days (time ignored).',
@@ -1 +1 @@
1
- {"version":3,"file":"IS_DIFFERENT_DAY.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_DIFFERENT_DAY.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAA8C;IACzE,OAAO,CAAC,IAAsD,EAAE,OAAO;QACrE,yCAAyC;QACzC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,SAAS,CACxD,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,2EAA2E;IACxF,UAAU,EAAE,CAAC,oCAAoC,CAAC;IAClD,QAAQ,EAAE;QACR,+CAA+C;QAC/C,4CAA4C;KAC7C;IACD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IS_DIFFERENT_DAY.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_DIFFERENT_DAY.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAA8C;IACzE,OAAO,CAAC,IAAsD,EAAE,OAAO;QAErE,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,SAAS,CACxD,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3B,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,2EAA2E;IACxF,UAAU,EAAE,CAAC,oCAAoC,CAAC;IAClD,QAAQ,EAAE;QACR,+CAA+C;QAC/C,4CAA4C;KAC7C;IACD,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  export const IS_NOT_BLANK = {
2
2
  handler(args) {
3
3
  const value = args[0];
4
- // Array-column parity with the legacy NonBlanks predicate.
5
4
  if (Array.isArray(value)) {
6
5
  return value.length > 0;
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IS_NOT_BLANK.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_NOT_BLANK.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAA8C;IACrE,OAAO,CAAC,IAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,2DAA2D;QAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9E,CAAC;IACD,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,yFAAyF;IACtG,UAAU,EAAE,CAAC,0BAA0B,CAAC;IACxC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;IAC/D,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"IS_NOT_BLANK.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/IS_NOT_BLANK.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAA8C;IACrE,OAAO,CAAC,IAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9E,CAAC;IACD,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,yFAAyF;IACtG,UAAU,EAAE,CAAC,0BAA0B,CAAC;IACxC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;IAC/D,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -4,9 +4,6 @@ import { resolveDateComparisonPair } from '../../dateUtils.js';
4
4
  import { getSubjectDataType } from '../helpers.js';
5
5
  export const LT = {
6
6
  handler(args, context) {
7
- // Ordering against a missing value is undefined, not "compared to 0":
8
- // a blank cell is neither below nor above a threshold, and an observable
9
- // read with no history yet (`HIGHEST{…}` → null) is not a level.
10
7
  if (args[0] == null || args[1] == null) {
11
8
  return false;
12
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LT.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/LT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,sEAAsE;QACtE,yEAAyE;QACzE,iEAAiE;QACjE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,+GAA+G;IACjH,UAAU,EAAE;QACV,iBAAiB;QACjB,aAAa;QACb,0BAA0B;QAC1B,sBAAsB;KACvB;IACD,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,2BAA2B,CAAC;IAC1E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"LT.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/LT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,IAAW,EAAE,OAAO;QAI1B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,+GAA+G;IACjH,UAAU,EAAE;QACV,iBAAiB;QACjB,aAAa;QACb,0BAA0B;QAC1B,sBAAsB;KACvB;IACD,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,2BAA2B,CAAC;IAC1E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -4,9 +4,6 @@ import { resolveDateComparisonPair } from '../../dateUtils.js';
4
4
  import { getSubjectDataType } from '../helpers.js';
5
5
  export const LTE = {
6
6
  handler(args, context) {
7
- // Ordering against a missing value is undefined, not "compared to 0":
8
- // a blank cell is neither below nor above a threshold, and an observable
9
- // read with no history yet (`HIGHEST{…}` → null) is not a level.
10
7
  if (args[0] == null || args[1] == null) {
11
8
  return false;
12
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LTE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/LTE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,sEAAsE;QACtE,yEAAyE;QACzE,iEAAiE;QACjE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,IAAI,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,6HAA6H;IAC/H,UAAU,EAAE;QACV,kBAAkB;QAClB,cAAc;QACd,2BAA2B;QAC3B,uBAAuB;KACxB;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;IAC7E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"LTE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/LTE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAI1B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,eAAe,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,KAAK,IAAI,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,6HAA6H;IAC/H,UAAU,EAAE;QACV,kBAAkB;QAClB,cAAc;QACd,2BAA2B;QAC3B,uBAAuB;KACxB;IACD,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,4BAA4B,CAAC;IAC7E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;KACjB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,7 +1,4 @@
1
1
  import { ExpressionNaError } from '../../../evaluator/ExpressionNaError.js';
2
- /**
3
- * Excel NA(): produces an N/A result ({@link ExpressionNaError}) for IFNA / IFERROR.
4
- */
5
2
  export const NA = {
6
3
  handler() {
7
4
  throw new ExpressionNaError('NA', 'N/A');
@@ -1 +1 @@
1
- {"version":3,"file":"NA.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAIzE;;GAEG;AACH,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO;QACL,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,WAAW,EACT,+FAA+F;IACjG,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACvD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"NA.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAOzE,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO;QACL,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,WAAW,EACT,+FAA+F;IACjG,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACvD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { getStringValues } from '../../utils.js';
2
2
  export const NOT_CONTAINS = {
3
3
  handler(args, context) {
4
- // Blank cell contains nothing → NOT_CONTAINS is true (inverse of CONTAINS).
5
4
  if (!args[0]) {
6
5
  return true;
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NOT_CONTAINS.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NOT_CONTAINS.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAA8C;IACrE,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,4EAA4E;QAC5E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,yIAAyI;IAC3I,UAAU,EAAE,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;IAC5E,QAAQ,EAAE,CAAC,8BAA8B,EAAE,gCAAgC,CAAC;IAC5E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"NOT_CONTAINS.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NOT_CONTAINS.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAA8C;IACrE,OAAO,CAAC,IAAW,EAAE,OAAO;QAE1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,yIAAyI;IAC3I,UAAU,EAAE,CAAC,4BAA4B,EAAE,gCAAgC,CAAC;IAC5E,QAAQ,EAAE,CAAC,8BAA8B,EAAE,gCAAgC,CAAC;IAC5E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,9 +1,6 @@
1
1
  import { IN } from './IN.js';
2
2
  export const NOT_IN = {
3
3
  handler(args, context) {
4
- // Exact inverse of IN (shares its list / date / array / group-path
5
- // semantics). Resolved from the active pool so a host override of IN
6
- // (e.g. expressionOptions.customStandardFunctions) inverts for free.
7
4
  const inFunction = context?.functions?.IN ?? IN;
8
5
  return !inFunction.handler(args, context);
9
6
  },
@@ -1 +1 @@
1
- {"version":3,"file":"NOT_IN.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NOT_IN.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAA8C;IAC/D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,mEAAmE;QACnE,qEAAqE;QACrE,qEAAqE;QACrE,MAAM,UAAU,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,wIAAwI;IAC1I,UAAU,EAAE,CAAC,kCAAkC,CAAC;IAChD,QAAQ,EAAE;QACR,6BAA6B;QAC7B,+BAA+B;QAC/B,2DAA2D;QAC3D,0BAA0B;KAC3B;IACD,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,UAAU,CAAC;QACtB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACrB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"NOT_IN.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/NOT_IN.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAA8C;IAC/D,OAAO,CAAC,IAAW,EAAE,OAAO;QAI1B,MAAM,UAAU,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ,EAAE,YAAY;IACtB,WAAW,EACT,wIAAwI;IAC1I,UAAU,EAAE,CAAC,kCAAkC,CAAC;IAChD,QAAQ,EAAE;QACR,6BAA6B;QAC7B,+BAA+B;QAC/B,2DAA2D;QAC3D,0BAA0B;KAC3B;IACD,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,UAAU,CAAC;QACtB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAClB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACrB;IACD,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,8 +1,4 @@
1
1
  import { evaluateNode } from '../../../evaluator/evaluateNode.js';
2
- /**
3
- * Short-circuit: operands are evaluated left to right and evaluation stops at
4
- * the first truthy one.
5
- */
6
2
  export const OR = {
7
3
  handler(operandNodes, context) {
8
4
  for (const operandNode of operandNodes) {
@@ -1 +1 @@
1
- {"version":3,"file":"OR.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/OR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D;;;GAGG;AACH,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,YAAmB,EAAE,OAAO;QAClC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,gHAAgH;IAClH,UAAU,EAAE,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;IACpE,QAAQ,EAAE,CAAC,8BAA8B,EAAE,iDAAiD,CAAC;IAC7F,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"OR.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/OR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAQ/D,MAAM,CAAC,MAAM,EAAE,GAA8C;IAC3D,OAAO,CAAC,YAAmB,EAAE,OAAO;QAClC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kBAAkB,EAAE,IAAI;IACxB,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,gHAAgH;IAClH,UAAU,EAAE,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;IACpE,QAAQ,EAAE,CAAC,8BAA8B,EAAE,iDAAiD,CAAC;IAC7F,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,16 +1,10 @@
1
1
  import { flattenArguments, sanitizeNumericResult } from '../helpers.js';
2
- /**
3
- * Scalar product — backs infix `*` and Excel-style `PRODUCT(a, b, …)`.
4
- * Aggregated `PRODUCT([col])` lives in the aggregated pack (dual name by pool).
5
- */
6
2
  export const PRODUCT = {
7
3
  handler(args) {
8
4
  const values = flattenArguments(args);
9
5
  if (!values.length) {
10
6
  return;
11
7
  }
12
- // Unlike SUM, empty operands are NOT skipped: skipping would treat a
13
- // missing value as 1 and invent a result. Propagate blank instead.
14
8
  if (values.some((value) => value == undefined || value === '')) {
15
9
  return;
16
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PRODUCT.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/PRODUCT.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAA8C;IAChE,OAAO,CAAC,IAAW;QACjB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,qEAAqE;QACrE,mEAAmE;QACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,OAAO,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,WAAW,EACT,kGAAkG;IACpG,UAAU,EAAE,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;IACrE,QAAQ,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,CAAC;IACtE,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"PRODUCT.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/PRODUCT.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMrE,MAAM,CAAC,MAAM,OAAO,GAA8C;IAChE,OAAO,CAAC,IAAW;QACjB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAGD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,OAAO,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,WAAW,EACT,kGAAkG;IACpG,UAAU,EAAE,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;IACrE,QAAQ,EAAE,CAAC,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,CAAC;IACtE,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -11,7 +11,6 @@ export const QUERY = {
11
11
  if (!namedQueryExpression) {
12
12
  throw new ExpressionEvaluationError('QUERY', `Named Query with name ${namedQueryName} not found!`);
13
13
  }
14
- // Detect circular QUERY("...") references via the shared evaluation stack.
15
14
  if (context.namedQueryCallStack.includes(namedQueryName)) {
16
15
  const cycle = [...context.namedQueryCallStack, namedQueryName];
17
16
  throw new ExpressionEvaluationError(`${namedQueryName}`, ` contains a circular reference: ${cycle.join(' -> ')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"QUERY.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/QUERY.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,EAAE,CAC/E,cAAc,CACf,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,yBAAyB,CACjC,OAAO,EACP,yBAAyB,cAAc,aAAa,CACrD,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;YAC/D,MAAM,IAAI,yBAAyB,CACjC,GAAG,cAAc,EAAE,EACnB,mCAAmC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,WAAW;IACrB,WAAW,EACT,qIAAqI;IACvI,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,QAAQ,EAAE;QACR,wBAAwB;QACxB,mCAAmC;QACnC,mDAAmD;KACpD;IACD,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"QUERY.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/QUERY.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,EAAE,CAC/E,cAAc,CACf,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,yBAAyB,CACjC,OAAO,EACP,yBAAyB,cAAc,aAAa,CACrD,CAAC;QACJ,CAAC;QAGD,IAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;YAC/D,MAAM,IAAI,yBAAyB,CACjC,GAAG,cAAc,EAAE,EACnB,mCAAmC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,WAAW;IACrB,WAAW,EACT,qIAAqI;IACvI,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,QAAQ,EAAE;QACR,wBAAwB;QACxB,mCAAmC;QACnC,mDAAmD;KACpD;IACD,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,6 +1,5 @@
1
1
  export const REGEX = {
2
2
  handler(args) {
3
- // dont need context as here we always want case insenstivity in the Regex
4
3
  const firstInput = String(args[0]);
5
4
  const regex = String(args[1]);
6
5
  return RegExp(regex).test(firstInput);
@@ -1 +1 @@
1
- {"version":3,"file":"REGEX.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/REGEX.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW;QACjB,0EAA0E;QAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,WAAW,EAAE,kEAAkE;IAC/E,UAAU,EAAE,CAAC,4BAA4B,CAAC;IAC1C,QAAQ,EAAE,CAAC,8BAA8B,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,SAAS;IACrB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"REGEX.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/REGEX.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW;QAEjB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,WAAW,EAAE,kEAAkE;IAC/E,UAAU,EAAE,CAAC,4BAA4B,CAAC;IAC1C,QAAQ,EAAE,CAAC,8BAA8B,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,SAAS;IACrB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -5,7 +5,6 @@ export const SCOPE = {
5
5
  if (!scopeColumnId) {
6
6
  throw new ExpressionEvaluationError('$SCOPE', `$SCOPE is not available in this context`);
7
7
  }
8
- // Same resolution as COL: validation, cell-value override, aliases.
9
8
  return context.resolveColumnValue(scopeColumnId, { reference: '$SCOPE' });
10
9
  },
11
10
  description: 'Returns the value of the column in the current scope (e.g. Format Column / Alert column context).',
@@ -15,9 +14,6 @@ export const SCOPE = {
15
14
  returnType: 'any',
16
15
  operands: [[]],
17
16
  enforceOperandTypes: true,
18
- // Handler throws without context.columnScope; protected (the global
19
- // override cannot alter this). Hosts map this requirement to the
20
- // surfaces that supply a columnScope.
21
17
  requires: ['columnScope'],
22
18
  };
23
19
  //# sourceMappingURL=SCOPE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SCOPE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SCOPE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAIzF,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,KAAY,EAAE,OAAO;QAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,yBAAyB,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;QAC3F,CAAC;QACD,oEAAoE;QACpE,OAAO,OAAO,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,WAAW,EACT,mGAAmG;IACrG,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,QAAQ,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,mBAAmB,EAAE,IAAI;IACzB,oEAAoE;IACpE,iEAAiE;IACjE,sCAAsC;IACtC,QAAQ,EAAE,CAAC,aAAa,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"SCOPE.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SCOPE.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAIzF,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,KAAY,EAAE,OAAO;QAC3B,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,yBAAyB,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,OAAO,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,WAAW,EACT,mGAAmG;IACrG,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,QAAQ,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,mBAAmB,EAAE,IAAI;IAIzB,QAAQ,EAAE,CAAC,aAAa,CAAC;CAC1B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { getStringValues } from '../../utils.js';
2
2
  export const STARTS_WITH = {
3
3
  handler(args, context) {
4
- // Parity with legacy StartsWith (`if (!value) return false`).
5
4
  if (!args[0]) {
6
5
  return false;
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"STARTS_WITH.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/STARTS_WITH.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAA8C;IACpE,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,2BAA2B,EAAE,+BAA+B,CAAC;IAC1E,QAAQ,EAAE,CAAC,6BAA6B,EAAE,+BAA+B,CAAC;IAC1E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"STARTS_WITH.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/STARTS_WITH.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAA8C;IACpE,OAAO,CAAC,IAAW,EAAE,OAAO;QAE1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,EAAE,MAAM;IAChB,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,2BAA2B,EAAE,+BAA+B,CAAC;IAC1E,QAAQ,EAAE,CAAC,6BAA6B,EAAE,+BAA+B,CAAC;IAC1E,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -3,7 +3,6 @@ export const SUB = {
3
3
  handler(args) {
4
4
  const sanitizedArguments = sanitizeArguments(args);
5
5
  if (args.length && !sanitizedArguments.length) {
6
- // expression is syntactically valid, but operates with incompatible values
7
6
  return;
8
7
  }
9
8
  return sanitizedArguments.reduce((a, b) => a - b);
@@ -1 +1 @@
1
- {"version":3,"file":"SUB.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SUB.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW;QACjB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC9C,2EAA2E;YAC3E,OAAO;QACT,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,EACT,6FAA6F;IAC/F,UAAU,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IAC5D,QAAQ,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"SUB.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SUB.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW;QACjB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAE9C,OAAO;QACT,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,EACT,6FAA6F;IAC/F,UAAU,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IAC5D,QAAQ,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChC,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,13 +1,8 @@
1
1
  import { flattenArguments, sanitizeArguments } from '../helpers.js';
2
- /**
3
- * Scalar sum — backs infix `+` and Excel-style `SUM(a, b, …)`.
4
- * Aggregated `SUM([col])` lives in the aggregated pack (dual name by pool).
5
- */
6
2
  export const SUM = {
7
3
  handler(args) {
8
4
  const sanitizedArguments = sanitizeArguments(flattenArguments(args), true);
9
5
  if (args.length && !sanitizedArguments.length) {
10
- // expression is syntactically valid, but operates with incompatible values
11
6
  return;
12
7
  }
13
8
  return sanitizedArguments.reduce((a, b) => a + b);
@@ -1 +1 @@
1
- {"version":3,"file":"SUM.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SUM.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW;QACjB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC9C,2EAA2E;YAC3E,OAAO;QACT,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,EACT,8FAA8F;IAChG,UAAU,EAAE,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;IACjE,QAAQ,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,cAAc,CAAC;IAC9D,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"SUM.js","sourceRoot":"","sources":["../../../../../src/functions/scalar/functions/SUM.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMjE,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW;QACjB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAE9C,OAAO;QACT,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,EACT,8FAA8F;IAChG,UAAU,EAAE,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;IACjE,QAAQ,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,cAAc,CAAC;IAC9D,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { ExpressionEvaluationError } from '../../evaluator/ExpressionEvaluationError.js';
2
2
  import { getExpressionArgColumnId } from '../../types.js';
3
3
  import { normalizeWeekStartsOn } from '../dateUtils.js';
4
- /** Flatten nested argument arrays (unary operators that accept lists). */
5
4
  export const flattenArguments = (values) => {
6
5
  if (!Array.isArray(values)) {
7
6
  return values;
@@ -17,7 +16,6 @@ export const sanitizeNumericResult = (value) => {
17
16
  }
18
17
  return value;
19
18
  };
20
- /** Throw when a required argument was omitted (arity), not when a cell is blank. */
21
19
  export const requireMinArgs = (functionName, args, min, expectedType) => {
22
20
  if (args.length < min) {
23
21
  const count = `${min} argument${min === 1 ? '' : 's'}`;
@@ -28,7 +26,6 @@ export const getSubjectDataType = (context) => {
28
26
  const subjectColumnId = getExpressionArgColumnId(context.argNodes?.[0]) ?? context.columnScope;
29
27
  return subjectColumnId ? context.host.getColumn(subjectColumnId)?.dataType : undefined;
30
28
  };
31
- /** Week start from host calendar when present; otherwise Sunday. */
32
29
  export const getWeekStartsOn = (context) => normalizeWeekStartsOn(context.host?.calendar?.getWeekStartsOn?.());
33
30
  export const getCalendar = (context, functionName) => {
34
31
  const calendar = context.host.calendar;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/functions/scalar/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAa,EAAE,EAAE;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAa,EAAE,QAAkB,EAAE,EAAE;IACrE,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAU,EAAE,EAAE;IAClD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,YAAoB,EACpB,IAAe,EACf,GAAW,EACX,YAAoB,EACd,EAAE;IACR,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACvD,MAAM,IAAI,yBAAyB,CACjC,YAAY,EACZ,WAAW,KAAK,YAAY,YAAY,EAAE,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA8B,EAAsB,EAAE;IACvF,MAAM,eAAe,GACnB,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC;IACzE,OAAO,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA8B,EAAE,EAAE,CAChE,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA8B,EAC9B,YAAoB,EACH,EAAE;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,yBAAyB,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA8B,EAAE,YAAoB,EAAE,EAAE;IACxF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAyB,CAAC,YAAY,EAAE,wCAAwC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,CAAC;AAChC,CAAC,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/functions/scalar/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAa,EAAE,EAAE;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAa,EAAE,QAAkB,EAAE,EAAE;IACrE,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAU,EAAE,EAAE;IAClD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,YAAoB,EACpB,IAAe,EACf,GAAW,EACX,YAAoB,EACd,EAAE;IACR,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACvD,MAAM,IAAI,yBAAyB,CACjC,YAAY,EACZ,WAAW,KAAK,YAAY,YAAY,EAAE,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA8B,EAAsB,EAAE;IACvF,MAAM,eAAe,GACnB,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC;IACzE,OAAO,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA8B,EAAE,EAAE,CAChE,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA8B,EAC9B,YAAoB,EACH,EAAE;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,yBAAyB,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA8B,EAAE,YAAoB,EAAE,EAAE;IACxF,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAyB,CAAC,YAAY,EAAE,wCAAwC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,OAAO,CAAC,cAAc,CAAC;AAChC,CAAC,CAAC"}
@@ -1,8 +1,5 @@
1
1
  import { ExpressionEvaluationError } from '../../evaluator/ExpressionEvaluationError.js';
2
2
  import { isNullOrEmpty } from '../utils.js';
3
- /**
4
- * Shared definition. Import into any expression pool that should expose FIELD.
5
- */
6
3
  export const FIELD = {
7
4
  handler(args, context) {
8
5
  const fieldName = args[0];
@@ -1 +1 @@
1
- {"version":3,"file":"FIELD.js","sourceRoot":"","sources":["../../../../src/functions/shared/FIELD.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,yBAAyB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACD,WAAW,EACT,+KAA+K;IACjL,UAAU,EAAE,CAAC,wBAAwB,CAAC;IACtC,QAAQ,EAAE;QACR,qBAAqB;QACrB,uBAAuB;QACvB,kCAAkC;KACnC;IACD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
1
+ {"version":3,"file":"FIELD.js","sourceRoot":"","sources":["../../../../src/functions/shared/FIELD.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,MAAM,CAAC,MAAM,KAAK,GAA8C;IAC9D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,yBAAyB,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACD,WAAW,EACT,+KAA+K;IACjL,UAAU,EAAE,CAAC,wBAAwB,CAAC;IACtC,QAAQ,EAAE;QACR,qBAAqB;QACrB,uBAAuB;QACvB,kCAAkC;KACnC;IACD,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpB,mBAAmB,EAAE,IAAI;CAC1B,CAAC"}
@@ -1,9 +1,5 @@
1
1
  import { ExpressionEvaluationError } from '../../evaluator/ExpressionEvaluationError.js';
2
2
  import { isNullOrEmpty } from '../utils.js';
3
- /**
4
- * Shared definition. Import into any expression pool that should expose VAR
5
- * (scalar, aggregated, and legacy observable).
6
- */
7
3
  export const VAR = {
8
4
  handler(args, context) {
9
5
  const [functionName, ...optionalArgs] = args;
@@ -1 +1 @@
1
- {"version":3,"file":"VAR.js","sourceRoot":"","sources":["../../../../src/functions/shared/VAR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;QAC7C,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;YAC9C,MAAM,IAAI,yBAAyB,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC7E,CAAC;IACD,WAAW,EACT,gJAAgJ;IAClJ,UAAU,EAAE,CAAC,cAAc,EAAE,6BAA6B,CAAC;IAC3D,QAAQ,EAAE;QACR,qBAAqB;QACrB,cAAc;QACd,mCAAmC;QACnC,mEAAmE;KACpE;IACD,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,KAAK;CAClB,CAAC"}
1
+ {"version":3,"file":"VAR.js","sourceRoot":"","sources":["../../../../src/functions/shared/VAR.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,MAAM,CAAC,MAAM,GAAG,GAA8C;IAC5D,OAAO,CAAC,IAAW,EAAE,OAAO;QAC1B,MAAM,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;QAC7C,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;YAC9C,MAAM,IAAI,yBAAyB,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC7E,CAAC;IACD,WAAW,EACT,gJAAgJ;IAClJ,UAAU,EAAE,CAAC,cAAc,EAAE,6BAA6B,CAAC;IAC3D,QAAQ,EAAE;QACR,qBAAqB;QACrB,cAAc;QACd,mCAAmC;QACnC,mEAAmE;KACpE;IACD,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,KAAK;CAClB,CAAC"}
@@ -1,12 +1,3 @@
1
- /**
2
- * Function definitions shared across expression pools (scalar / aggregated /
3
- * legacy observable). Pool indexes import from here and include the definition in
4
- * their assembled record — same object identity, pool-specific enhancements
5
- * still apply downstream.
6
- *
7
- * Same-name / different-semantics functions (e.g. COL) stay as separate files
8
- * under each pool's `functions/` directory.
9
- */
10
1
  export { VAR } from './VAR.js';
11
2
  export { FIELD } from './FIELD.js';
12
3
  //# sourceMappingURL=index.js.map