@tokens-studio/graph-engine
Version:
An execution engine to handle Token Studios generators and resolvers
51 lines • 1.74 kB
JavaScript
import { Node } from '../../programmatic/node.js';
import { NumberSchema } from '../../schemas/index.js';
import { arrayOf } from '../../schemas/utils.js';
import { setToPrecision } from '../../utils/precision.js';
export default class NodeDefinition extends Node {
static title = 'Exponential Decay';
static type = 'studio.tokens.series.exponentialDecay';
static description = 'Generates a sequence using exponential decay formula: P*e^(-kx)';
constructor(props) {
super(props);
this.addInput('initialValue', {
type: {
...NumberSchema,
default: 100,
description: 'Initial value (P)'
}
});
this.addInput('length', {
type: {
...NumberSchema,
default: 5,
minimum: 1,
description: 'Number of values to generate'
}
});
this.addInput('decayRate', {
type: {
...NumberSchema,
default: 0.5,
minimum: 0,
description: 'Decay rate constant (k)'
}
});
this.addInput('precision', {
type: {
...NumberSchema,
default: 2,
minimum: 0
}
});
this.addOutput('values', {
type: arrayOf(NumberSchema)
});
}
execute() {
const { initialValue, length, decayRate, precision } = this.getAllInputs();
const values = Array.from({ length }, (_, i) => setToPrecision(initialValue * Math.exp(-decayRate * i), precision));
this.outputs.values.set(values);
}
}
//# sourceMappingURL=exponentialDecay.js.map