(file, seen = new Set())
| 227 | } |
| 228 | |
| 229 | function analyzeCss(file, seen = new Set()) { |
| 230 | if (seen.has(file)) { |
| 231 | return []; |
| 232 | } |
| 233 | seen.add(file); |
| 234 | |
| 235 | let content = fs.readFileSync(file, 'utf8'); |
| 236 | let ast = postcss.parse(content); |
| 237 | |
| 238 | let imports = new Set(); |
| 239 | ast.walkAtRules('import', rule => { |
| 240 | imports.add(rule.params.slice(1, -1)); |
| 241 | }); |
| 242 | |
| 243 | return [ |
| 244 | { |
| 245 | path: 'components/ui/' + path.basename(file), |
| 246 | type: 'registry:component', |
| 247 | content |
| 248 | }, |
| 249 | ...[...imports].flatMap(specifier => { |
| 250 | let resolved = path.resolve(path.dirname(file), specifier); |
| 251 | return analyzeCss(resolved, seen); |
| 252 | }) |
| 253 | ]; |
| 254 | } |
no test coverage detected