Files
yaak-mountain-loop/plugins/template-function-random/src/index.ts
Gregory Schier 5919fae739 Run oxfmt across repo, add format script and ignore config
Format all non-generated files with oxfmt via `vp fmt`. Add
.oxfmtignore to skip bindings/ and wasm-pack output. Add npm
format script and update DEVELOPMENT.md docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 09:52:11 -07:00

45 lines
1.3 KiB
TypeScript

import type { CallTemplateFunctionArgs, Context, PluginDefinition } from "@yaakapp/api";
export const plugin: PluginDefinition = {
templateFunctions: [
{
name: "random.range",
description: "Generate a random number between two values",
previewArgs: ["min", "max"],
args: [
{
type: "text",
name: "min",
label: "Minimum",
defaultValue: "0",
},
{
type: "text",
name: "max",
label: "Maximum",
defaultValue: "1",
},
{
type: "text",
name: "decimals",
optional: true,
label: "Decimal Places",
},
],
async onRender(_ctx: Context, args: CallTemplateFunctionArgs): Promise<string | null> {
const min = args.values.min ? Number.parseInt(String(args.values.min ?? "0"), 10) : 0;
const max = args.values.max ? Number.parseInt(String(args.values.max ?? "1"), 10) : 1;
const decimals = args.values.decimals
? Number.parseInt(String(args.values.decimals ?? "0"), 10)
: null;
let value = Math.random() * (max - min) + min;
if (decimals !== null) {
value = Math.round(value * 10 ** decimals) / 10 ** decimals;
}
return String(value);
},
},
],
};