2
0
Files
bot/packages/radar/index.ts

74 lines
1.7 KiB
TypeScript
Raw Normal View History

import { env } from '@typebot.io/env'
2024-02-22 13:45:15 +01:00
type Params = {
debug: boolean
}
export const computeRiskLevel = (typebot: any, params?: Params) => {
const stringifiedTypebot = JSON.stringify(typebot)
if (
env.RADAR_HIGH_RISK_KEYWORDS?.some((keyword) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${keyword}${
keyword.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
)
2024-02-22 13:45:15 +01:00
) {
if (params?.debug) {
console.log(
'High risk keywords detected:',
env.RADAR_HIGH_RISK_KEYWORDS?.find((keyword) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${keyword}${
keyword.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
2024-02-22 13:45:15 +01:00
)
)
}
return 100
2024-02-22 13:45:15 +01:00
}
if (
env.RADAR_CUMULATIVE_KEYWORDS?.some((set) =>
set.every((keyword) =>
keyword.some((k) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${k}${k.includes('$') ? '' : `\\b`}`,
'gi'
).test(stringifiedTypebot)
)
)
)
2024-02-22 13:45:15 +01:00
) {
if (params?.debug) {
console.log(
'Cumulative keywords detected:',
env.RADAR_CUMULATIVE_KEYWORDS?.find((set) =>
set.every((keyword) =>
keyword.some((k) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${k}${
k.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
2024-02-22 13:45:15 +01:00
)
)
)
)
}
return 100
2024-02-22 13:45:15 +01:00
}
if (
env.RADAR_INTERMEDIATE_RISK_KEYWORDS?.some((keyword) =>
stringifiedTypebot.toLowerCase().includes(keyword)
)
)
return 50
return 0
}