/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
apps/dashboard/src/components/variable/utils.ts
88 строк
3 KB
cursor[bot]
chore(root): remove 0 unused files and 9 unused exports (#10628)
09 апр 2026, 13:09
Не верифицирован
09 апр 2026, 13:09
a6a5540
Код
Авторство
О чём код?
import { getFilters } from './constants'; import { FilterWithParam } from './types'; function escapeString(str: string): string { return String(str).replace(/'/g, "\\'"); } function formatParamValue(param: string, type?: string) { if (type === 'number') { return param; } return `'${escapeString(param)}'`; } export function formatLiquidVariable(name: string, defaultValue: string, filters: FilterWithParam[]) { const safeName = typeof name === 'string' ? name : String(name ?? ''); const parts = [safeName.trim()]; if (defaultValue) { const safeDefault = typeof defaultValue === 'string' ? defaultValue : String(defaultValue); parts.push(`default: '${escapeString(safeDefault.trim())}'`); } filters.forEach((t) => { if (t.value === 'default') return; if (!t.params?.length) { parts.push(t.value); } else { const filterDef = getFilters().find((def) => def.value === t.value); const formattedParams = t.params.map((param, index) => formatParamValue(param, filterDef?.params?.[index]?.type)); parts.push(`${t.value}: ${formattedParams.join(', ')}`); } }); return `{{${parts.join(' | ')}}}`; } export function validateEnhancedDigestFilters(filters: string[]): { message: string; name: string; filterParam: string; } | null { const toSentenceFilter = filters.find((f) => f.startsWith('toSentence')); if (toSentenceFilter) { const firstParam = toSentenceFilter.split(':')[1]?.split(',')[0]?.trim(); const isFirstParamEmpty = !firstParam || firstParam === '' || firstParam === "''" || firstParam === '""'; if (isFirstParamEmpty) { return { message: 'Object key path is required', name: 'toSentence', filterParam: 'Object key path' }; } } return null; } const parseParams = (input: string) => { if (!input) return ''; return input .split(',') .map((param) => { const trimmed = param.trim(); if ((trimmed.startsWith("'") && trimmed.endsWith("'")) || (trimmed.startsWith('"') && trimmed.endsWith('"'))) { return trimmed.slice(1, -1); } return trimmed; }) .join(', '); }; export const getFirstFilterAndItsArgs = (filters: string[]) => { const firstFilter = filters[0]; const firstFilterName = firstFilter.split(':')[0]; const firstFilterParams = firstFilter.split(':')[1]?.split(',')?.[0]; const parsedFilterParams = parseParams(firstFilterParams); const finalParam = parsedFilterParams.length > 0 ? parsedFilterParams : null; return { firstFilterName, finalParam, firstFilter, }; };