From 2925a4e93b42aa527a587786cc5a7e13d50c198a Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Fri, 13 Jun 2025 16:24:25 +0530 Subject: [PATCH 1/2] feat(kleros-sdk): predefined-lambdas-for-mustache --- kleros-sdk/src/dataMappings/utils/lambdas.ts | 13 +++++++++++++ .../src/dataMappings/utils/populateTemplate.ts | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 kleros-sdk/src/dataMappings/utils/lambdas.ts diff --git a/kleros-sdk/src/dataMappings/utils/lambdas.ts b/kleros-sdk/src/dataMappings/utils/lambdas.ts new file mode 100644 index 000000000..b20dd9c3b --- /dev/null +++ b/kleros-sdk/src/dataMappings/utils/lambdas.ts @@ -0,0 +1,13 @@ +export const lambdas = { + // Converts a value to hex representation + hex: function () { + return function (text: string, render: Function) { + const originalValueStr = render(text); + const num = parseInt(originalValueStr, 10); + if (!isNaN(num)) { + return "0x" + num.toString(16).toLowerCase(); + } + return originalValueStr; + }; + }, +}; diff --git a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts index 68ae983ec..d583f4265 100644 --- a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts +++ b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts @@ -1,9 +1,10 @@ import mustache from "mustache"; import { DisputeDetails } from "./disputeDetailsTypes"; import DisputeDetailsSchema, { RefuseToArbitrateAnswer } from "./disputeDetailsSchema"; +import { lambdas } from "./lambdas"; export const populateTemplate = (mustacheTemplate: string, data: any): DisputeDetails => { - const render = mustache.render(mustacheTemplate, data); + const render = mustache.render(mustacheTemplate, { ...data, ...lambdas }); const dispute = JSON.parse(render); const validation = DisputeDetailsSchema.safeParse(dispute); From 33a47a9e4d511634c13b043633b810c6fffa8c1c Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Fri, 13 Jun 2025 16:30:23 +0530 Subject: [PATCH 2/2] chore: address-rabbit-feedback --- kleros-sdk/src/dataMappings/utils/lambdas.ts | 2 +- kleros-sdk/src/dataMappings/utils/populateTemplate.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kleros-sdk/src/dataMappings/utils/lambdas.ts b/kleros-sdk/src/dataMappings/utils/lambdas.ts index b20dd9c3b..af6a44b5b 100644 --- a/kleros-sdk/src/dataMappings/utils/lambdas.ts +++ b/kleros-sdk/src/dataMappings/utils/lambdas.ts @@ -1,7 +1,7 @@ export const lambdas = { // Converts a value to hex representation hex: function () { - return function (text: string, render: Function) { + return function (text: string, render: (value: string) => string) { const originalValueStr = render(text); const num = parseInt(originalValueStr, 10); if (!isNaN(num)) { diff --git a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts index d583f4265..dc8ff8186 100644 --- a/kleros-sdk/src/dataMappings/utils/populateTemplate.ts +++ b/kleros-sdk/src/dataMappings/utils/populateTemplate.ts @@ -4,7 +4,7 @@ import DisputeDetailsSchema, { RefuseToArbitrateAnswer } from "./disputeDetailsS import { lambdas } from "./lambdas"; export const populateTemplate = (mustacheTemplate: string, data: any): DisputeDetails => { - const render = mustache.render(mustacheTemplate, { ...data, ...lambdas }); + const render = mustache.render(mustacheTemplate, { ...lambdas, ...data }); const dispute = JSON.parse(render); const validation = DisputeDetailsSchema.safeParse(dispute);