packages/aws-cdk-lib/aws-stepfunctions/lib/private/jsonata.ts (17 lines of code) (raw):
export const isValidJsonataExpression = (expression: string) => /^{%(.*)%}$/.test(expression);
export const findJsonataExpressions = (value: any): Set<string> => {
const recursive = (v: any): string[] => {
if (typeof v === 'string' && isValidJsonataExpression(v)) {
return [v];
} else if (v === null) {
return [];
} else if (Array.isArray(v)) {
return v.flatMap(recursive);
} else if (typeof v === 'object') {
return Object.values(v).flatMap(recursive);
} else {
return [];
}
};
return new Set(recursive(value));
};