From 0cfa3255061feddaeecdfbd90258b65589f47b05 Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Mon, 11 Sep 2023 21:47:10 +0200 Subject: [PATCH 1/8] Implemented eslint inside tools --- bin/pbiviz.js | 9 +++++ src/CommandManager.ts | 24 +++++++++++--- src/VisualManager.ts | 77 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 102 insertions(+), 8 deletions(-) diff --git a/bin/pbiviz.js b/bin/pbiviz.js index 45f14dd0..4518d52e 100755 --- a/bin/pbiviz.js +++ b/bin/pbiviz.js @@ -68,6 +68,14 @@ pbiviz CommandManager.installCert(); }); +pbiviz + .command('lint') + .option('--fix', 'Set the port listening on') + .option('-f, --lint-path ', 'Paths that will be linted. Specify the relative path from the root of your visual, if you need more than one then separate it with a "," ', 'src') + .action(options => { + CommandManager.lint({ ...options, verbose: true }, rootPath); + }); + pbiviz .command('start') .usage('[options]') @@ -90,6 +98,7 @@ pbiviz .option('--skip-api', "Skips powerbi-visuals-api verifying") .option('-l, --all-locales', "Keeps all locale files in the package. By default only used inside stringResources folder locales are included.") .option('-v, --verbose', "Enables verbose logging") + .option('-f, --lint-path ', 'Paths that will be linted. Specify the relative path from the root of your visual, if you need more than one then separate it with a ","', "src") .addOption(new Option('-c, --compression ', "Enables compression of visual package") .choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) .default('6') diff --git a/src/CommandManager.ts b/src/CommandManager.ts index b47c6402..42df67e4 100644 --- a/src/CommandManager.ts +++ b/src/CommandManager.ts @@ -1,7 +1,7 @@ import { createCertificate } from './CertificateTools.js'; import ConsoleWriter from './ConsoleWriter.js'; -import VisualManager from './VisualManager.js'; +import VisualManager, { LintOptions, GenerateOptions } from './VisualManager.js'; import { WebpackOptions } from './WebPackWrap.js'; interface StartOptions { @@ -21,6 +21,8 @@ interface PackageOptions { skipApi: boolean; allLocales: boolean; verbose: boolean; + fix: boolean; + lintPath: string; } interface NewOptions { @@ -50,6 +52,13 @@ export default class CommandManager { .initializeWebpack(webpackOptions) visualManager.startWebpackServer(options.drop) } + + public static async lint(options: LintOptions, rootPath: string) { + const visualManager = new VisualManager(rootPath) + await visualManager + .prepareVisual() + .runLintValidation(options) + } public static async package(options: PackageOptions, rootPath: string) { if (!options.pbiviz && !options.resources) { @@ -68,15 +77,20 @@ export default class CommandManager { skipApiCheck: options.skipApi, allLocales: options.allLocales } - new VisualManager(rootPath) - .prepareVisual() - .validateVisual(options.verbose) + const lintOptions: LintOptions = { + verbose: options.verbose, + fix: options.fix, + lintPath: options.lintPath + } + const visual = new VisualManager(rootPath).prepareVisual() + await visual.runLintValidation(lintOptions) + visual.validateVisual() .initializeWebpack(webpackOptions) .then(visualManager => visualManager.generatePackage(options.verbose)) } public static new({ force, template }: NewOptions, name: string, rootPath: string) { - const generateOptions = { + const generateOptions: GenerateOptions = { force: force, template: template }; diff --git a/src/VisualManager.ts b/src/VisualManager.ts index d44efc7e..a464084d 100644 --- a/src/VisualManager.ts +++ b/src/VisualManager.ts @@ -31,10 +31,11 @@ import WebpackDevServer from "webpack-dev-server"; import childProcess from 'child_process'; import fs from 'fs-extra'; import path from 'path'; +import { ESLint } from "eslint"; import ConsoleWriter from './ConsoleWriter.js'; import VisualGenerator from './VisualGenerator.js'; -import { readJsonFromRoot, readJsonFromVisual } from './utils.js'; +import { getRootPath, readJsonFromRoot, readJsonFromVisual } from './utils.js'; import WebpackWrap, { WebpackOptions } from './WebPackWrap.js'; import Package from './Package.js'; import { Visual } from "./Visual.js"; @@ -42,11 +43,17 @@ import { FeatureManager, Logs, Status } from "./FeatureManager.js"; import { Severity, Stage } from "./features/FeatureTypes.js"; import TemplateFetcher from "./TemplateFetcher.js"; -interface GenerateOptions { +export interface GenerateOptions { force: boolean; template: string; } +export interface LintOptions { + verbose: boolean; + fix: boolean; + lintPath?: string; +} + const globalConfig = readJsonFromRoot('config.json'); const PBIVIZ_FILE = 'pbiviz.json'; @@ -104,6 +111,9 @@ export default class VisualManager { this.compiler.run(callback); } + /** + * Starts webpack server + */ public startWebpackServer(generateDropFiles: boolean = false) { ConsoleWriter.blank(); ConsoleWriter.info('Starting server...'); @@ -134,6 +144,9 @@ export default class VisualManager { } } + /** + * Validates the visual code + */ public validateVisual(verbose: boolean = false) { this.featureManager = new FeatureManager() const { status, logs } = this.featureManager.validate(Stage.PreBuild, this.visual); @@ -145,6 +158,9 @@ export default class VisualManager { return this; } + /** + * Validates the visual package + */ public validatePackage() { const featureManager = new FeatureManager(); const { logs } = featureManager.validate(Stage.PostBuild, this.package); @@ -152,6 +168,9 @@ export default class VisualManager { return logs; } + /** + * Outputs the results of the validation + */ public outputResults({ errors, deprecation, warnings, info }: Logs, verbose: boolean) { const headerMessage = { error: `Visual doesn't support some features required for all custom visuals:`, @@ -171,6 +190,9 @@ export default class VisualManager { this.outputLogsWithHeadMessage(headerInfoMessage, infoLogs, Severity.Info); } + /** + * Displays visual info + */ public displayInfo() { if (this.pbivizConfig) { ConsoleWriter.infoTable(this.pbivizConfig); @@ -180,7 +202,56 @@ export default class VisualManager { } /** - * Creates a new visual package + * Runs eslint validation in the visual folder + */ + public async runLintValidation({ verbose, fix, lintPath }: LintOptions) { + ConsoleWriter.info("Running eslint check..."); + const rootPath = getRootPath(); + const visualCodePath = `${process.cwd()}`; + const config: ESLint.Options = { + overrideConfig: { + env: { + browser: true, + es6: true, + es2022: true + }, + plugins: [ + "powerbi-visuals" + ], + extends: [ + "plugin:powerbi-visuals/recommended" + ] + }, + extensions: [".ts", ".tsx"], + resolvePluginsRelativeTo: rootPath, + fix + } + const eslint = new ESLint(config); + const lintPathPath = lintPath.split(',').map(el => path.join(visualCodePath, ...el.split('/'))); + const results = await eslint.lintPath(lintPathPath); + if (fix) { + ConsoleWriter.info("Eslint fixing errors..."); + await ESLint.outputFixes(results); + } + if (verbose) { + const formatter = await eslint.loadFormatter("stylish"); + const formattedResults = await formatter.format(results); + console.log(formattedResults) + } else { + const filteredResults = ESLint.getErrorResults(results); + // get total amount of errors and warnings in all elements of filteredResults + const totalErrors = filteredResults.reduce((acc, curr) => acc + curr.errorCount, 0); + const totalWarnings = filteredResults.reduce((acc, curr) => acc + curr.warningCount, 0); + if(totalErrors > 0 || totalWarnings > 0) { + ConsoleWriter.error(`Linter found ${totalErrors} errors and ${totalWarnings} warnings. Run with --verbose flag to see details.`) + process.exit(1) + } + } + ConsoleWriter.info("Eslint check completed."); + } + + /** + * Creates a new visual */ static async createVisual(rootPath: string, visualName: string, generateOptions: GenerateOptions): Promise { ConsoleWriter.info('Creating new visual'); From 4d2337975dcd9f44fae1559fa36a05c509a538c3 Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Tue, 24 Oct 2023 12:32:32 +0200 Subject: [PATCH 2/8] Removed eslint feature check --- src/Visual.ts | 8 +------- src/VisualManager.ts | 6 ++---- src/features/ESLint.ts | 16 ---------------- src/features/index.ts | 3 +-- 4 files changed, 4 insertions(+), 29 deletions(-) delete mode 100644 src/features/ESLint.ts diff --git a/src/Visual.ts b/src/Visual.ts index abe1dc61..276566b7 100644 --- a/src/Visual.ts +++ b/src/Visual.ts @@ -5,14 +5,12 @@ export class Visual { public visualFeatureType: VisualFeatureType; private capabilities; private config; - private packageJSON; private visualVersion: string; - constructor(capabilities, config, packageJson) { + constructor(capabilities, config) { this.capabilities = capabilities; this.config = config; this.visualFeatureType = this.getVisualFeatureType(); - this.packageJSON = packageJson; this.visualVersion = config.visual.version; } @@ -20,10 +18,6 @@ export class Visual { return compareVersions(this.config.apiVersion ?? minAPIversion, minAPIversion) !== -1 } - public doesESLlintSupported() { - return Object.entries(this.packageJSON.scripts).some(([, value]) => (value).includes("eslint")) - } - public isVisualVersionValid(length: number) { return this.visualVersion.split(".").length === length } diff --git a/src/VisualManager.ts b/src/VisualManager.ts index a464084d..ca336888 100644 --- a/src/VisualManager.ts +++ b/src/VisualManager.ts @@ -88,8 +88,7 @@ export default class VisualManager { public createVisualInstance() { this.capabilities = readJsonFromVisual("capabilities.json", this.basePath); - const packageJSON = readJsonFromVisual("package.json", this.basePath); - this.visual = new Visual(this.capabilities, this.pbivizConfig, packageJSON); + this.visual = new Visual(this.capabilities, this.pbivizConfig); } public async initializeWebpack(webpackOptions: WebpackOptions) { @@ -228,7 +227,7 @@ export default class VisualManager { } const eslint = new ESLint(config); const lintPathPath = lintPath.split(',').map(el => path.join(visualCodePath, ...el.split('/'))); - const results = await eslint.lintPath(lintPathPath); + const results = await eslint.lintFiles(lintPathPath); if (fix) { ConsoleWriter.info("Eslint fixing errors..."); await ESLint.outputFixes(results); @@ -244,7 +243,6 @@ export default class VisualManager { const totalWarnings = filteredResults.reduce((acc, curr) => acc + curr.warningCount, 0); if(totalErrors > 0 || totalWarnings > 0) { ConsoleWriter.error(`Linter found ${totalErrors} errors and ${totalWarnings} warnings. Run with --verbose flag to see details.`) - process.exit(1) } } ConsoleWriter.info("Eslint check completed."); diff --git a/src/features/ESLint.ts b/src/features/ESLint.ts deleted file mode 100644 index abb91b52..00000000 --- a/src/features/ESLint.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Visual } from "../Visual.js"; -import BaseFeature from "./BaseFeature.js"; -import { Severity, Stage, VisualFeatureType } from "./FeatureTypes.js"; - -export default class ESLint implements BaseFeature { - public static featureName = "ESLint" - public static documentationLink = "https://github.com/microsoft/eslint-plugin-powerbi-visuals"; - public static severity = Severity.Warning - public static stage = Stage.PreBuild - public static visualFeatureType = VisualFeatureType.All - public static errorMessage = `${this.featureName} - ${this.documentationLink}` - - static isSupported(visual: Visual) { - return visual.doesESLlintSupported() - } -} \ No newline at end of file diff --git a/src/features/index.ts b/src/features/index.ts index e4a28b23..1a85f6b1 100644 --- a/src/features/index.ts +++ b/src/features/index.ts @@ -24,7 +24,6 @@ import Tooltips from './Tooltips.js' import TotalSubTotal from './TotalSubTotal.js' import WarningIcon from './WarningIcon.js' import APIVersion from './APIVersion.js' -import ESLint from './ESLint.js' import VisualVersion from './VisualVersion.js' export { @@ -34,5 +33,5 @@ export { HighlightData, KeyboardNavigation, LandingPage, LaunchURL, Localizations, LocalStorage, ModalDialog, RenderingEvents, SelectionAcrossVisuals, SyncSlicer, Tooltips, TotalSubTotal, - WarningIcon, APIVersion, ESLint, VisualVersion + WarningIcon, APIVersion, VisualVersion } \ No newline at end of file From f349d372c2c56072379ce93982a34f33ea2a8b2d Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Tue, 24 Oct 2023 12:45:02 +0200 Subject: [PATCH 3/8] Removed test for ESLint --- spec/unit/FeatureManagerSpec.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/spec/unit/FeatureManagerSpec.js b/spec/unit/FeatureManagerSpec.js index 03d08c9e..5c68ccca 100644 --- a/spec/unit/FeatureManagerSpec.js +++ b/spec/unit/FeatureManagerSpec.js @@ -35,7 +35,7 @@ const config = readJsonFromRoot('config.json'); describe("Features", () => { describe("Visual", () => { - const { APIVersion, ESLint, VisualVersion } = features; + const { APIVersion, VisualVersion } = features; it("Should support API Version", () => { const Visual = { doesAPIVersionMatch: (minVersion) => { @@ -46,12 +46,6 @@ describe("Features", () => { expect(APIVersion.isSupported(Visual)).toBeTrue; }); - it("Should support ESLint", () => { - const Visual = { - doesESLlintSupported: () => true - } - expect(ESLint.isSupported(Visual)).toBeTrue; - }); it("Should support Version", () => { const Visual = { From 55b3b3e3920d9156e10d9bb5ad490592bf95acf6 Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Fri, 3 Nov 2023 12:41:23 +0100 Subject: [PATCH 4/8] Implemented new class LintValidator, now using eslintrc from visual by default --- bin/pbiviz.js | 4 +- src/CommandManager.ts | 2 - src/LintValidator.ts | 87 +++++++++++++++++++++++++++++++++++++++++++ src/VisualManager.ts | 58 ++++------------------------- src/utils.ts | 5 ++- 5 files changed, 100 insertions(+), 56 deletions(-) create mode 100644 src/LintValidator.ts diff --git a/bin/pbiviz.js b/bin/pbiviz.js index 4518d52e..beb62b55 100755 --- a/bin/pbiviz.js +++ b/bin/pbiviz.js @@ -70,8 +70,7 @@ pbiviz pbiviz .command('lint') - .option('--fix', 'Set the port listening on') - .option('-f, --lint-path ', 'Paths that will be linted. Specify the relative path from the root of your visual, if you need more than one then separate it with a "," ', 'src') + .option('-f, --fix', 'Set the port listening on') .action(options => { CommandManager.lint({ ...options, verbose: true }, rootPath); }); @@ -98,7 +97,6 @@ pbiviz .option('--skip-api', "Skips powerbi-visuals-api verifying") .option('-l, --all-locales', "Keeps all locale files in the package. By default only used inside stringResources folder locales are included.") .option('-v, --verbose', "Enables verbose logging") - .option('-f, --lint-path ', 'Paths that will be linted. Specify the relative path from the root of your visual, if you need more than one then separate it with a ","', "src") .addOption(new Option('-c, --compression ', "Enables compression of visual package") .choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) .default('6') diff --git a/src/CommandManager.ts b/src/CommandManager.ts index 42df67e4..f3dc0b5c 100644 --- a/src/CommandManager.ts +++ b/src/CommandManager.ts @@ -22,7 +22,6 @@ interface PackageOptions { allLocales: boolean; verbose: boolean; fix: boolean; - lintPath: string; } interface NewOptions { @@ -80,7 +79,6 @@ export default class CommandManager { const lintOptions: LintOptions = { verbose: options.verbose, fix: options.fix, - lintPath: options.lintPath } const visual = new VisualManager(rootPath).prepareVisual() await visual.runLintValidation(lintOptions) diff --git a/src/LintValidator.ts b/src/LintValidator.ts new file mode 100644 index 00000000..245fce1c --- /dev/null +++ b/src/LintValidator.ts @@ -0,0 +1,87 @@ +import { ESLint } from "eslint"; + +import ConsoleWriter from "./ConsoleWriter.js"; +import { LintOptions } from "./VisualManager.js"; +import { fileExists, getRootPath } from "./utils.js"; + +export class LintValidator { + + private visualPath: string; + private rootPath: string; + private config: ESLint.Options; + private defaultConfig: ESLint.Options; + private linterInstance: ESLint; + + constructor(fix: boolean = false) { + this.visualPath = process.cwd() + this.rootPath = getRootPath(); + this.prepareConfig(fix); + this.linterInstance = new ESLint(this.config); + } + + /** + * Runs lint validation in the visual folder + */ + public async runLintValidation({ verbose, fix }: LintOptions) { + ConsoleWriter.info("Running lint check..."); + // By default it will lint all files in the src of current working directory, but some files can be excluded in .eslintignore + const results = await this.linterInstance.lintFiles("src/**/*"); + + if (fix) { + await this.fixErrors(results); + } + await this.outputResults(results, verbose); + ConsoleWriter.info("Lint check completed."); + } + + private async fixErrors(results: ESLint.LintResult[]) { + ConsoleWriter.info("Lint fixing errors..."); + await ESLint.outputFixes(results); + } + + private async outputResults(results: ESLint.LintResult[], verbose: boolean) { + if (verbose) { + const formatter = await this.linterInstance.loadFormatter("stylish"); + const formattedResults = await formatter.format(results); + console.log(formattedResults) + } else { + const filteredResults = ESLint.getErrorResults(results); + // get total amount of errors and warnings in all elements of filteredResults + const totalErrors = filteredResults.reduce((acc, curr) => acc + curr.errorCount, 0); + const totalWarnings = filteredResults.reduce((acc, curr) => acc + curr.warningCount, 0); + if (totalErrors > 0 || totalWarnings > 0) { + ConsoleWriter.error(`Linter found ${totalErrors} errors and ${totalWarnings} warnings. Run with --verbose flag to see details.`) + } + } + } + + private prepareConfig(fix: boolean) { + this.defaultConfig = { + overrideConfig: { + env: { + browser: true, + es6: true, + es2022: true + }, + plugins: [ + "powerbi-visuals" + ], + extends: [ + "plugin:powerbi-visuals/recommended" + ] + }, + extensions: [".ts", ".tsx"], + resolvePluginsRelativeTo: this.rootPath, + useEslintrc: false, + fix + } + + const eslintrcExtensions = ['.json', '.js', '.ts'] + if (eslintrcExtensions.some(el => fileExists(this.visualPath, `.eslintrc${el}`))){ + this.config = { fix } + } else { + ConsoleWriter.warning("No .eslintrc file found in the visual folder. Using default config.") + this.config = this.defaultConfig + } + } +} \ No newline at end of file diff --git a/src/VisualManager.ts b/src/VisualManager.ts index ca336888..039129a3 100644 --- a/src/VisualManager.ts +++ b/src/VisualManager.ts @@ -31,17 +31,17 @@ import WebpackDevServer from "webpack-dev-server"; import childProcess from 'child_process'; import fs from 'fs-extra'; import path from 'path'; -import { ESLint } from "eslint"; import ConsoleWriter from './ConsoleWriter.js'; import VisualGenerator from './VisualGenerator.js'; -import { getRootPath, readJsonFromRoot, readJsonFromVisual } from './utils.js'; +import { readJsonFromRoot, readJsonFromVisual } from './utils.js'; import WebpackWrap, { WebpackOptions } from './WebPackWrap.js'; import Package from './Package.js'; import { Visual } from "./Visual.js"; import { FeatureManager, Logs, Status } from "./FeatureManager.js"; import { Severity, Stage } from "./features/FeatureTypes.js"; import TemplateFetcher from "./TemplateFetcher.js"; +import { LintValidator } from "./LintValidator.js"; export interface GenerateOptions { force: boolean; @@ -51,7 +51,6 @@ export interface GenerateOptions { export interface LintOptions { verbose: boolean; fix: boolean; - lintPath?: string; } const globalConfig = readJsonFromRoot('config.json'); @@ -86,6 +85,11 @@ export default class VisualManager { return this; } + public runLintValidation(options: LintOptions) { + const linter = new LintValidator(options.fix); + linter.runLintValidation(options); + } + public createVisualInstance() { this.capabilities = readJsonFromVisual("capabilities.json", this.basePath); this.visual = new Visual(this.capabilities, this.pbivizConfig); @@ -200,53 +204,7 @@ export default class VisualManager { } } - /** - * Runs eslint validation in the visual folder - */ - public async runLintValidation({ verbose, fix, lintPath }: LintOptions) { - ConsoleWriter.info("Running eslint check..."); - const rootPath = getRootPath(); - const visualCodePath = `${process.cwd()}`; - const config: ESLint.Options = { - overrideConfig: { - env: { - browser: true, - es6: true, - es2022: true - }, - plugins: [ - "powerbi-visuals" - ], - extends: [ - "plugin:powerbi-visuals/recommended" - ] - }, - extensions: [".ts", ".tsx"], - resolvePluginsRelativeTo: rootPath, - fix - } - const eslint = new ESLint(config); - const lintPathPath = lintPath.split(',').map(el => path.join(visualCodePath, ...el.split('/'))); - const results = await eslint.lintFiles(lintPathPath); - if (fix) { - ConsoleWriter.info("Eslint fixing errors..."); - await ESLint.outputFixes(results); - } - if (verbose) { - const formatter = await eslint.loadFormatter("stylish"); - const formattedResults = await formatter.format(results); - console.log(formattedResults) - } else { - const filteredResults = ESLint.getErrorResults(results); - // get total amount of errors and warnings in all elements of filteredResults - const totalErrors = filteredResults.reduce((acc, curr) => acc + curr.errorCount, 0); - const totalWarnings = filteredResults.reduce((acc, curr) => acc + curr.warningCount, 0); - if(totalErrors > 0 || totalWarnings > 0) { - ConsoleWriter.error(`Linter found ${totalErrors} errors and ${totalWarnings} warnings. Run with --verbose flag to see details.`) - } - } - ConsoleWriter.info("Eslint check completed."); - } + /** * Creates a new visual diff --git a/src/utils.ts b/src/utils.ts index f479b5a2..e762788f 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -35,6 +35,9 @@ export function readJsonFromRoot(filePath: string) { } export function readJsonFromVisual(filePath: string, visualPath?: string) { - return JSON.parse(fs.readFileSync(path.join(visualPath ?? process.cwd(), filePath), "utf8")); + return JSON.parse(fs.readFileSync(path.join(visualPath , filePath), "utf8")); } +export function fileExists(pathToFile: string, fileName: string) { + return fs.existsSync(path.join(pathToFile, fileName)); +} \ No newline at end of file From 3e781967d2fd34370d2d423b7bb1ead37a34d44d Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Fri, 3 Nov 2023 12:43:17 +0100 Subject: [PATCH 5/8] Fixed missing options in package command --- bin/pbiviz.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/pbiviz.js b/bin/pbiviz.js index beb62b55..2358dbdc 100755 --- a/bin/pbiviz.js +++ b/bin/pbiviz.js @@ -70,7 +70,7 @@ pbiviz pbiviz .command('lint') - .option('-f, --fix', 'Set the port listening on') + .option('--fix', 'Enable autofixing of lint errors') .action(options => { CommandManager.lint({ ...options, verbose: true }, rootPath); }); @@ -97,6 +97,7 @@ pbiviz .option('--skip-api', "Skips powerbi-visuals-api verifying") .option('-l, --all-locales', "Keeps all locale files in the package. By default only used inside stringResources folder locales are included.") .option('-v, --verbose', "Enables verbose logging") + .option('--fix', 'Enable autofixing of lint errors') .addOption(new Option('-c, --compression ', "Enables compression of visual package") .choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) .default('6') From 76f3cec4f62d2b6543104d84d23bcf5765072e5e Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Fri, 3 Nov 2023 12:45:43 +0100 Subject: [PATCH 6/8] Fixed audit error --- package-lock.json | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3f4ae77c..d8ad6380 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1287,19 +1287,22 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/browserify-sign/node_modules/readable-stream": { From e9c84eb990c6f28eed8983cd9a2326afae1e43ca Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Fri, 3 Nov 2023 13:16:24 +0100 Subject: [PATCH 7/8] fixed tests --- src/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.ts b/src/utils.ts index e762788f..b1a09172 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -35,7 +35,7 @@ export function readJsonFromRoot(filePath: string) { } export function readJsonFromVisual(filePath: string, visualPath?: string) { - return JSON.parse(fs.readFileSync(path.join(visualPath , filePath), "utf8")); + return JSON.parse(fs.readFileSync(path.join(visualPath ?? process.cwd(), filePath), "utf8")); } export function fileExists(pathToFile: string, fileName: string) { From b077ab27124b376f94cd28a2c6cca427b50e6f5a Mon Sep 17 00:00:00 2001 From: AleksSavelev Date: Thu, 4 Jan 2024 16:35:42 +0100 Subject: [PATCH 8/8] Updated packages --- package-lock.json | 193 ++++++++++++++++++++++++++-------------------- package.json | 16 ++-- 2 files changed, 116 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc392cb1..ccbb7c91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.3.0", "license": "MIT", "dependencies": { - "@typescript-eslint/parser": "^6.12.0", + "@typescript-eslint/parser": "^6.17.0", "assert": "^2.1.0", "async": "^3.2.5", "browserify-zlib": "^0.2.0", @@ -21,16 +21,16 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", "css-loader": "^6.8.1", - "domain-browser": "^5.4.0", + "domain-browser": "^5.7.0", "events": "^3.3.0", "extra-watch-webpack-plugin": "^1.0.3", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "https-browserify": "^1.0.0", "inline-source-map": "^0.6.2", "json-loader": "0.5.7", "jszip": "^3.10.1", "less": "^4.2.0", - "less-loader": "^11.1.3", + "less-loader": "^11.1.4", "lodash.clonedeep": "4.5.0", "lodash.defaults": "4.2.0", "lodash.isequal": "4.5.0", @@ -42,11 +42,11 @@ "process": "^0.11.10", "punycode": "^2.3.1", "querystring-es3": "^0.2.1", - "readable-stream": "^4.4.2", + "readable-stream": "^4.5.2", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "string_decoder": "^1.3.0", - "terser-webpack-plugin": "^5.3.9", + "terser-webpack-plugin": "^5.3.10", "timers-browserify": "^2.0.12", "ts-loader": "^9.5.1", "tty-browserify": "^0.0.1", @@ -62,8 +62,8 @@ "pbiviz": "bin/pbiviz.js" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.12.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "eslint": "^8.56.0", "eslint-plugin-powerbi-visuals": "^0.8.1", "jasmine": "5.1.0", "jasmine-spec-reporter": "7.0.0", @@ -117,9 +117,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -139,9 +139,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -507,16 +507,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", - "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.17.0.tgz", + "integrity": "sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/type-utils": "6.12.0", - "@typescript-eslint/utils": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/type-utils": "6.17.0", + "@typescript-eslint/utils": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -542,14 +542,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", - "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", - "dependencies": { - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.17.0.tgz", + "integrity": "sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==", + "dependencies": { + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4" }, "engines": { @@ -569,12 +569,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", - "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.17.0.tgz", + "integrity": "sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==", "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0" + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -585,13 +585,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", - "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.17.0.tgz", + "integrity": "sha512-hDXcWmnbtn4P2B37ka3nil3yi3VCQO2QEB9gBiHJmQp5wmyQWqnjA85+ZcE8c4FqnaB6lBwMrPkgd4aBYz3iNg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/utils": "6.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -612,9 +612,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", - "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.17.0.tgz", + "integrity": "sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -624,15 +624,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", - "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.17.0.tgz", + "integrity": "sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==", "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, @@ -649,18 +650,40 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", - "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.17.0.tgz", + "integrity": "sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", "semver": "^7.5.4" }, "engines": { @@ -675,11 +698,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", - "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.17.0.tgz", + "integrity": "sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==", "dependencies": { - "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/types": "6.17.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -1978,9 +2001,9 @@ } }, "node_modules/domain-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.4.0.tgz", - "integrity": "sha512-p20fsErHHxkrpfqi6BcwUmBWpKCO9oUDAegNqtnzpiS72Zu4uEXqTFlStlOr5dOf53reASN7ab47+P8OLVIVOQ==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.7.0.tgz", + "integrity": "sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==", "engines": { "node": ">=4" }, @@ -2108,14 +2131,14 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -2652,9 +2675,9 @@ } }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2756,9 +2779,9 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -3676,9 +3699,9 @@ } }, "node_modules/less-loader": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.3.tgz", - "integrity": "sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", + "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", "engines": { "node": ">= 14.15.0" }, @@ -4908,9 +4931,9 @@ } }, "node_modules/readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -5675,9 +5698,9 @@ } }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -5692,15 +5715,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" diff --git a/package.json b/package.json index 759b41e0..a259d646 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/Microsoft/PowerBI-visuals-tools#readme", "dependencies": { - "@typescript-eslint/parser": "^6.12.0", + "@typescript-eslint/parser": "^6.17.0", "assert": "^2.1.0", "async": "^3.2.5", "browserify-zlib": "^0.2.0", @@ -41,16 +41,16 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", "css-loader": "^6.8.1", - "domain-browser": "^5.4.0", + "domain-browser": "^5.7.0", "events": "^3.3.0", "extra-watch-webpack-plugin": "^1.0.3", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "https-browserify": "^1.0.0", "inline-source-map": "^0.6.2", "json-loader": "0.5.7", "jszip": "^3.10.1", "less": "^4.2.0", - "less-loader": "^11.1.3", + "less-loader": "^11.1.4", "lodash.clonedeep": "4.5.0", "lodash.defaults": "4.2.0", "lodash.isequal": "4.5.0", @@ -62,11 +62,11 @@ "process": "^0.11.10", "punycode": "^2.3.1", "querystring-es3": "^0.2.1", - "readable-stream": "^4.4.2", + "readable-stream": "^4.5.2", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "string_decoder": "^1.3.0", - "terser-webpack-plugin": "^5.3.9", + "terser-webpack-plugin": "^5.3.10", "timers-browserify": "^2.0.12", "ts-loader": "^9.5.1", "tty-browserify": "^0.0.1", @@ -79,8 +79,8 @@ "webpack-dev-server": "^4.15.1" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^6.12.0", - "eslint": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "eslint": "^8.56.0", "eslint-plugin-powerbi-visuals": "^0.8.1", "jasmine": "5.1.0", "jasmine-spec-reporter": "7.0.0",