From 2f2f2d5412d048bade99eac654108fe2ece9c7f1 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 Nov 2023 10:51:10 +0100 Subject: [PATCH 1/7] wip --- packages/jsts/src/rules/S4328/rule.ts | 29 ++++++++------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/packages/jsts/src/rules/S4328/rule.ts b/packages/jsts/src/rules/S4328/rule.ts index 19eed2dab15..bccc1b0c408 100644 --- a/packages/jsts/src/rules/S4328/rule.ts +++ b/packages/jsts/src/rules/S4328/rule.ts @@ -26,7 +26,9 @@ import * as path from 'path'; import * as fs from 'fs'; import * as ts from 'typescript'; import { RequiredParserServices } from '../helpers'; -import { stripBOM } from '@sonar/shared/helpers'; +import { toUnixPath } from '@sonar/shared/helpers'; +import { getNearestPackageJsons } from '@sonar/jsts'; +import { PackageJson } from 'type-fest'; const DefinitelyTyped = '@types/'; @@ -156,7 +158,7 @@ function getPackageName(name: string) { } function getDependencies(fileName: string) { - let dirname = path.dirname(fileName); + let dirname = path.posix.dirname(toUnixPath(fileName)); const cached = cache.get(dirname); if (cached) { return cached; @@ -165,34 +167,24 @@ function getDependencies(fileName: string) { const result = new Set(); cache.set(dirname, result); - while (true) { + for (const packageJson of getNearestPackageJsons(fileName)) { + dirname = path.posix.dirname(packageJson.filename); const dirCached = dirCache.get(dirname); if (dirCached) { dirCached.forEach(d => result.add(d)); } else { - const packageJsonPath = path.join(path.resolve(dirname), 'package.json'); - const dep = fs.existsSync(packageJsonPath) - ? getDependenciesFromPackageJson(packageJsonPath) - : new Set(); + const dep = getDependenciesFromPackageJson(packageJson.contents); dep.forEach(d => result.add(d)); dirCache.set(dirname, dep); } - - const upperDir = path.dirname(dirname); - if (upperDir === dirname) { - break; - } else { - dirname = upperDir; - } } return result; } -function getDependenciesFromPackageJson(packageJsonPath: string) { +function getDependenciesFromPackageJson(content: PackageJson) { const result = new Set(); try { - const content = JSON.parse(readFile(packageJsonPath)); if (content.dependencies !== undefined) { addDependencies(result, content.dependencies); } @@ -268,8 +260,3 @@ function extractPathMappingPatterns( function getBaseUrl(parserServices: RequiredParserServices): string | undefined { return parserServices.program?.getCompilerOptions().baseUrl; } - -function readFile(filePath: string) { - const fileContent = fs.readFileSync(filePath, { encoding: 'utf8' }); - return stripBOM(fileContent); -} From 620abc7def8bfcb81da28370142577be526299c2 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 Nov 2023 11:13:21 +0100 Subject: [PATCH 2/7] Load package.json files synchronously --- packages/bridge/src/worker.js | 2 +- .../src/dependencies/package-json/index.ts | 4 ++-- .../package-json/project-package-json.ts | 14 +++++++------- packages/jsts/tests/analysis/analyzer.test.ts | 2 +- packages/jsts/tests/dependencies/index.test.ts | 18 +++++++++--------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/bridge/src/worker.js b/packages/bridge/src/worker.js index 69bd44b4651..56beeb1f491 100644 --- a/packages/bridge/src/worker.js +++ b/packages/bridge/src/worker.js @@ -139,7 +139,7 @@ if (parentPort) { case 'on-init-linter': { const { rules, environments, globals, linterId, baseDir, exclusions } = data; initializeLinter(rules, environments, globals, linterId); - await searchPackageJsonFiles(baseDir, exclusions); + searchPackageJsonFiles(baseDir, exclusions); parentThread.postMessage({ type: 'success', result: 'OK!' }); break; } diff --git a/packages/jsts/src/dependencies/package-json/index.ts b/packages/jsts/src/dependencies/package-json/index.ts index 0e1a7d233d9..fc8dcf2fc1d 100644 --- a/packages/jsts/src/dependencies/package-json/index.ts +++ b/packages/jsts/src/dependencies/package-json/index.ts @@ -22,8 +22,8 @@ import { PackageJsons } from './project-package-json'; const PackageJsonsByBaseDir = new PackageJsons(); -async function searchPackageJsonFiles(baseDir: string, exclusions: string[]) { - await PackageJsonsByBaseDir.searchPackageJsonFiles(baseDir, exclusions); +function searchPackageJsonFiles(baseDir: string, exclusions: string[]) { + PackageJsonsByBaseDir.searchPackageJsonFiles(baseDir, exclusions); } function getNearestPackageJsons(file: string) { diff --git a/packages/jsts/src/dependencies/package-json/project-package-json.ts b/packages/jsts/src/dependencies/package-json/project-package-json.ts index fbcafcdc5a7..cdfd6ea1ccc 100644 --- a/packages/jsts/src/dependencies/package-json/project-package-json.ts +++ b/packages/jsts/src/dependencies/package-json/project-package-json.ts @@ -17,9 +17,9 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import fs from 'fs/promises'; +import fs from 'fs'; import path from 'path'; -import { toUnixPath, debug, error, readFile } from '@sonar/shared/helpers'; +import { toUnixPath, debug, error, readFileSync } from '@sonar/shared/helpers'; import { PackageJson as PJ } from 'type-fest'; import { Minimatch } from 'minimatch'; @@ -48,25 +48,25 @@ export class PackageJsons { const patterns = exclusions .concat(IGNORED_PATTERNS) .map(exclusion => new Minimatch(exclusion)); - await this.walkDirectory(path.posix.normalize(toUnixPath(dir)), patterns); + this.walkDirectory(path.posix.normalize(toUnixPath(dir)), patterns); } catch (e) { error(`Error while searching for package.json files: ${e}`); } } - async walkDirectory(dir: string, ignoredPatterns: Minimatch[]) { - const files = await fs.readdir(dir, { withFileTypes: true }); + walkDirectory(dir: string, ignoredPatterns: Minimatch[]) { + const files = fs.readdirSync(dir, { withFileTypes: true }); for (const file of files) { const filename = path.posix.join(dir, file.name); if (ignoredPatterns.some(pattern => pattern.match(filename))) { continue; // is ignored pattern } if (file.isDirectory()) { - await this.walkDirectory(filename, ignoredPatterns); + this.walkDirectory(filename, ignoredPatterns); } else if (file.name.toLowerCase() === PACKAGE_JSON && !file.isDirectory()) { try { debug(`Found package.json: ${filename}`); - const contents = JSON.parse(await readFile(filename)); + const contents = JSON.parse(readFileSync(filename)); this.db.set(dir, { filename, contents }); } catch (e) { debug(`Error reading file ${filename}: ${e}`); diff --git a/packages/jsts/tests/analysis/analyzer.test.ts b/packages/jsts/tests/analysis/analyzer.test.ts index 4c018a6a6e7..75705973ad0 100644 --- a/packages/jsts/tests/analysis/analyzer.test.ts +++ b/packages/jsts/tests/analysis/analyzer.test.ts @@ -899,7 +899,7 @@ describe('analyzeJSTS', () => { it('package.json should be available in rule context', async () => { const baseDir = path.join(__dirname, 'fixtures', 'package-json'); - await searchPackageJsonFiles(baseDir, []); + searchPackageJsonFiles(baseDir, []); const linter = new Linter(); linter.defineRule('custom-rule-file', { diff --git a/packages/jsts/tests/dependencies/index.test.ts b/packages/jsts/tests/dependencies/index.test.ts index c210e78b22c..e33cb725313 100644 --- a/packages/jsts/tests/dependencies/index.test.ts +++ b/packages/jsts/tests/dependencies/index.test.ts @@ -32,9 +32,9 @@ describe('initialize package.json files', () => { getAllPackageJsons().clear(); }); - it('should find all package.json files', async () => { + it('should find all package.json files', () => { const baseDir = path.posix.join(toUnixPath(__dirname), 'fixtures'); - await searchPackageJsonFiles(baseDir, []); + searchPackageJsonFiles(baseDir, []); expect(getAllPackageJsons().size).toEqual(7); const basePJList = getNearestPackageJsons(path.posix.join(baseDir, 'index.js')); @@ -105,10 +105,10 @@ describe('initialize package.json files', () => { expect(fakeFilePJList[0].filename).toEqual(moduleBsubmoduleBPJ); }); - it('should ignore package.json files from ignored patterns', async () => { + it('should ignore package.json files from ignored patterns', () => { const baseDir = path.posix.join(toUnixPath(__dirname), 'fixtures'); - await searchPackageJsonFiles(baseDir, ['**/moduleA/**']); + searchPackageJsonFiles(baseDir, ['**/moduleA/**']); expect(getAllPackageJsons().size).toEqual(4); const packageJsons = [ ['package.json'], @@ -126,7 +126,7 @@ describe('initialize package.json files', () => { ); getAllPackageJsons().clear(); - await searchPackageJsonFiles(baseDir, ['**/module*/**']); + searchPackageJsonFiles(baseDir, ['**/module*/**']); expect(getAllPackageJsons().size).toEqual(1); expect(getAllPackageJsons()).toEqual( new Map([ @@ -138,7 +138,7 @@ describe('initialize package.json files', () => { ); }); - it('should return empty array when no package.json are in the DB or none exist in the file tree', async () => { + it('should return empty array when no package.json are in the DB or none exist in the file tree', () => { const baseDir = path.posix.join(toUnixPath(__dirname), 'fixtures'); expect(getAllPackageJsons().size).toEqual(0); @@ -146,14 +146,14 @@ describe('initialize package.json files', () => { getNearestPackageJsons(path.posix.join(baseDir, '..', 'another-module', 'index.js')), ).toHaveLength(0); - await searchPackageJsonFiles(baseDir, ['']); + searchPackageJsonFiles(baseDir, ['']); expect(getAllPackageJsons().size).toEqual(7); expect( getNearestPackageJsons(path.posix.join(baseDir, '..', 'another-module', 'index.js')), ).toHaveLength(0); }); - it('should log error when cannot access baseDir', async () => { + it('should log error when cannot access baseDir', () => { const baseDir = path.posix.join(toUnixPath(__dirname), 'fixtures'); console.error = jest.fn(); @@ -162,7 +162,7 @@ describe('initialize package.json files', () => { throw Error(`Cannot access ${dir}`); }); - await searchPackageJsonFiles(baseDir, ['']); + searchPackageJsonFiles(baseDir, ['']); expect(console.error).toHaveBeenCalledWith( `Error while searching for package.json files: Error: Cannot access ${baseDir}`, ); From 3d53c51d5e36f492b8611d902e20f7f1d2612ef9 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 Nov 2023 11:17:44 +0100 Subject: [PATCH 3/7] Use new package.json global load --- packages/jsts/src/rules/S4328/unit.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/jsts/src/rules/S4328/unit.test.ts b/packages/jsts/src/rules/S4328/unit.test.ts index fa13d44fd65..351d9659b00 100644 --- a/packages/jsts/src/rules/S4328/unit.test.ts +++ b/packages/jsts/src/rules/S4328/unit.test.ts @@ -20,9 +20,10 @@ import { RuleTester } from 'eslint'; import { rule } from './'; import path from 'path'; +import { searchPackageJsonFiles } from '@sonar/jsts'; const fixtures = path.join(__dirname, 'fixtures'); - +searchPackageJsonFiles(__dirname, []); const filename = path.join(fixtures, 'package-json-project/file.js'); const options = []; const tsParserPath = require.resolve('@typescript-eslint/parser'); From dbc3852ccd64808ef420967c8462baf60874e936 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 Nov 2023 15:49:28 +0100 Subject: [PATCH 4/7] change path alias to fix jest resolution --- package-lock.json | 3 +++ package.json | 1 - packages/bridge/src/errors/middleware.ts | 4 ++-- packages/bridge/src/memory.ts | 2 +- packages/bridge/src/server.ts | 2 +- .../bridge/tests/errors/middleware.test.ts | 2 +- packages/bridge/tests/router.test.ts | 2 +- packages/bridge/tests/server.test.ts | 2 +- packages/bridge/tests/worker.test.ts | 2 +- packages/css/src/analysis/analysis.ts | 2 +- packages/css/src/linter/issues/transform.ts | 2 +- packages/css/tests/analysis/analyzer.test.ts | 2 +- packages/css/tests/linter/wrapper.test.ts | 2 +- packages/html/src/index.ts | 2 +- packages/html/src/parser/parse.ts | 2 +- packages/html/tests/analysis/analyzer.test.ts | 5 ++--- packages/html/tests/builder/build.test.ts | 2 +- packages/html/tests/parser/parse.test.ts | 2 +- packages/jsts/src/analysis/analysis.ts | 4 ++-- packages/jsts/src/analysis/analyzer.ts | 4 ++-- packages/jsts/src/builders/build.ts | 2 +- .../package-json/project-package-json.ts | 2 +- .../jsts/src/embedded/analysis/analysis.ts | 2 +- .../jsts/src/embedded/analysis/analyzer.ts | 2 +- packages/jsts/src/embedded/builder/patch.ts | 2 +- packages/jsts/src/index.ts | 1 + packages/jsts/src/linter/bundle-loader.ts | 2 +- .../jsts/src/linter/config/linter-config.ts | 2 +- .../jsts/src/linter/config/rule-config.ts | 2 +- packages/jsts/src/linter/issues/message.ts | 2 +- packages/jsts/src/linter/linters.ts | 4 ++-- .../src/linter/parameters/helpers/schema.ts | 2 +- packages/jsts/src/linter/wrapper.ts | 2 +- packages/jsts/src/parsers/parse.ts | 2 +- packages/jsts/src/program/program.ts | 2 +- packages/jsts/src/rules/S4328/rule.ts | 2 +- packages/jsts/src/rules/helpers/file.ts | 2 +- packages/jsts/tests/analysis/analyzer.test.ts | 4 ++-- packages/jsts/tests/builders/build.test.ts | 4 ++-- .../jsts/tests/dependencies/index.test.ts | 2 +- .../jsts/tests/linter/bundle-loader.test.ts | 2 +- .../tests/linter/config/linter-config.test.ts | 2 +- .../tests/linter/config/rule-config.test.ts | 2 +- packages/jsts/tests/linter/index.test.ts | 2 +- packages/jsts/tests/linter/wrapper.test.ts | 2 +- packages/jsts/tests/parsers/eslint.test.ts | 2 +- packages/jsts/tests/parsers/parse.test.ts | 4 ++-- packages/jsts/tests/program/program.test.ts | 2 +- packages/jsts/tests/tools/helpers/input.ts | 2 +- packages/jsts/tests/tools/helpers/parsing.ts | 2 +- .../tools/sonar-runtime/sonar-runtime.test.ts | 2 +- .../tools/testers/comment-based/checker.ts | 2 +- .../testers/comment-based/framework.test.ts | 2 +- packages/shared/src/index.ts | 22 +++++++++++++++++++ packages/tsconfig.json | 11 +++++----- packages/yaml/src/index.ts | 2 +- packages/yaml/src/parser/parse-yaml.ts | 4 ++-- packages/yaml/tests/analysis/analyzer.test.ts | 12 ++++++---- packages/yaml/tests/aws/parser.test.ts | 4 ++-- packages/yaml/tests/builder/build.test.ts | 4 ++-- packages/yaml/tests/builder/patch.test.ts | 4 ++-- packages/yaml/tests/parser/format.test.ts | 2 +- packages/yaml/tests/parser/parse.test.ts | 4 ++-- 63 files changed, 109 insertions(+), 82 deletions(-) create mode 100644 packages/shared/src/index.ts diff --git a/package-lock.json b/package-lock.json index ef304280621..ed779fff14f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "htmlparser2", "jsx-ast-utils", "lodash.clone", + "minimatch", "module-alias", "postcss", "postcss-html", @@ -4153,6 +4154,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "inBundle": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -9332,6 +9334,7 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "inBundle": true, "dependencies": { "brace-expansion": "^2.0.1" }, diff --git a/package.json b/package.json index 0646088bc8c..a8787277f20 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,6 @@ "@sonar/css": "lib/css/src", "@sonar/html": "lib/html/src", "@sonar/jsts": "lib/jsts/src", - "@sonar/jsts/embedded": "lib/jsts/src/embedded", "@sonar/shared": "lib/shared/src", "@sonar/yaml": "lib/yaml/src" } diff --git a/packages/bridge/src/errors/middleware.ts b/packages/bridge/src/errors/middleware.ts index ea915777a0c..fecf1943e37 100644 --- a/packages/bridge/src/errors/middleware.ts +++ b/packages/bridge/src/errors/middleware.ts @@ -18,9 +18,9 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import express from 'express'; -import { ErrorCode } from '@sonar/shared/errors'; +import { ErrorCode } from '@sonar/shared'; import { JsTsAnalysisOutput } from '@sonar/jsts'; -import { error } from '@sonar/shared/helpers'; +import { error } from '@sonar/shared'; /** * Express.js middleware for handling error while serving requests. diff --git a/packages/bridge/src/memory.ts b/packages/bridge/src/memory.ts index 41bcf113409..87efdc60156 100644 --- a/packages/bridge/src/memory.ts +++ b/packages/bridge/src/memory.ts @@ -22,7 +22,7 @@ import * as v8 from 'v8'; import * as os from 'os'; import fs from 'fs'; import { constants, NodeGCPerformanceDetail, PerformanceObserver } from 'perf_hooks'; -import { debug, error, getContext, info, warn } from '@sonar/shared/helpers'; +import { debug, error, getContext, info, warn } from '@sonar/shared'; const MB = 1024 * 1024; diff --git a/packages/bridge/src/server.ts b/packages/bridge/src/server.ts index 37ccfa8a00a..b88df6202bb 100644 --- a/packages/bridge/src/server.ts +++ b/packages/bridge/src/server.ts @@ -28,7 +28,7 @@ import http from 'http'; import path from 'path'; import router from './router'; import { errorMiddleware } from './errors'; -import { debug, getContext } from '@sonar/shared/helpers'; +import { debug, getContext } from '@sonar/shared'; import { timeoutMiddleware } from './timeout'; import { AddressInfo } from 'net'; import { Worker, SHARE_ENV } from 'worker_threads'; diff --git a/packages/bridge/tests/errors/middleware.test.ts b/packages/bridge/tests/errors/middleware.test.ts index 05ea5633173..8156b498e78 100644 --- a/packages/bridge/tests/errors/middleware.test.ts +++ b/packages/bridge/tests/errors/middleware.test.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { ErrorCode, APIError } from '@sonar/shared/errors'; +import { ErrorCode, APIError } from '@sonar/shared'; import * as express from 'express'; import { EMPTY_JSTS_ANALYSIS_OUTPUT, errorMiddleware } from '../../src/errors'; diff --git a/packages/bridge/tests/router.test.ts b/packages/bridge/tests/router.test.ts index f100992a647..a406417fef8 100644 --- a/packages/bridge/tests/router.test.ts +++ b/packages/bridge/tests/router.test.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { setContext, toUnixPath } from '@sonar/shared/helpers'; +import { setContext, toUnixPath } from '@sonar/shared'; import http from 'http'; import { createAndSaveProgram, RuleConfig } from '@sonar/jsts'; import path from 'path'; diff --git a/packages/bridge/tests/server.test.ts b/packages/bridge/tests/server.test.ts index 6e47488818f..d4fa0cc9b20 100644 --- a/packages/bridge/tests/server.test.ts +++ b/packages/bridge/tests/server.test.ts @@ -20,7 +20,7 @@ import { start } from '../src/server'; import { promisify } from 'util'; import path from 'path'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { AddressInfo } from 'net'; import { request } from './tools'; import http from 'http'; diff --git a/packages/bridge/tests/worker.test.ts b/packages/bridge/tests/worker.test.ts index 191a9367135..50564f01376 100644 --- a/packages/bridge/tests/worker.test.ts +++ b/packages/bridge/tests/worker.test.ts @@ -20,7 +20,7 @@ import path from 'path'; import { Worker } from 'worker_threads'; -import { ErrorCode } from '@sonar/shared/errors'; +import { ErrorCode } from '@sonar/shared'; describe('worker', () => { let worker: Worker; diff --git a/packages/css/src/analysis/analysis.ts b/packages/css/src/analysis/analysis.ts index 98703557d26..8c99006c522 100644 --- a/packages/css/src/analysis/analysis.ts +++ b/packages/css/src/analysis/analysis.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Issue, RuleConfig } from '../linter'; -import { AnalysisInput, AnalysisOutput } from '@sonar/shared/types'; +import { AnalysisInput, AnalysisOutput } from '@sonar/shared'; /** * A CSS analysis input diff --git a/packages/css/src/linter/issues/transform.ts b/packages/css/src/linter/issues/transform.ts index 24a5ead517c..e2f31a39deb 100644 --- a/packages/css/src/linter/issues/transform.ts +++ b/packages/css/src/linter/issues/transform.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import * as stylelint from 'stylelint'; -import { debug } from '@sonar/shared/helpers'; +import { debug } from '@sonar/shared'; import { Issue } from './issue'; /** diff --git a/packages/css/tests/analysis/analyzer.test.ts b/packages/css/tests/analysis/analyzer.test.ts index 5431946f4cf..082a3f5f5df 100644 --- a/packages/css/tests/analysis/analyzer.test.ts +++ b/packages/css/tests/analysis/analyzer.test.ts @@ -20,7 +20,7 @@ import { analyzeCSS, CssAnalysisInput } from '../../src/analysis'; import { RuleConfig } from '../../src/linter'; import path from 'path'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; const rules = [{ key: 'block-no-empty', configurations: [] }]; diff --git a/packages/css/tests/linter/wrapper.test.ts b/packages/css/tests/linter/wrapper.test.ts index 7eb28515fc6..7bf55275130 100644 --- a/packages/css/tests/linter/wrapper.test.ts +++ b/packages/css/tests/linter/wrapper.test.ts @@ -19,7 +19,7 @@ */ import path from 'path'; import * as stylelint from 'stylelint'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; import { createStylelintConfig, LinterWrapper, RuleConfig } from '../../src/linter'; describe('LinterWrapper', () => { diff --git a/packages/html/src/index.ts b/packages/html/src/index.ts index 4df904d4a20..97244b77a6a 100644 --- a/packages/html/src/index.ts +++ b/packages/html/src/index.ts @@ -22,7 +22,7 @@ import { analyzeEmbedded, EmbeddedAnalysisInput as HtmlAnalysisInput, EmbeddedAnalysisOutput as HtmlAnalysisOutput, -} from '@sonar/jsts/embedded'; +} from '@sonar/jsts'; import { parseHTML } from './parser'; diff --git a/packages/html/src/parser/parse.ts b/packages/html/src/parser/parse.ts index 09d8812313a..de2e447cac9 100644 --- a/packages/html/src/parser/parse.ts +++ b/packages/html/src/parser/parse.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import * as htmlparser from 'htmlparser2'; -import { EmbeddedJS } from '@sonar/jsts/embedded'; +import { EmbeddedJS } from '@sonar/jsts'; /** * References: diff --git a/packages/html/tests/analysis/analyzer.test.ts b/packages/html/tests/analysis/analyzer.test.ts index fa7a18263df..e33e7ad7791 100644 --- a/packages/html/tests/analysis/analyzer.test.ts +++ b/packages/html/tests/analysis/analyzer.test.ts @@ -20,9 +20,8 @@ import { join } from 'path'; import { embeddedInput } from '../../../jsts/tests/tools'; import { parseHTML } from '../../src/parser'; -import { setContext } from '@sonar/shared/helpers'; -import { analyzeEmbedded } from '@sonar/jsts/embedded'; -import { initializeLinter } from '@sonar/jsts'; +import { setContext } from '@sonar/shared'; +import { analyzeEmbedded, initializeLinter } from '@sonar/jsts'; describe('analyzeHTML', () => { const fixturesPath = join(__dirname, 'fixtures'); diff --git a/packages/html/tests/builder/build.test.ts b/packages/html/tests/builder/build.test.ts index 0e61477ff59..016ebf625a1 100644 --- a/packages/html/tests/builder/build.test.ts +++ b/packages/html/tests/builder/build.test.ts @@ -20,7 +20,7 @@ import { join } from 'path'; import { parseHTML } from '../../src/parser'; import { embeddedInput } from '../../../jsts/tests/tools'; -import { buildSourceCodes } from '@sonar/jsts/embedded'; +import { buildSourceCodes } from '@sonar/jsts'; describe('buildSourceCodes()', () => { const fixturesPath = join(__dirname, 'fixtures'); diff --git a/packages/html/tests/parser/parse.test.ts b/packages/html/tests/parser/parse.test.ts index 5d1027ac19a..1ac009ba9f7 100644 --- a/packages/html/tests/parser/parse.test.ts +++ b/packages/html/tests/parser/parse.test.ts @@ -19,7 +19,7 @@ */ import path from 'path'; import { parseHTML } from '../../src/parser'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; describe('parseHtml', () => { it('should return embedded JavaScript', async () => { diff --git a/packages/jsts/src/analysis/analysis.ts b/packages/jsts/src/analysis/analysis.ts index 01d343ca13d..567e189166b 100644 --- a/packages/jsts/src/analysis/analysis.ts +++ b/packages/jsts/src/analysis/analysis.ts @@ -17,9 +17,9 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { FileType, JsTsLanguage } from '@sonar/shared/helpers'; +import { FileType, JsTsLanguage } from '@sonar/shared'; import { CpdToken, Issue, Metrics, SymbolHighlight, SyntaxHighlight } from '../linter'; -import { AnalysisInput, AnalysisOutput } from '@sonar/shared/types'; +import { AnalysisInput, AnalysisOutput } from '@sonar/shared'; import { Perf } from '../monitoring'; /** diff --git a/packages/jsts/src/analysis/analyzer.ts b/packages/jsts/src/analysis/analyzer.ts index d5ac9261d62..59391a1ee05 100644 --- a/packages/jsts/src/analysis/analyzer.ts +++ b/packages/jsts/src/analysis/analyzer.ts @@ -17,9 +17,9 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; import { SourceCode } from 'eslint'; -import { debug, getContext, JsTsLanguage } from '@sonar/shared/helpers'; +import { debug, getContext, JsTsLanguage } from '@sonar/shared'; import { computeMetrics, findNoSonarLines, diff --git a/packages/jsts/src/builders/build.ts b/packages/jsts/src/builders/build.ts index 83873c9e575..91e7255d530 100644 --- a/packages/jsts/src/builders/build.ts +++ b/packages/jsts/src/builders/build.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { debug, getContext, JsTsLanguage } from '@sonar/shared/helpers'; +import { debug, getContext, JsTsLanguage } from '@sonar/shared'; import { JsTsAnalysisInput } from '../analysis'; import { buildParserOptions, parseForESLint, parsers } from '../parsers'; import { getProgramById } from '../program'; diff --git a/packages/jsts/src/dependencies/package-json/project-package-json.ts b/packages/jsts/src/dependencies/package-json/project-package-json.ts index cdfd6ea1ccc..bad00ee8f42 100644 --- a/packages/jsts/src/dependencies/package-json/project-package-json.ts +++ b/packages/jsts/src/dependencies/package-json/project-package-json.ts @@ -19,7 +19,7 @@ */ import fs from 'fs'; import path from 'path'; -import { toUnixPath, debug, error, readFileSync } from '@sonar/shared/helpers'; +import { toUnixPath, debug, error, readFileSync } from '@sonar/shared'; import { PackageJson as PJ } from 'type-fest'; import { Minimatch } from 'minimatch'; diff --git a/packages/jsts/src/embedded/analysis/analysis.ts b/packages/jsts/src/embedded/analysis/analysis.ts index 05e4795982d..bfcc94307cb 100644 --- a/packages/jsts/src/embedded/analysis/analysis.ts +++ b/packages/jsts/src/embedded/analysis/analysis.ts @@ -19,7 +19,7 @@ */ import { Perf } from 'jsts/src/monitoring'; import { Issue } from '../../linter'; -import { AnalysisInput, AnalysisOutput } from '@sonar/shared/types'; +import { AnalysisInput, AnalysisOutput } from '@sonar/shared'; /** * An analysis input of embedded code diff --git a/packages/jsts/src/embedded/analysis/analyzer.ts b/packages/jsts/src/embedded/analysis/analyzer.ts index 3370da1f927..74f016687e8 100644 --- a/packages/jsts/src/embedded/analysis/analyzer.ts +++ b/packages/jsts/src/embedded/analysis/analyzer.ts @@ -22,7 +22,7 @@ import { Position } from 'estree'; import { getLinter, Issue, LinterWrapper } from '../../linter'; import { buildSourceCodes, ExtendedSourceCode, LanguageParser } from '../builder'; import { EmbeddedAnalysisInput, EmbeddedAnalysisOutput } from './analysis'; -import { debug } from '@sonar/shared/helpers'; +import { debug } from '@sonar/shared'; import { measureDuration } from '../../monitoring'; import { findNcloc } from '../../linter/visitors/metrics/ncloc'; diff --git a/packages/jsts/src/embedded/builder/patch.ts b/packages/jsts/src/embedded/builder/patch.ts index 020959334ef..68e69547f1b 100644 --- a/packages/jsts/src/embedded/builder/patch.ts +++ b/packages/jsts/src/embedded/builder/patch.ts @@ -21,7 +21,7 @@ import { AST, SourceCode } from 'eslint'; import { Comment, Node } from 'estree'; import { visit } from '../../linter'; import { EmbeddedJS } from '../analysis'; -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; /** * Patches the ESLint SourceCode instance parsed with an ESLint-based parser diff --git a/packages/jsts/src/index.ts b/packages/jsts/src/index.ts index caf4bfbd584..dde3ccaea1a 100644 --- a/packages/jsts/src/index.ts +++ b/packages/jsts/src/index.ts @@ -24,3 +24,4 @@ export * from './linter'; export * from './parsers'; export * from './program'; export * from './rules'; +export * from './embedded'; diff --git a/packages/jsts/src/linter/bundle-loader.ts b/packages/jsts/src/linter/bundle-loader.ts index ed84a8feaf0..6d5230e9789 100755 --- a/packages/jsts/src/linter/bundle-loader.ts +++ b/packages/jsts/src/linter/bundle-loader.ts @@ -25,7 +25,7 @@ import { rules as reactESLintRules } from 'eslint-plugin-react'; import { rules as reactA11yRules } from 'eslint-plugin-jsx-a11y'; import { rules as internalRules } from '../rules'; import { customRules as internalCustomRules, CustomRule } from './custom-rules'; -import { debug, getContext } from '@sonar/shared/helpers'; +import { debug, getContext } from '@sonar/shared'; export function loadCustomRules(linter: Linter, rules: CustomRule[] = []) { for (const rule of rules) { diff --git a/packages/jsts/src/linter/config/linter-config.ts b/packages/jsts/src/linter/config/linter-config.ts index 86bc88bbefc..56abee46e09 100644 --- a/packages/jsts/src/linter/config/linter-config.ts +++ b/packages/jsts/src/linter/config/linter-config.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Linter, Rule } from 'eslint'; -import { getContext } from '@sonar/shared/helpers'; +import { getContext } from '@sonar/shared'; import { customRules as internalCustomRules } from '../custom-rules'; import { extendRuleConfig, RuleConfig } from './rule-config'; diff --git a/packages/jsts/src/linter/config/rule-config.ts b/packages/jsts/src/linter/config/rule-config.ts index b551e173bd3..fa5a9fbe49d 100644 --- a/packages/jsts/src/linter/config/rule-config.ts +++ b/packages/jsts/src/linter/config/rule-config.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Rule } from 'eslint'; -import { FileType, getContext, JsTsLanguage } from '@sonar/shared/helpers'; +import { FileType, getContext, JsTsLanguage } from '@sonar/shared'; import { hasSonarContextOption, hasSonarRuntimeOption, SONAR_RUNTIME } from '../parameters'; /** diff --git a/packages/jsts/src/linter/issues/message.ts b/packages/jsts/src/linter/issues/message.ts index bc069fb59f3..aed2f3a9366 100644 --- a/packages/jsts/src/linter/issues/message.ts +++ b/packages/jsts/src/linter/issues/message.ts @@ -20,7 +20,7 @@ import { Linter, SourceCode } from 'eslint'; import { transformFixes } from '../quickfixes'; import { Issue } from './issue'; -import { error } from '@sonar/shared/helpers'; +import { error } from '@sonar/shared'; /** * Converts an ESLint message into a SonarQube issue diff --git a/packages/jsts/src/linter/linters.ts b/packages/jsts/src/linter/linters.ts index 270ed73e052..ee6b56a977a 100644 --- a/packages/jsts/src/linter/linters.ts +++ b/packages/jsts/src/linter/linters.ts @@ -17,8 +17,8 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared/errors'; -import { debug } from '@sonar/shared/helpers'; +import { APIError } from '@sonar/shared'; +import { debug } from '@sonar/shared'; import { LinterWrapper } from './wrapper'; import { RuleConfig } from './config'; diff --git a/packages/jsts/src/linter/parameters/helpers/schema.ts b/packages/jsts/src/linter/parameters/helpers/schema.ts index e33685fa5a2..34fab7ae6f7 100644 --- a/packages/jsts/src/linter/parameters/helpers/schema.ts +++ b/packages/jsts/src/linter/parameters/helpers/schema.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Rule } from 'eslint'; -import { debug } from '@sonar/shared/helpers'; +import { debug } from '@sonar/shared'; /** * Extracts the schema of a rule diff --git a/packages/jsts/src/linter/wrapper.ts b/packages/jsts/src/linter/wrapper.ts index aae4c99559e..725e2c3218b 100644 --- a/packages/jsts/src/linter/wrapper.ts +++ b/packages/jsts/src/linter/wrapper.ts @@ -20,7 +20,7 @@ import { Linter, SourceCode } from 'eslint'; import { loadBundles, loadCustomRules } from './bundle-loader'; import { createLinterConfig, RuleConfig } from './config'; -import { debug, FileType, JsTsLanguage } from '@sonar/shared/helpers'; +import { debug, FileType, JsTsLanguage } from '@sonar/shared'; import { LintingResult, transformMessages } from './issues'; import { CustomRule } from './custom-rules'; diff --git a/packages/jsts/src/parsers/parse.ts b/packages/jsts/src/parsers/parse.ts index 1749f2451dc..3c10a2bf340 100644 --- a/packages/jsts/src/parsers/parse.ts +++ b/packages/jsts/src/parsers/parse.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; import { SourceCode } from 'eslint'; import { ParseFunction } from './eslint'; diff --git a/packages/jsts/src/program/program.ts b/packages/jsts/src/program/program.ts index dfe7d9ef55b..c2af846c052 100644 --- a/packages/jsts/src/program/program.ts +++ b/packages/jsts/src/program/program.ts @@ -37,7 +37,7 @@ import { readFileSync, toUnixPath, warn, -} from '@sonar/shared/helpers'; +} from '@sonar/shared'; import tmp from 'tmp'; import { promisify } from 'util'; import fs from 'fs/promises'; diff --git a/packages/jsts/src/rules/S4328/rule.ts b/packages/jsts/src/rules/S4328/rule.ts index bccc1b0c408..ee5a70dcf35 100644 --- a/packages/jsts/src/rules/S4328/rule.ts +++ b/packages/jsts/src/rules/S4328/rule.ts @@ -26,7 +26,7 @@ import * as path from 'path'; import * as fs from 'fs'; import * as ts from 'typescript'; import { RequiredParserServices } from '../helpers'; -import { toUnixPath } from '@sonar/shared/helpers'; +import { toUnixPath } from '@sonar/shared'; import { getNearestPackageJsons } from '@sonar/jsts'; import { PackageJson } from 'type-fest'; diff --git a/packages/jsts/src/rules/helpers/file.ts b/packages/jsts/src/rules/helpers/file.ts index 2203da9ca3e..1d70113163b 100644 --- a/packages/jsts/src/rules/helpers/file.ts +++ b/packages/jsts/src/rules/helpers/file.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Rule } from 'eslint'; -import { FileType } from '@sonar/shared/helpers'; +import { FileType } from '@sonar/shared'; export function isMainCode(context: Rule.RuleContext) { return !isTestCode(context); diff --git a/packages/jsts/tests/analysis/analyzer.test.ts b/packages/jsts/tests/analysis/analyzer.test.ts index 75705973ad0..a278d39f35a 100644 --- a/packages/jsts/tests/analysis/analyzer.test.ts +++ b/packages/jsts/tests/analysis/analyzer.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import path from 'path'; -import { setContext, toUnixPath } from '@sonar/shared/helpers'; +import { setContext, toUnixPath } from '@sonar/shared'; import { initializeLinter, RuleConfig, @@ -28,7 +28,7 @@ import { searchPackageJsonFiles, getNearestPackageJsons, } from '../../src'; -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; import { jsTsInput, parseJavaScriptSourceFile } from '../tools'; import { Linter, Rule } from 'eslint'; describe('analyzeJSTS', () => { diff --git a/packages/jsts/tests/builders/build.test.ts b/packages/jsts/tests/builders/build.test.ts index 4af2e365545..506ec1d57ee 100644 --- a/packages/jsts/tests/builders/build.test.ts +++ b/packages/jsts/tests/builders/build.test.ts @@ -17,12 +17,12 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { buildSourceCode } from '../../src'; import path from 'path'; import { AST } from 'vue-eslint-parser'; import { jsTsInput } from '../tools'; -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; describe('buildSourceCode', () => { beforeEach(() => { setContext({ diff --git a/packages/jsts/tests/dependencies/index.test.ts b/packages/jsts/tests/dependencies/index.test.ts index e33cb725313..94c65048856 100644 --- a/packages/jsts/tests/dependencies/index.test.ts +++ b/packages/jsts/tests/dependencies/index.test.ts @@ -19,7 +19,7 @@ */ import path from 'path'; -import { toUnixPath } from '@sonar/shared/helpers'; +import { toUnixPath } from '@sonar/shared'; import { searchPackageJsonFiles, getAllPackageJsons, diff --git a/packages/jsts/tests/linter/bundle-loader.test.ts b/packages/jsts/tests/linter/bundle-loader.test.ts index c2c293a8d3f..e4851c7ffdb 100755 --- a/packages/jsts/tests/linter/bundle-loader.test.ts +++ b/packages/jsts/tests/linter/bundle-loader.test.ts @@ -21,7 +21,7 @@ import { Linter } from 'eslint'; import { loadBundles, loadCustomRules } from '../../src/linter/bundle-loader'; import { CustomRule } from '../../src/linter/custom-rules'; import path from 'path'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; describe('BundleLoader', () => { it('should only load rules when requested', async () => { diff --git a/packages/jsts/tests/linter/config/linter-config.test.ts b/packages/jsts/tests/linter/config/linter-config.test.ts index 2df86240407..191aaa4ca7d 100644 --- a/packages/jsts/tests/linter/config/linter-config.test.ts +++ b/packages/jsts/tests/linter/config/linter-config.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Rule } from 'eslint'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { createLinterConfig, RuleConfig } from '../../../src/linter'; describe('createLinterConfig', () => { diff --git a/packages/jsts/tests/linter/config/rule-config.test.ts b/packages/jsts/tests/linter/config/rule-config.test.ts index a0d9bf94371..4b939f696ac 100644 --- a/packages/jsts/tests/linter/config/rule-config.test.ts +++ b/packages/jsts/tests/linter/config/rule-config.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Rule } from 'eslint'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { extendRuleConfig, RuleConfig } from '../../../src/linter/config'; import { SONAR_CONTEXT, SONAR_RUNTIME } from '../../../src/linter/parameters'; diff --git a/packages/jsts/tests/linter/index.test.ts b/packages/jsts/tests/linter/index.test.ts index d6a6a9624ff..da2b5fa85d1 100644 --- a/packages/jsts/tests/linter/index.test.ts +++ b/packages/jsts/tests/linter/index.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import path from 'path'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { initializeLinter, getLinter, LinterWrapper } from '../../src/linter'; import { parseJavaScriptSourceFile } from '../tools'; diff --git a/packages/jsts/tests/linter/wrapper.test.ts b/packages/jsts/tests/linter/wrapper.test.ts index cdb43fc1801..166da0945e7 100644 --- a/packages/jsts/tests/linter/wrapper.test.ts +++ b/packages/jsts/tests/linter/wrapper.test.ts @@ -19,7 +19,7 @@ */ import fs from 'fs'; import path from 'path'; -import { JsTsLanguage, setContext } from '@sonar/shared/helpers'; +import { JsTsLanguage, setContext } from '@sonar/shared'; import { CustomRule, LinterWrapper, quickFixRules, RuleConfig } from '../../src'; import { parseJavaScriptSourceFile, parseTypeScriptSourceFile } from '../tools'; diff --git a/packages/jsts/tests/parsers/eslint.test.ts b/packages/jsts/tests/parsers/eslint.test.ts index ebeeecc8112..2f21f7c4f31 100644 --- a/packages/jsts/tests/parsers/eslint.test.ts +++ b/packages/jsts/tests/parsers/eslint.test.ts @@ -20,7 +20,7 @@ import { buildSourceCode } from '../../src/builders'; import { JsTsAnalysisInput } from '../../src/analysis'; import path from 'path'; -import { JsTsLanguage, readFile } from '@sonar/shared/helpers'; +import { JsTsLanguage, readFile } from '@sonar/shared'; const cases = [ { syntax: 'ECMAScript 2015', fixture: 'es2015.js', language: 'js' }, diff --git a/packages/jsts/tests/parsers/parse.test.ts b/packages/jsts/tests/parsers/parse.test.ts index f091e2e2106..4f9e3349753 100644 --- a/packages/jsts/tests/parsers/parse.test.ts +++ b/packages/jsts/tests/parsers/parse.test.ts @@ -17,11 +17,11 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; import { buildParserOptions, parseForESLint, parsers } from '../../src/parsers'; import { JsTsAnalysisInput } from '../../src/analysis'; import path from 'path'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; const parseFunctions = [ { diff --git a/packages/jsts/tests/program/program.test.ts b/packages/jsts/tests/program/program.test.ts index cc95f35c4d4..a203850be22 100644 --- a/packages/jsts/tests/program/program.test.ts +++ b/packages/jsts/tests/program/program.test.ts @@ -28,7 +28,7 @@ import { isRoot, writeTSConfigFile, } from '../../src/program'; -import { toUnixPath } from '@sonar/shared/helpers'; +import { toUnixPath } from '@sonar/shared'; import ts, { ModuleKind, ScriptTarget } from 'typescript'; import fs from 'fs'; diff --git a/packages/jsts/tests/tools/helpers/input.ts b/packages/jsts/tests/tools/helpers/input.ts index dd0865e4e2f..53995ffb4f5 100644 --- a/packages/jsts/tests/tools/helpers/input.ts +++ b/packages/jsts/tests/tools/helpers/input.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { FileType, readFile } from '@sonar/shared/helpers'; +import { FileType, readFile } from '@sonar/shared'; import { EmbeddedAnalysisInput } from '../../../src/embedded'; import { JsTsAnalysisInput } from '../../../src'; diff --git a/packages/jsts/tests/tools/helpers/parsing.ts b/packages/jsts/tests/tools/helpers/parsing.ts index 7694b55ebda..87d57794e82 100644 --- a/packages/jsts/tests/tools/helpers/parsing.ts +++ b/packages/jsts/tests/tools/helpers/parsing.ts @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { FileType, readFile } from '@sonar/shared/helpers'; +import { FileType, readFile } from '@sonar/shared'; import { buildSourceCode } from '../../../src/builders'; export async function parseTypeScriptSourceFile( diff --git a/packages/jsts/tests/tools/sonar-runtime/sonar-runtime.test.ts b/packages/jsts/tests/tools/sonar-runtime/sonar-runtime.test.ts index 9ef9d0c34e7..cb0ad9baac8 100644 --- a/packages/jsts/tests/tools/sonar-runtime/sonar-runtime.test.ts +++ b/packages/jsts/tests/tools/sonar-runtime/sonar-runtime.test.ts @@ -25,7 +25,7 @@ import { import { parseTypeScriptSourceFile } from '../helpers'; import path from 'path'; import { readdir } from 'fs/promises'; -import { fileReadable } from '@sonar/shared/helpers'; +import { fileReadable } from '@sonar/shared'; /** * Detects missing secondary location support for rules using secondary locations. diff --git a/packages/jsts/tests/tools/testers/comment-based/checker.ts b/packages/jsts/tests/tools/testers/comment-based/checker.ts index 68bfee967a6..721b226ac1d 100644 --- a/packages/jsts/tests/tools/testers/comment-based/checker.ts +++ b/packages/jsts/tests/tools/testers/comment-based/checker.ts @@ -23,7 +23,7 @@ import * as path from 'path'; import { Rule, RuleTester } from 'eslint'; import { hasSonarRuntimeOption } from '../../../../src/linter/parameters'; import { buildSourceCode } from '../../../../src/builders'; -import { FileType, JsTsLanguage } from '@sonar/shared/helpers'; +import { FileType, JsTsLanguage } from '@sonar/shared'; import { extractExpectations } from './framework'; /** diff --git a/packages/jsts/tests/tools/testers/comment-based/framework.test.ts b/packages/jsts/tests/tools/testers/comment-based/framework.test.ts index 97cff1b0d88..dcdaeae797a 100644 --- a/packages/jsts/tests/tools/testers/comment-based/framework.test.ts +++ b/packages/jsts/tests/tools/testers/comment-based/framework.test.ts @@ -19,7 +19,7 @@ */ import * as path from 'path'; import { extractExpectations } from './framework'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; describe('Comment-based Testing Framework', () => { const baseDir = path.resolve(`${__dirname}/fixtures`); diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts new file mode 100644 index 00000000000..9a17399a441 --- /dev/null +++ b/packages/shared/src/index.ts @@ -0,0 +1,22 @@ +/* + * SonarQube JavaScript Plugin + * Copyright (C) 2011-2023 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +export * from './errors'; +export * from './helpers'; +export * from './types'; diff --git a/packages/tsconfig.json b/packages/tsconfig.json index de858379579..f707830191f 100644 --- a/packages/tsconfig.json +++ b/packages/tsconfig.json @@ -17,12 +17,11 @@ "typeRoots": ["../node_modules/@types", "../typings"], "baseUrl": ".", "paths": { - "@sonar/css": ["./css/src"], - "@sonar/html": ["./html/src"], - "@sonar/jsts": ["./jsts/src"], - "@sonar/jsts/embedded": ["./jsts/src/embedded"], - "@sonar/shared/*": ["./shared/src/*"], - "@sonar/yaml": ["./yaml/src"] + "@sonar/css": ["css/src"], + "@sonar/html": ["html/src"], + "@sonar/jsts": ["jsts/src"], + "@sonar/shared": ["shared/src"], + "@sonar/yaml": ["yaml/src"] } }, "references": [ diff --git a/packages/yaml/src/index.ts b/packages/yaml/src/index.ts index 3e2f2072531..b1a9d10940e 100644 --- a/packages/yaml/src/index.ts +++ b/packages/yaml/src/index.ts @@ -21,7 +21,7 @@ import { analyzeEmbedded, EmbeddedAnalysisInput as YamlAnalysisInput, EmbeddedAnalysisOutput as YamlAnalysisOutput, -} from '@sonar/jsts/embedded'; +} from '@sonar/jsts'; import { parseAwsFromYaml } from './aws'; diff --git a/packages/yaml/src/parser/parse-yaml.ts b/packages/yaml/src/parser/parse-yaml.ts index 786340b986c..d5ef2442522 100644 --- a/packages/yaml/src/parser/parse-yaml.ts +++ b/packages/yaml/src/parser/parse-yaml.ts @@ -19,9 +19,9 @@ */ import * as yaml from 'yaml'; import assert from 'assert'; -import { EmbeddedJS } from '@sonar/jsts/embedded'; +import { EmbeddedJS } from '@sonar/jsts'; import { BLOCK_FOLDED_FORMAT, BLOCK_LITERAL_FORMAT, isSupportedFormat } from './yaml/format'; -import { APIError } from '@sonar/shared/errors'; +import { APIError } from '@sonar/shared'; /** * A bundle of Yaml visitor predicate and Extras picker diff --git a/packages/yaml/tests/analysis/analyzer.test.ts b/packages/yaml/tests/analysis/analyzer.test.ts index 3c6e19bef54..1d54822e353 100644 --- a/packages/yaml/tests/analysis/analyzer.test.ts +++ b/packages/yaml/tests/analysis/analyzer.test.ts @@ -18,12 +18,16 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { join } from 'path'; -import { setContext } from '@sonar/shared/helpers'; +import { setContext } from '@sonar/shared'; import { parseAwsFromYaml } from '../../src/aws'; import { embeddedInput } from '../../../jsts/tests/tools'; -import { analyzeEmbedded, composeSyntheticFilePath } from '@sonar/jsts/embedded'; -import { initializeLinter, getLinter } from '@sonar/jsts'; -import { APIError } from '@sonar/shared/errors'; +import { + analyzeEmbedded, + composeSyntheticFilePath, + initializeLinter, + getLinter, +} from '@sonar/jsts'; +import { APIError } from '@sonar/shared'; import { Rule } from 'eslint'; describe('analyzeYAML', () => { diff --git a/packages/yaml/tests/aws/parser.test.ts b/packages/yaml/tests/aws/parser.test.ts index 95704dc14d6..e7f49d56be2 100644 --- a/packages/yaml/tests/aws/parser.test.ts +++ b/packages/yaml/tests/aws/parser.test.ts @@ -19,8 +19,8 @@ */ import path from 'path'; import { parseAwsFromYaml } from '../../src/aws'; -import { APIError } from '@sonar/shared/errors'; -import { readFile } from '@sonar/shared/helpers'; +import { APIError } from '@sonar/shared'; +import { readFile } from '@sonar/shared'; describe('parseAwsFromYaml()', () => { it('should parse valid YAML syntax', async () => { diff --git a/packages/yaml/tests/builder/build.test.ts b/packages/yaml/tests/builder/build.test.ts index 79904b711da..ef1fb22627e 100644 --- a/packages/yaml/tests/builder/build.test.ts +++ b/packages/yaml/tests/builder/build.test.ts @@ -21,8 +21,8 @@ import * as estree from 'estree'; import { join } from 'path'; import { parseAwsFromYaml } from '../../src/aws'; import { embeddedInput } from '../../../jsts/tests/tools'; -import { buildSourceCodes, composeSyntheticFilePath } from '@sonar/jsts/embedded'; -import { APIError } from '@sonar/shared/errors'; +import { buildSourceCodes, composeSyntheticFilePath } from '@sonar/jsts'; +import { APIError } from '@sonar/shared'; describe('buildSourceCodes()', () => { const fixturesPath = join(__dirname, 'fixtures', 'build'); diff --git a/packages/yaml/tests/builder/patch.test.ts b/packages/yaml/tests/builder/patch.test.ts index f98ced04718..4dabff2eb23 100644 --- a/packages/yaml/tests/builder/patch.test.ts +++ b/packages/yaml/tests/builder/patch.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import path from 'path'; -import { readFile, setContext } from '@sonar/shared/helpers'; +import { readFile, setContext } from '@sonar/shared'; import { buildSourceCode, JsTsAnalysisInput } from '@sonar/jsts'; import { parseAwsFromYaml } from '../../src/aws'; import { @@ -26,7 +26,7 @@ import { EmbeddedAnalysisInput, EmbeddedJS, patchParsingErrorMessage, -} from '@sonar/jsts/embedded'; +} from '@sonar/jsts'; describe('patchSourceCode', () => { beforeAll(() => { diff --git a/packages/yaml/tests/parser/format.test.ts b/packages/yaml/tests/parser/format.test.ts index 85862423d9a..758d01565bb 100644 --- a/packages/yaml/tests/parser/format.test.ts +++ b/packages/yaml/tests/parser/format.test.ts @@ -19,7 +19,7 @@ */ import * as yaml from 'yaml'; import path from 'path'; -import { readFile } from '@sonar/shared/helpers'; +import { readFile } from '@sonar/shared'; import { isSupportedFormat, SUPPORTED_STRING_FORMATS } from '../../src/parser'; describe('isSupportedFormat', () => { diff --git a/packages/yaml/tests/parser/parse.test.ts b/packages/yaml/tests/parser/parse.test.ts index 4b9ddb199db..a43fc1b66c7 100644 --- a/packages/yaml/tests/parser/parse.test.ts +++ b/packages/yaml/tests/parser/parse.test.ts @@ -19,8 +19,8 @@ */ import path from 'path'; import { parseYaml } from '../../src/parser'; -import { APIError } from '@sonar/shared/errors'; -import { readFile } from '@sonar/shared/helpers'; +import { APIError } from '@sonar/shared'; +import { readFile } from '@sonar/shared'; function noOpPicker(_key: any, _node: any, _ancestors: any) { return {}; From b15d39658959270123f976b94b48ecf2e3ab0cb6 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 Nov 2023 15:59:17 +0100 Subject: [PATCH 5/7] empty package.json files db before test --- packages/jsts/src/rules/S4328/unit.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/jsts/src/rules/S4328/unit.test.ts b/packages/jsts/src/rules/S4328/unit.test.ts index 351d9659b00..fa1f4376b49 100644 --- a/packages/jsts/src/rules/S4328/unit.test.ts +++ b/packages/jsts/src/rules/S4328/unit.test.ts @@ -20,10 +20,13 @@ import { RuleTester } from 'eslint'; import { rule } from './'; import path from 'path'; -import { searchPackageJsonFiles } from '@sonar/jsts'; +import { getAllPackageJsons, searchPackageJsonFiles } from '@sonar/jsts'; -const fixtures = path.join(__dirname, 'fixtures'); +//reset and search package.json files in rule dir +getAllPackageJsons().clear(); searchPackageJsonFiles(__dirname, []); + +const fixtures = path.join(__dirname, 'fixtures'); const filename = path.join(fixtures, 'package-json-project/file.js'); const options = []; const tsParserPath = require.resolve('@typescript-eslint/parser'); From 2ce5a575d3641ea25d81becf2bc70dbaad6f3b1a Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Tue, 14 Nov 2023 19:44:10 +0100 Subject: [PATCH 6/7] fix imports --- packages/bridge/src/errors/middleware.ts | 3 +-- packages/jsts/src/analysis/analysis.ts | 3 +-- packages/jsts/src/analysis/analyzer.ts | 3 +-- packages/jsts/src/linter/linters.ts | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/bridge/src/errors/middleware.ts b/packages/bridge/src/errors/middleware.ts index fecf1943e37..b6281838605 100644 --- a/packages/bridge/src/errors/middleware.ts +++ b/packages/bridge/src/errors/middleware.ts @@ -18,9 +18,8 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import express from 'express'; -import { ErrorCode } from '@sonar/shared'; +import { ErrorCode, error } from '@sonar/shared'; import { JsTsAnalysisOutput } from '@sonar/jsts'; -import { error } from '@sonar/shared'; /** * Express.js middleware for handling error while serving requests. diff --git a/packages/jsts/src/analysis/analysis.ts b/packages/jsts/src/analysis/analysis.ts index 567e189166b..6cf2287d6ba 100644 --- a/packages/jsts/src/analysis/analysis.ts +++ b/packages/jsts/src/analysis/analysis.ts @@ -17,9 +17,8 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { FileType, JsTsLanguage } from '@sonar/shared'; +import { FileType, JsTsLanguage, AnalysisInput, AnalysisOutput } from '@sonar/shared'; import { CpdToken, Issue, Metrics, SymbolHighlight, SyntaxHighlight } from '../linter'; -import { AnalysisInput, AnalysisOutput } from '@sonar/shared'; import { Perf } from '../monitoring'; /** diff --git a/packages/jsts/src/analysis/analyzer.ts b/packages/jsts/src/analysis/analyzer.ts index 59391a1ee05..f3de7d32067 100644 --- a/packages/jsts/src/analysis/analyzer.ts +++ b/packages/jsts/src/analysis/analyzer.ts @@ -17,9 +17,8 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared'; +import { APIError, debug, getContext, JsTsLanguage } from '@sonar/shared'; import { SourceCode } from 'eslint'; -import { debug, getContext, JsTsLanguage } from '@sonar/shared'; import { computeMetrics, findNoSonarLines, diff --git a/packages/jsts/src/linter/linters.ts b/packages/jsts/src/linter/linters.ts index ee6b56a977a..834dbce26db 100644 --- a/packages/jsts/src/linter/linters.ts +++ b/packages/jsts/src/linter/linters.ts @@ -17,8 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared'; -import { debug } from '@sonar/shared'; +import { APIError, debug } from '@sonar/shared'; import { LinterWrapper } from './wrapper'; import { RuleConfig } from './config'; From 766c72decb0e726f3a1fbd0247f6377813801f43 Mon Sep 17 00:00:00 2001 From: Victor Diez Date: Tue, 14 Nov 2023 21:15:56 +0100 Subject: [PATCH 7/7] fix imports --- packages/jsts/tests/analysis/analyzer.test.ts | 3 +-- packages/jsts/tests/builders/build.test.ts | 3 +-- packages/jsts/tests/parsers/parse.test.ts | 3 +-- packages/yaml/tests/analysis/analyzer.test.ts | 3 +-- packages/yaml/tests/aws/parser.test.ts | 3 +-- packages/yaml/tests/parser/parse.test.ts | 3 +-- 6 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/jsts/tests/analysis/analyzer.test.ts b/packages/jsts/tests/analysis/analyzer.test.ts index a278d39f35a..4723142ed45 100644 --- a/packages/jsts/tests/analysis/analyzer.test.ts +++ b/packages/jsts/tests/analysis/analyzer.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import path from 'path'; -import { setContext, toUnixPath } from '@sonar/shared'; +import { setContext, toUnixPath, APIError } from '@sonar/shared'; import { initializeLinter, RuleConfig, @@ -28,7 +28,6 @@ import { searchPackageJsonFiles, getNearestPackageJsons, } from '../../src'; -import { APIError } from '@sonar/shared'; import { jsTsInput, parseJavaScriptSourceFile } from '../tools'; import { Linter, Rule } from 'eslint'; describe('analyzeJSTS', () => { diff --git a/packages/jsts/tests/builders/build.test.ts b/packages/jsts/tests/builders/build.test.ts index 506ec1d57ee..91838cbc5be 100644 --- a/packages/jsts/tests/builders/build.test.ts +++ b/packages/jsts/tests/builders/build.test.ts @@ -17,12 +17,11 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { setContext } from '@sonar/shared'; +import { setContext, APIError } from '@sonar/shared'; import { buildSourceCode } from '../../src'; import path from 'path'; import { AST } from 'vue-eslint-parser'; import { jsTsInput } from '../tools'; -import { APIError } from '@sonar/shared'; describe('buildSourceCode', () => { beforeEach(() => { setContext({ diff --git a/packages/jsts/tests/parsers/parse.test.ts b/packages/jsts/tests/parsers/parse.test.ts index 4f9e3349753..e62765d333b 100644 --- a/packages/jsts/tests/parsers/parse.test.ts +++ b/packages/jsts/tests/parsers/parse.test.ts @@ -17,11 +17,10 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { APIError } from '@sonar/shared'; +import { APIError, readFile } from '@sonar/shared'; import { buildParserOptions, parseForESLint, parsers } from '../../src/parsers'; import { JsTsAnalysisInput } from '../../src/analysis'; import path from 'path'; -import { readFile } from '@sonar/shared'; const parseFunctions = [ { diff --git a/packages/yaml/tests/analysis/analyzer.test.ts b/packages/yaml/tests/analysis/analyzer.test.ts index 1d54822e353..cf107671259 100644 --- a/packages/yaml/tests/analysis/analyzer.test.ts +++ b/packages/yaml/tests/analysis/analyzer.test.ts @@ -18,7 +18,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { join } from 'path'; -import { setContext } from '@sonar/shared'; +import { setContext, APIError } from '@sonar/shared'; import { parseAwsFromYaml } from '../../src/aws'; import { embeddedInput } from '../../../jsts/tests/tools'; import { @@ -27,7 +27,6 @@ import { initializeLinter, getLinter, } from '@sonar/jsts'; -import { APIError } from '@sonar/shared'; import { Rule } from 'eslint'; describe('analyzeYAML', () => { diff --git a/packages/yaml/tests/aws/parser.test.ts b/packages/yaml/tests/aws/parser.test.ts index e7f49d56be2..320b2b1fc7f 100644 --- a/packages/yaml/tests/aws/parser.test.ts +++ b/packages/yaml/tests/aws/parser.test.ts @@ -19,8 +19,7 @@ */ import path from 'path'; import { parseAwsFromYaml } from '../../src/aws'; -import { APIError } from '@sonar/shared'; -import { readFile } from '@sonar/shared'; +import { APIError, readFile } from '@sonar/shared'; describe('parseAwsFromYaml()', () => { it('should parse valid YAML syntax', async () => { diff --git a/packages/yaml/tests/parser/parse.test.ts b/packages/yaml/tests/parser/parse.test.ts index a43fc1b66c7..a1261adc411 100644 --- a/packages/yaml/tests/parser/parse.test.ts +++ b/packages/yaml/tests/parser/parse.test.ts @@ -19,8 +19,7 @@ */ import path from 'path'; import { parseYaml } from '../../src/parser'; -import { APIError } from '@sonar/shared'; -import { readFile } from '@sonar/shared'; +import { APIError, readFile } from '@sonar/shared'; function noOpPicker(_key: any, _node: any, _ancestors: any) { return {};