feat(task): replace built-in task adaptors with a sandboxed JS plugin system (#7076)

This commit is contained in:
Calcium-Ion
2026-08-29 18:51:57 +08:00
committed by GitHub
parent 7037ac15bd
commit eb48396d5f
336 changed files with 52333 additions and 6369 deletions
+21
View File
@@ -0,0 +1,21 @@
package billingexpr_test
import (
"testing"
"github.com/QuantumNous/new-api/pkg/billingexpr"
"github.com/stretchr/testify/assert"
)
func TestUsedUsageKeysExtractsLiteralCallsAndSkipsDynamicArguments(t *testing.T) {
expression := `tier("base", u(" seconds ") * 0.4 + (u("clips") > 0 ? u("clips") * 0.1 : 0)) + (u(header("usage-key")) == nil ? 0 : 0)`
keys := billingexpr.UsedUsageKeys(expression)
assert.Equal(t, map[string]bool{"seconds": true, "clips": true}, keys)
}
func TestUsedUsageKeysReturnsNilForEmptyOrInvalidExpressions(t *testing.T) {
assert.Nil(t, billingexpr.UsedUsageKeys(""))
assert.Nil(t, billingexpr.UsedUsageKeys(`tier("broken",`))
}