2
0
Files
bot/packages/variables/extractVariablesFromObject.ts
2024-06-19 14:09:18 +02:00

30 lines
897 B
TypeScript

import { Variable } from './types'
const variableNameRegex = /\{\{([^{}]+)\}\}/g
export const extractVariableIdReferencesInObject = (
obj: any,
existingVariables: Variable[]
): string[] =>
[...(JSON.stringify(obj).match(variableNameRegex) ?? [])].reduce<string[]>(
(acc, match) => {
const varName = match.slice(2, -2)
const id = existingVariables.find((v) => v.name === varName)?.id
if (!id || acc.find((accId) => accId === id)) return acc
return acc.concat(id)
},
[]
)
const variableIdRegex = /"\w*variableid":"([^"]+)"/gi
export const extractVariableIdsFromObject = (obj: any): string[] =>
[...(JSON.stringify(obj).match(variableIdRegex) ?? [])].reduce<string[]>(
(acc, match) => {
const id = variableIdRegex.exec(match)?.[1]
if (!id || acc.find((accId) => accId === id)) return acc
return acc.concat(id)
},
[]
)