From 21b9e5a02b6804f82d5c3f3b978b9a9d3c9a946f Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sun, 25 May 2025 20:34:05 -0700 Subject: [PATCH] Url encode/decode functions --- plugins/template-function-encode/src/index.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plugins/template-function-encode/src/index.ts b/plugins/template-function-encode/src/index.ts index 15bb985b..d829eedf 100644 --- a/plugins/template-function-encode/src/index.ts +++ b/plugins/template-function-encode/src/index.ts @@ -18,5 +18,25 @@ export const plugin: PluginDefinition = { return Buffer.from(args.values.value ?? '', 'base64').toString('utf-8'); }, }, + { + name: 'url.encode', + description: 'Encode a value for use in a URL (percent-encoding)', + args: [{ label: 'Plain Text', type: 'text', name: 'value', multiLine: true }], + async onRender(_ctx: Context, args: CallTemplateFunctionArgs): Promise { + return encodeURIComponent(args.values.value ?? ''); + }, + }, + { + name: 'url.decode', + description: 'Decode a percent-encoded URL value', + args: [{ label: 'Encoded Value', type: 'text', name: 'value', multiLine: true }], + async onRender(_ctx: Context, args: CallTemplateFunctionArgs): Promise { + try { + return decodeURIComponent(args.values.value ?? ''); + } catch { + return ''; + } + }, + }, ], };