UNPKG

eslint-plugin-sonarjs

Version:
81 lines (80 loc) 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.clearParsedDependencyFileCache = clearParsedDependencyFileCache; exports.parsePackageJson = parsePackageJson; exports.parsePackageJsonContent = parsePackageJsonContent; exports.parsePnpmWorkspace = parsePnpmWorkspace; exports.parseDenoManifest = parseDenoManifest; const typescript_1 = __importDefault(require("typescript")); const yaml_1 = __importDefault(require("yaml")); const files_js_1 = require("../files.js"); const parsedPackageJsonCache = new Map(); const parsedPnpmWorkspaceCache = new Map(); const parsedDenoManifestCache = new Map(); function clearParsedDependencyFileCache() { parsedPackageJsonCache.clear(); parsedPnpmWorkspaceCache.clear(); parsedDenoManifestCache.clear(); } function getOrSetParsedDependencyFile(cache, file, parse) { const cacheKey = (0, files_js_1.normalizeToAbsolutePath)(file.filePath); if (cache.has(cacheKey)) { return cache.get(cacheKey); } const parsed = parse(file); cache.set(cacheKey, parsed); return parsed; } function parsePackageJson(file) { return getOrSetParsedDependencyFile(parsedPackageJsonCache, file, file => parsePackageJsonContent(file.fileContent, file.filePath)); } function parsePackageJsonContent(content, filePath) { try { return JSON.parse((0, files_js_1.stripBOM)(content)); } catch (error) { if (filePath) { console.debug(`Error parsing package.json ${filePath}: ${error}`); } return undefined; } } function parsePnpmWorkspace(file) { return getOrSetParsedDependencyFile(parsedPnpmWorkspaceCache, file, parsePnpmWorkspaceContent); } function parsePnpmWorkspaceContent(file) { try { const parsedPnpm = yaml_1.default.parse(file.fileContent); if (parsedPnpm && ('catalog' in parsedPnpm || 'catalogs' in parsedPnpm || 'packages' in parsedPnpm)) { return parsedPnpm; } return undefined; } catch (error) { console.debug(`Error parsing pnpm workspace ${file.filePath}: ${error}`); return undefined; } } function parseDenoManifest(file) { return getOrSetParsedDependencyFile(parsedDenoManifestCache, file, parseDenoManifestContent); } function parseDenoManifestContent(file) { try { // ts.parseConfigFileTextToJson handles JSON with comments and trailing commas const parsed = typescript_1.default.parseConfigFileTextToJson(file.filePath, (0, files_js_1.stripBOM)(file.fileContent)); if (parsed.error) { const message = typescript_1.default.flattenDiagnosticMessageText(parsed.error.messageText, '\n'); console.debug(`Error parsing deno manifest ${file.filePath}: ${message}`); return; } return parsed.config; } catch (error) { console.debug(`Error parsing deno manifest ${file.filePath}: ${error}`); return; } }