
//#region src/index.ts
const plugin = { templateFunctions: [
	{
		name: "base64.encode",
		description: "Encode a value to base64",
		args: [{
			label: "Encoding",
			type: "select",
			name: "encoding",
			defaultValue: "base64",
			options: [{
				label: "Base64",
				value: "base64"
			}, {
				label: "Base64 URL-safe",
				value: "base64url"
			}]
		}, {
			label: "Plain Text",
			type: "text",
			name: "value",
			multiLine: true
		}],
		async onRender(_ctx, args) {
			return Buffer.from(String(args.values.value ?? "")).toString(args.values.encoding === "base64url" ? "base64url" : "base64");
		}
	},
	{
		name: "base64.decode",
		description: "Decode a value from base64",
		args: [{
			label: "Encoded Value",
			type: "text",
			name: "value",
			multiLine: true
		}],
		async onRender(_ctx, args) {
			return Buffer.from(String(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, args) {
			return encodeURIComponent(String(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, args) {
			try {
				return decodeURIComponent(String(args.values.value ?? ""));
			} catch {
				return "";
			}
		}
	}
] };

//#endregion
exports.plugin = plugin;