import { getLiquidTokens } from '@/content-linter/lib/helpers/liquid-utils' import type { TagToken } from 'liquidjs' import { TokenKind } from 'liquidjs' // Type guard to check if a token is a TagToken function isTagToken(token: unknown): token is TagToken { return ( token !== null && typeof token === 'object' && 'kind' in token && token.kind === TokenKind.Tag && 'name' in token && typeof token.name === 'string' && 'args' in token ) } const parsedLiquidTokensCache = new Map() export function inLiquid(filePath: string, fileContents: string, needle: string) { if (!parsedLiquidTokensCache.has(filePath)) { parsedLiquidTokensCache.set(filePath, getLiquidTokens(fileContents).filter(isTagToken)) } const tokens = parsedLiquidTokensCache.get(filePath)! for (const token of tokens) { if (token.name === 'data') { const { args } = token if (args === needle) { return true } } } return false }