@almadar/evaluator 2.42.0 → 2.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -343,7 +343,10 @@ declare function evalLast(args: SExpr[], evaluate: Evaluator$2, ctx: EvaluationC
343
343
  */
344
344
  declare function evalNth(args: SExpr[], evaluate: Evaluator$2, ctx: EvaluationContext): RuntimeValue;
345
345
  /**
346
- * Evaluate concat: ["concat", collection1, collection2, ...]
346
+ * Array-concat semantics for a collection of args. Not wired to any bare
347
+ * "concat" S-expr head (removed as an ambiguous alias — use 'array/concat'
348
+ * or std/array.ts's evalArrayConcat, which is what "array/concat" dispatches
349
+ * to); kept as a plain exported utility.
347
350
  */
348
351
  declare function evalConcat(args: SExpr[], evaluate: Evaluator$2, ctx: EvaluationContext): RuntimeValue[];
349
352
  /**
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SExpr, RuntimeValue, ListenPayloadEvaluator } from '@almadar/core';
2
2
  export { CORE_BINDINGS, CoreBinding, Expression, ExpressionSchema, ParsedBinding, SExpr, SExprAtom, SExprSchema, UserContext, collectBindings, getArgs, getOperator, isBinding, isSExpr, isSExprAtom, isSExprCall, isValidBinding, parseBinding, sexpr, walkSExpr } from '@almadar/core';
3
- import { E as EvaluationContext } from './index-DY9A18IY.js';
4
- export { c as createChildContext, a as createEffectContext, b as createMinimalContext, e as evalAbs, d as evalAdd, f as evalAnd, g as evalAtomic, h as evalCallService, i as evalCeil, j as evalClamp, k as evalConcat, l as evalCount, m as evalDecrement, n as evalDeref, o as evalDespawn, p as evalDivide, q as evalDo, r as evalEmit, s as evalEmpty, t as evalEqual, u as evalFilter, v as evalFind, w as evalFirst, x as evalFloor, y as evalFn, z as evalGreaterThan, A as evalGreaterThanOrEqual, B as evalIf, C as evalIncludes, D as evalIncrement, F as evalLast, G as evalLessThan, H as evalLessThanOrEqual, I as evalLet, J as evalList, K as evalMap, L as evalMatches, M as evalMax, N as evalMin, O as evalModulo, P as evalMultiply, Q as evalNavigate, R as evalNot, S as evalNotEqual, T as evalNotify, U as evalNth, V as evalOr, W as evalPersist, X as evalRef, Y as evalRenderUI, Z as evalRound, _ as evalSet, $ as evalSetDynamic, a0 as evalSpawn, a1 as evalSubtract, a2 as evalSum, a3 as evalSwap, a4 as evalWatch, a5 as evalWhen, a6 as resolveBinding } from './index-DY9A18IY.js';
3
+ import { E as EvaluationContext } from './index-DDh6RIVu.js';
4
+ export { c as createChildContext, a as createEffectContext, b as createMinimalContext, e as evalAbs, d as evalAdd, f as evalAnd, g as evalAtomic, h as evalCallService, i as evalCeil, j as evalClamp, k as evalConcat, l as evalCount, m as evalDecrement, n as evalDeref, o as evalDespawn, p as evalDivide, q as evalDo, r as evalEmit, s as evalEmpty, t as evalEqual, u as evalFilter, v as evalFind, w as evalFirst, x as evalFloor, y as evalFn, z as evalGreaterThan, A as evalGreaterThanOrEqual, B as evalIf, C as evalIncludes, D as evalIncrement, F as evalLast, G as evalLessThan, H as evalLessThanOrEqual, I as evalLet, J as evalList, K as evalMap, L as evalMatches, M as evalMax, N as evalMin, O as evalModulo, P as evalMultiply, Q as evalNavigate, R as evalNot, S as evalNotEqual, T as evalNotify, U as evalNth, V as evalOr, W as evalPersist, X as evalRef, Y as evalRenderUI, Z as evalRound, _ as evalSet, $ as evalSetDynamic, a0 as evalSpawn, a1 as evalSubtract, a2 as evalSum, a3 as evalSwap, a4 as evalWatch, a5 as evalWhen, a6 as resolveBinding } from './index-DDh6RIVu.js';
5
5
 
6
6
  /**
7
7
  * S-Expression Evaluator
package/dist/index.js CHANGED
@@ -4163,6 +4163,13 @@ function evalPathReachable(args, evaluate2, ctx) {
4163
4163
 
4164
4164
  // SExpressionEvaluator.ts
4165
4165
  var UNKNOWN_OPERATOR = /* @__PURE__ */ Symbol("unknown-operator");
4166
+ function assertNotAmbiguousConcat(op) {
4167
+ if (op === "concat") {
4168
+ throw new Error(
4169
+ "Ambiguous operator 'concat': use 'str/concat' (string) or 'array/concat' (array)"
4170
+ );
4171
+ }
4172
+ }
4166
4173
  var OPERATOR_TABLE = {
4167
4174
  "+": evalAdd,
4168
4175
  "-": evalSubtract,
@@ -4201,7 +4208,6 @@ var OPERATOR_TABLE = {
4201
4208
  "first": evalFirst,
4202
4209
  "last": evalLast,
4203
4210
  "nth": evalNth,
4204
- "concat": evalConcat,
4205
4211
  "includes": evalIncludes,
4206
4212
  "empty": evalEmpty,
4207
4213
  "list": evalList,
@@ -4705,6 +4711,7 @@ var SExpressionEvaluator = class {
4705
4711
  } else {
4706
4712
  const op = getOperator(expr);
4707
4713
  const args = getArgs(expr);
4714
+ assertNotAmbiguousConcat(op);
4708
4715
  assertOperatorArity(op, args.length);
4709
4716
  const impl = OPERATOR_TABLE[op];
4710
4717
  for (const item of expr) {
@@ -4787,6 +4794,7 @@ var SExpressionEvaluator = class {
4787
4794
  * Dispatch to the appropriate operator implementation.
4788
4795
  */
4789
4796
  dispatchOperator(op, args, ctx) {
4797
+ assertNotAmbiguousConcat(op);
4790
4798
  assertOperatorArity(op, args.length);
4791
4799
  const impl = OPERATOR_TABLE[op];
4792
4800
  if (impl === void 0) return UNKNOWN_OPERATOR;