{"record":{"id":"c3785dda829f8958","repo":"vercel/turborepo","slug":"warning","errorCode":null,"errorMessage":"{warning}","messagePattern":"\\{warning\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/turborepo-boundaries/src/lib.rs","lineNumber":346,"sourceCode":"    }\n\n    pub fn emit(&self, color_config: ColorConfig) {\n        for diagnostic in &self.diagnostics {\n            eprintln!(\"{:?}\", Report::new(diagnostic.clone()));\n        }\n        let result_message = match self.diagnostics.len() {\n            0 => color!(color_config, BOLD_GREEN, \"no issues found\"),\n            1 => color!(color_config, BOLD_RED, \"1 issue found\"),\n            _ => color!(\n                color_config,\n                BOLD_RED,\n                \"{} issues found\",\n                self.diagnostics.len()\n            ),\n        };\n\n        for warning in self.warnings.iter().take(MAX_WARNINGS) {\n            turborepo_log::warn(\n                turborepo_log::Source::turbo(Subsystem::Boundaries),\n                warning.to_string(),\n            )\n            .emit();\n        }\n        if !self.warnings.is_empty() {\n            eprintln!();\n        }\n\n        println!(\n            \"Checked {} files in {} packages, {}\",\n            self.files_checked, self.packages_checked, result_message\n        );\n    }\n}\n\nfn find_dynamic_imports(module_record: &ModuleRecord, source: &str) -> Vec<ImportResult> {\n    module_record","sourceCodeStart":328,"sourceCodeEnd":364,"githubUrl":"https://github.com/vercel/turborepo/blob/f9245100cf0d31d96628804ead485f6bf226e55a/crates/turborepo-boundaries/src/lib.rs#L328-L364","documentation":"`turbo boundaries` checks imports against package boundary rules. Some conditions are not rule violations but are reported as warnings (up to MAX_WARNINGS=16) via this generic emission in BoundariesResult::emit (crates/turborepo-boundaries/src/lib.rs:345-351). Examples: file types boundaries cannot parse (\"X files are currently not supported, boundaries checks will not apply to them\") and unparseable lines (\"ignoring import on line N in FILE\") from imports.rs.","triggerScenarios":"Running `turbo boundaries` on a repo whose include globs match files with unsupported extensions (anything the SWC-based checker cannot parse) or files containing syntax the import extraction skips. Warnings never affect the exit status; only diagnostics (rule violations) do.","commonSituations":"Monorepos with .vue/.svelte/.json or generated files swept in by broad `boundaries.include` globs, or exotic JS/TS syntax on lines the scanner gives up on. Teams often see this right after enabling boundaries on a large existing repo.","solutions":["Read the specific warning text: unsupported-extension warnings name the extension; tighten boundaries.include globs to only supported file types.","Add exclusions for generated/vendored files in turbo.json's boundaries configuration so they are not checked at all.","Treat warnings as advisory: gate CI on `turbo boundaries` exit code, which reflects diagnostics, not warnings.","For unsupported-but-important file types, track support upstream and keep them out of the check until then."],"exampleFix":"// turbo.json — before: broad include sweeps unsupported files\n\"boundaries\": { \"include\": [\"packages/**/*\"] }\n// -> \"css files are currently not supported, boundaries checks will not apply to them\"\n\n// after: include only files boundaries can analyze\n\"boundaries\": { \"include\": [\"packages/**/*.{ts,tsx,js,jsx}\"] }","handlingStrategy":"validation","validationCode":"import { globby } from \"globby\";\n\nconst SUPPORTED = new Set([\"ts\", \"tsx\", \"js\", \"jsx\", \"mjs\", \"cjs\"]);\nconst files = await globby([\"packages/**/*\"], { gitignore: true });\nconst unsupported = files.filter((f) => !SUPPORTED.has(f.split(\".\").pop() ?? \"\"));\nif (unsupported.length) {\n  console.warn(\n    `${unsupported.length} files boundaries cannot parse; tighten boundaries.include`\n  );\n}","typeGuard":null,"tryCatchPattern":"// turbo boundaries returns a result; gate on diagnostics, tolerate warnings\n// shell:\n//   turbo boundaries; status=$?\n//   [ $status -eq 0 ] || exit $status   # warnings do not affect exit code","preventionTips":["Scope boundaries.include to extensions the checker parses; exclude generated and vendored dirs.","Gate CI on the exit code (diagnostics) and track warnings separately so noise doesn't hide real violations.","Re-run boundaries after adding new file types to catch unsupported-extension drift early."],"tags":["boundaries","static-analysis","monorepo","turbo-json","linting"],"backgroundTag":"linter-unsupported-file-warning","analyzedSha":"f9245100cf0d31d96628804ead485f6bf226e55a","analyzedAt":"2026-08-17T10:46:15.696Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}