Skip to content

Commit

Permalink
Renamed runIfTypeOfFunction to handleEvalResult
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisVilches committed Jul 22, 2024
1 parent 8f5086d commit 970211a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
24 changes: 10 additions & 14 deletions packages/alpinejs/src/evaluator.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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
Expand All @@ -112,26 +112,22 @@ 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 )
}
}
}
}

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)
}
}
4 changes: 2 additions & 2 deletions packages/csp/src/evaluator.js
Original file line number Diff line number Diff line change
@@ -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'
Expand Down Expand Up @@ -39,7 +39,7 @@ function generateEvaluator(el, expression, dataStack) {
completeScope,
);

runIfTypeOfFunction(autoEvaluateFunctions, receiver, evaluatedExpression, completeScope, params)
handleEvalResult(autoEvaluateFunctions, receiver, evaluatedExpression, completeScope, params)
}
}

Expand Down

0 comments on commit 970211a

Please sign in to comment.