eslint-plugin-sonarjs
Version:
58 lines (57 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.denoManifestResolver = exports.parseInlineNPMImport = void 0;
const index_js_1 = require("../index.js");
const helpers_js_1 = require("./helpers.js");
const parse_js_1 = require("../parse.js");
const parsed_dependency_files_js_1 = require("../parsed-dependency-files.js");
const npm_import_js_1 = require("./npm-import.js");
var npm_import_js_2 = require("./npm-import.js");
Object.defineProperty(exports, "parseInlineNPMImport", { enumerable: true, get: function () { return npm_import_js_2.parseInlineNPMImport; } });
exports.denoManifestResolver = {
resolve(dir, topDir, fileSystem) {
// if both `deno.json` and `deno.jsonc` are present, prefer `deno.json` and ignore `deno.jsonc`
const denoJson = (0, helpers_js_1.getManifestFileInDir)(index_js_1.DENO_JSON, dir, topDir, fileSystem);
const denoJsonc = (0, helpers_js_1.getManifestFileInDir)(index_js_1.DENO_JSONC, dir, topDir, fileSystem);
const denoModuleType = 'module';
const effectiveDenoJson = denoJson ?? denoJsonc;
if (effectiveDenoJson) {
const manifest = (0, parsed_dependency_files_js_1.parseDenoManifest)(effectiveDenoJson) ?? {};
return [
{
type: 'deno',
manifest,
dependencies: buildDependencies(manifest),
moduleType: denoModuleType,
},
];
}
return [];
},
};
function buildDependencies(manifest) {
const dependencies = new Map();
if (manifest.imports && typeof manifest.imports === 'object') {
for (const [alias, target] of Object.entries(manifest.imports)) {
if (typeof target !== 'string') {
continue;
}
const parsedSpecifier = (0, npm_import_js_1.parseInlineNPMImport)(target);
if (parsedSpecifier) {
(0, parse_js_1.addDependency)(dependencies, {
dependency: parsedSpecifier.packageName,
isGlob: false,
version: parsedSpecifier.version,
alias,
});
}
}
}
if (Array.isArray(manifest.workspace)) {
(0, parse_js_1.addDependenciesArray)(dependencies, manifest.workspace);
}
else if (manifest.workspace?.members) {
(0, parse_js_1.addDependenciesArray)(dependencies, manifest.workspace.members);
}
return dependencies;
}