diff --git a/package.json b/package.json index 8d2f367c..d6bf1b22 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "plugins/template-function-hash", "plugins/template-function-json", "plugins/template-function-prompt", + "plugins/template-function-random", "plugins/template-function-regex", "plugins/template-function-request", "plugins/template-function-response", diff --git a/plugins/template-function-random/package.json b/plugins/template-function-random/package.json new file mode 100644 index 00000000..dcb5cd3a --- /dev/null +++ b/plugins/template-function-random/package.json @@ -0,0 +1,12 @@ +{ + "name": "@yaak/template-function-random", + "displayName": "Random Template Functions", + "description": "Template functions for generating random values", + "private": true, + "version": "0.1.0", + "scripts": { + "build": "yaakcli build", + "dev": "yaakcli dev", + "lint":"tsc --noEmit && eslint . --ext .ts,.tsx" + } +} diff --git a/plugins/template-function-random/src/index.ts b/plugins/template-function-random/src/index.ts new file mode 100644 index 00000000..19043b50 --- /dev/null +++ b/plugins/template-function-random/src/index.ts @@ -0,0 +1,43 @@ +import type { CallTemplateFunctionArgs, Context, PluginDefinition } from '@yaakapp/api'; + +export const plugin: PluginDefinition = { + templateFunctions: [ + { + name: 'random.range', + description: 'Generate a random number between two values', + 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 { + const min = args.values.min ? parseInt(String(args.values.min ?? '0')) : 0; + const max = args.values.max ? parseInt(String(args.values.max ?? '1')) : 1; + const decimals = args.values.decimals + ? parseInt(String(args.values.decimals ?? '0')) + : null; + + let value = Math.random() * (max - min) + min; + if (decimals !== null) { + value = Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals); + } + return String(value); + }, + }, + ], +}; diff --git a/plugins/template-function-random/tsconfig.json b/plugins/template-function-random/tsconfig.json new file mode 100644 index 00000000..4082f16a --- /dev/null +++ b/plugins/template-function-random/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +}