From 970211ab00d6b6e8e6ca09afd26f9c94c4ba80c2 Mon Sep 17 00:00:00 2001 From: Chris Vilches Date: Mon, 22 Jul 2024 20:43:36 +0900 Subject: [PATCH] Renamed runIfTypeOfFunction to handleEvalResult --- packages/alpinejs/src/evaluator.js | 24 ++++++++++-------------- packages/csp/src/evaluator.js | 4 ++-- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/packages/alpinejs/src/evaluator.js b/packages/alpinejs/src/evaluator.js index 88a3d2f3c..41faed6ee 100644 --- a/packages/alpinejs/src/evaluator.js +++ b/packages/alpinejs/src/evaluator.js @@ -38,7 +38,7 @@ export function generateEvaluatorFromFunction(dataStack, func) { return (receiver = () => {}, { scope = {}, params = [], autoEvaluateFunctions = true } = {}) => { let result = func.apply(mergeProxies([scope, ...dataStack]), params) - runIfTypeOfFunction(autoEvaluateFunctions, receiver, result) + handleEvalResult(autoEvaluateFunctions, receiver, result) } } @@ -103,7 +103,7 @@ function generateEvaluatorFromString(dataStack, expression, el) { // Check if the function ran synchronously, if (func.finished) { // Return the immediate result. - runIfTypeOfFunction(autoEvaluateFunctions, receiver, func.result, completeScope, params, el) + handleEvalResult(autoEvaluateFunctions, receiver, func.result, completeScope, params, el) // Once the function has run, we clear func.result so we don't create // memory leaks. func is stored in the evaluatorMemo and every time // it runs, it assigns the evaluated expression to result which could @@ -112,7 +112,7 @@ function generateEvaluatorFromString(dataStack, expression, el) { } else { // If not, return the result when the promise resolves. promise.then(result => { - runIfTypeOfFunction(autoEvaluateFunctions, receiver, result, completeScope, params, el) + handleEvalResult(autoEvaluateFunctions, receiver, result, completeScope, params, el) }).catch( error => handleError( error, el, expression ) ) .finally( () => func.result = undefined ) } @@ -120,18 +120,14 @@ function generateEvaluatorFromString(dataStack, expression, el) { } } -export function runIfTypeOfFunction(autoEvaluateFunctions, receiver, value, scope, params, el) { - if (autoEvaluateFunctions && typeof value === 'function') { - let result = value.apply(scope, params) +export function handleEvalResult(autoEvaluateFunctions, receiver, value, scope, params, el) { + const shouldCallFunc = autoEvaluateFunctions && typeof value === 'function' - if (result instanceof Promise) { - result.then(i => runIfTypeOfFunction(autoEvaluateFunctions, receiver, i, scope, params)).catch( error => handleError( error, el, value ) ) - } else { - receiver(result) - } - } else if (typeof value === 'object' && value instanceof Promise) { - value.then(i => receiver(i)) + const result = shouldCallFunc ? value.apply(scope, params) : value + + if (result instanceof Promise) { + result.then(i => receiver(i)).catch( error => handleError( error, el, value ) ) } else { - receiver(value) + receiver(result) } } diff --git a/packages/csp/src/evaluator.js b/packages/csp/src/evaluator.js index 793f8ce00..5555ebdee 100644 --- a/packages/csp/src/evaluator.js +++ b/packages/csp/src/evaluator.js @@ -1,4 +1,4 @@ -import { generateEvaluatorFromFunction, runIfTypeOfFunction } from 'alpinejs/src/evaluator' +import { generateEvaluatorFromFunction, handleEvalResult } from 'alpinejs/src/evaluator' import { closestDataStack, mergeProxies } from 'alpinejs/src/scope' import { tryCatch } from 'alpinejs/src/utils/error' import { injectMagics } from 'alpinejs/src/magics' @@ -39,7 +39,7 @@ function generateEvaluator(el, expression, dataStack) { completeScope, ); - runIfTypeOfFunction(autoEvaluateFunctions, receiver, evaluatedExpression, completeScope, params) + handleEvalResult(autoEvaluateFunctions, receiver, evaluatedExpression, completeScope, params) } }