bare-script 3.8.6 → 3.8.7

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.
package/lib/runtime.js CHANGED
@@ -74,7 +74,8 @@ function executeScriptHelper(script, statements, options, locals) {
74
74
  // Jump?
75
75
  } else if (statementKey === 'jump') {
76
76
  // Evaluate the expression (if any)
77
- if (!('expr' in statement.jump) || evaluateExpression(statement.jump.expr, options, locals, false, script, statement)) {
77
+ if (!('expr' in statement.jump) ||
78
+ valueBoolean(evaluateExpression(statement.jump.expr, options, locals, false, script, statement))) {
78
79
  // Find the label
79
80
  if (labelIndexes !== null && statement.jump.label in labelIndexes) {
80
81
  ixStatement = labelIndexes[statement.jump.label];
@@ -222,7 +223,7 @@ export function evaluateExpression(expr, options = null, locals = null, builtins
222
223
  if (funcName === 'if') {
223
224
  const [valueExpr = null, trueExpr = null, falseExpr = null] = expr.function.args ?? [];
224
225
  const value = (valueExpr !== null ? evaluateExpression(valueExpr, options, locals, builtins, script, statement) : false);
225
- const resultExpr = (value ? trueExpr : falseExpr);
226
+ const resultExpr = (valueBoolean(value) ? trueExpr : falseExpr);
226
227
  return resultExpr !== null ? evaluateExpression(resultExpr, options, locals, builtins, script, statement) : null;
227
228
  }
228
229
 
@@ -80,7 +80,7 @@ async function executeScriptHelperAsync(script, statements, options, locals) {
80
80
  } else if (statementKey === 'jump') {
81
81
  // Evaluate the expression (if any)
82
82
  if (!('expr' in statement.jump) ||
83
- await evaluateExpressionAsync(statement.jump.expr, options, locals, false, script, statement)) {
83
+ valueBoolean(await evaluateExpressionAsync(statement.jump.expr, options, locals, false, script, statement))) {
84
84
  // Find the label
85
85
  if (labelIndexes !== null && statement.jump.label in labelIndexes) {
86
86
  ixStatement = labelIndexes[statement.jump.label];
@@ -289,7 +289,7 @@ export async function evaluateExpressionAsync(expr, options = null, locals = nul
289
289
  if (funcName === 'if') {
290
290
  const [valueExpr, trueExpr = null, falseExpr = null] = expr.function.args;
291
291
  const value = await evaluateExpressionAsync(valueExpr, options, locals, builtins, script, statement);
292
- const resultExpr = (value ? trueExpr : falseExpr);
292
+ const resultExpr = (valueBoolean(value) ? trueExpr : falseExpr);
293
293
  return resultExpr !== null ? evaluateExpressionAsync(resultExpr, options, locals, builtins, script, statement) : null;
294
294
  }
295
295
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "bare-script",
4
- "version": "3.8.6",
4
+ "version": "3.8.7",
5
5
  "description": "BareScript; a lightweight scripting and expression language",
6
6
  "keywords": [
7
7
  "expression",