Skip to content

Commit 97c4151

Browse files
authored
NEW @W-17915822@ Added and integrated SFGE dependency (#1765)
1 parent 56e4581 commit 97c4151

File tree

9 files changed

+136
-59
lines changed

9 files changed

+136
-59
lines changed

messages/progress-event-listener.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ Executing rules
1313
# execution-spinner.progress-summary
1414
%d of %d engines finished after %ds.
1515

16-
# execution-spinner.engine-status
16+
# execution-spinner.engine-progress
1717
- %s at %d% completion.
1818

19+
# execution-spinner.engine-progress-with-message
20+
- %s at %d% completion - %s
21+
1922
# execution-spinner.finished-status
2023
done. Executed rules from %s.

package.json

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
"bugs": "https://github.com/forcedotcom/sfdx-scanner/issues",
77
"dependencies": {
88
"@oclif/core": "3.27.0",
9-
"@salesforce/code-analyzer-core": "0.24.0",
10-
"@salesforce/code-analyzer-engine-api": "0.18.0",
11-
"@salesforce/code-analyzer-eslint-engine": "0.20.0",
12-
"@salesforce/code-analyzer-flowtest-engine": "0.18.0",
13-
"@salesforce/code-analyzer-pmd-engine": "0.20.0",
14-
"@salesforce/code-analyzer-regex-engine": "0.18.0",
15-
"@salesforce/code-analyzer-retirejs-engine": "0.18.0",
9+
"@salesforce/code-analyzer-core": "0.25.1",
10+
"@salesforce/code-analyzer-engine-api": "0.20.0",
11+
"@salesforce/code-analyzer-eslint-engine": "0.20.1",
12+
"@salesforce/code-analyzer-flowtest-engine": "0.18.1",
13+
"@salesforce/code-analyzer-pmd-engine": "0.21.0",
14+
"@salesforce/code-analyzer-regex-engine": "0.18.1",
15+
"@salesforce/code-analyzer-retirejs-engine": "0.18.1",
16+
"@salesforce/code-analyzer-sfge-engine": "0.1.0",
1617
"@salesforce/core": "6.7.6",
1718
"@salesforce/sf-plugins-core": "5.0.13",
1819
"@salesforce/ts-types": "^2.0.12",

src/lib/factories/EnginePluginsFactory.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as PmdCpdEnginesModule from '@salesforce/code-analyzer-pmd-engine';
44
import * as RetireJSEngineModule from '@salesforce/code-analyzer-retirejs-engine';
55
import * as RegexEngineModule from '@salesforce/code-analyzer-regex-engine';
66
import * as FlowTestEngineModule from '@salesforce/code-analyzer-flowtest-engine';
7+
import * as SfgeEngineModule from '@salesforce/code-analyzer-sfge-engine';
78

89
export interface EnginePluginsFactory {
910
create(): EnginePlugin[];
@@ -16,7 +17,8 @@ export class EnginePluginsFactoryImpl implements EnginePluginsFactory {
1617
PmdCpdEnginesModule.createEnginePlugin(),
1718
RetireJSEngineModule.createEnginePlugin(),
1819
RegexEngineModule.createEnginePlugin(),
19-
FlowTestEngineModule.createEnginePlugin()
20+
FlowTestEngineModule.createEnginePlugin(),
21+
SfgeEngineModule.createEnginePlugin()
2022
];
2123
}
2224
}

src/lib/listeners/ProgressEventListener.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ export class EngineRunProgressSpinner extends ProgressSpinner implements Progres
148148
* Mapping from each engine's name to a number indicating its completion percentage.
149149
* @private
150150
*/
151-
private progressMap: Map<string, number>;
151+
private progressMap: Map<string, {percentComplete: number, message?: string}>;
152152

153153
/**
154154
* @param display The display with which to show output to the user
@@ -187,7 +187,7 @@ export class EngineRunProgressSpinner extends ProgressSpinner implements Progres
187187
}
188188

189189
// Update the progress map at the start so that the updated information is used in the next status.
190-
this.progressMap.set(e.engineName, e.percentComplete);
190+
this.progressMap.set(e.engineName, {percentComplete: e.percentComplete, message: e.message});
191191

192192
if (!this.isSpinning()) {
193193
this.startSpinning(getMessage(BundleName.ProgressEventListener, 'execution-spinner.action'));
@@ -201,10 +201,14 @@ export class EngineRunProgressSpinner extends ProgressSpinner implements Progres
201201
let unfinishedEngines = 0;
202202
const engineLines: string[] = [];
203203
for (const [name, progress] of this.progressMap.entries()) {
204-
if (progress !== 100) {
204+
if (progress.percentComplete !== 100) {
205205
unfinishedEngines += 1;
206206
}
207-
engineLines.push(getMessage(BundleName.ProgressEventListener, 'execution-spinner.engine-status', [name, progress]));
207+
if (progress.message) {
208+
engineLines.push(getMessage(BundleName.ProgressEventListener, 'execution-spinner.engine-progress-with-message', [name, progress.percentComplete, progress.message]));
209+
} else {
210+
engineLines.push(getMessage(BundleName.ProgressEventListener, 'execution-spinner.engine-progress', [name, progress.percentComplete]));
211+
}
208212
}
209213
return [
210214
getMessage(BundleName.ProgressEventListener, 'execution-spinner.progress-summary', [totalEngines - unfinishedEngines, totalEngines, secondsRunning]),

test/lib/factories/EnginePluginsFactory.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ describe('EnginePluginsFactoryImpl', () => {
66
const pluginsFactory = new EnginePluginsFactoryImpl();
77
const enginePlugins = pluginsFactory.create();
88

9-
expect(enginePlugins).toHaveLength(5);
9+
expect(enginePlugins).toHaveLength(6);
1010
expect(enginePlugins[0].getAvailableEngineNames()).toEqual(['eslint']);
1111
expect(enginePlugins[1].getAvailableEngineNames()).toEqual(['pmd', 'cpd']);
1212
expect(enginePlugins[2].getAvailableEngineNames()).toEqual(['retire-js']);
1313
expect(enginePlugins[3].getAvailableEngineNames()).toEqual(['regex']);
1414
expect(enginePlugins[4].getAvailableEngineNames()).toEqual(['flowtest']);
15+
expect(enginePlugins[5].getAvailableEngineNames()).toEqual(['sfge']);
1516
});
1617
});

test/lib/listeners/LogEventListener.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('LogEventListener implementations', () => {
3636
// ==== TEST SETUP ====
3737
const expectedMessages: string[] = ['message1', 'message2', 'message3'];
3838
for (const expectedMessage of expectedMessages) {
39-
engine1.addEvents({logLevel, message: expectedMessage});
39+
engine1.addLogEvents({logLevel, message: expectedMessage});
4040
}
4141
// The specific files we target in our workspace don't matter.
4242
const workspace = await core.createWorkspace(['package.json']);
@@ -65,7 +65,7 @@ describe('LogEventListener implementations', () => {
6565
// ==== TEST SETUP ====
6666
const messages = ['message1', 'message2', 'message3'];
6767
for (const message of messages) {
68-
engine1.addEvents({logLevel, message});
68+
engine1.addLogEvents({logLevel, message});
6969
}
7070
// The specific files we include in our workspace don't matter.
7171
const workspace = await core.createWorkspace(['package.json']);
@@ -94,7 +94,7 @@ describe('LogEventListener implementations', () => {
9494
// ==== TEST SETUP ====
9595
const expectedMessages = ['message1', 'message2', 'message3'];
9696
for (const expectedMessage of expectedMessages) {
97-
engine1.addEvents({logLevel, message: expectedMessage});
97+
engine1.addLogEvents({logLevel, message: expectedMessage});
9898
}
9999
// The specific files we include in our workspace don't matter.
100100
const workspace = await core.createWorkspace(['package.json']);

test/lib/listeners/ProgressEventListener.test.ts

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {CodeAnalyzer, CodeAnalyzerConfig} from '@salesforce/code-analyzer-core';
22
import {EngineRunProgressSpinner, RuleSelectionProgressSpinner} from '../../../src/lib/listeners/ProgressEventListener';
33
import {SpyDisplay, DisplayEvent, DisplayEventType} from '../../stubs/SpyDisplay';
4-
import {TimeableStubEnginePlugin1, TimeableEngine1, TimeableEngine2} from '../../stubs/StubEnginePlugins';
4+
import {ConfigurableStubEnginePlugin1, EventConfigurableEngine1, TimeableStubEnginePlugin1, TimeableEngine1, TimeableEngine2} from '../../stubs/StubEnginePlugins';
55
import {StubEnginePluginsFactory_withFunctionalStubEngine} from '../../stubs/StubEnginePluginsFactories';
66

77
describe('ProgressEventListener implementations', () => {
@@ -335,6 +335,54 @@ describe('ProgressEventListener implementations', () => {
335335
expect(endEvent.data).toContain('done. Executed rules from timeableEngine1.');
336336
}, 10000);
337337

338+
it('When an engine supplies status messages with its progress, those messages are displayed', async () => {
339+
// ==== TEST SETUP ====
340+
// Assign our event-configurable engine to the core.
341+
const engine: EventConfigurableEngine1 = new EventConfigurableEngine1({});
342+
const plugin = new ConfigurableStubEnginePlugin1();
343+
plugin.addEngine(engine);
344+
await codeAnalyzer.addEnginePlugin(plugin);
345+
// Give the engine some progress events.
346+
engine.addRunProgressEvents(
347+
{percentComplete: 10},
348+
{percentComplete: 15, message: 'Progress Message 1'},
349+
{percentComplete: 25},
350+
{percentComplete: 50, message: 'Progress Message 2'},
351+
{percentComplete: 75},
352+
{percentComplete: 90, message: 'Progress Message 3'},
353+
);
354+
const ruleSelection = await codeAnalyzer.selectRules(['eventConfigurableEngine1']);
355+
// We don't want automated ticking to mess with the messages, so just turn it off for now.
356+
spinner = new EngineRunProgressSpinner(spyDisplay, -1);
357+
358+
// The specific targets we use for our workspace don't matter.
359+
const workspace = await codeAnalyzer.createWorkspace(['package.json']);
360+
361+
// ==== TESTED BEHAVIOR ====
362+
// Start listening, then execute the rules, then stop listening.
363+
spinner.listen(codeAnalyzer);
364+
await codeAnalyzer.run(ruleSelection, {
365+
workspace
366+
});
367+
spinner.stopListening();
368+
369+
// ==== ASSERTIONS ====
370+
const displayEvents = spyDisplay.getDisplayEvents();
371+
// The first event should have been the Spinner Start.
372+
const startEvent = displayEvents[0];
373+
expect(startEvent).toHaveProperty('type', DisplayEventType.SPINNER_START);
374+
// The start event should always start with at least 1 known engine, to prevent "0 of 0 engines" scenarios.
375+
expect(startEvent.data).toContain("0 of 1 engines");
376+
const progressEventsInOrder: string[] = displayEvents.slice(1, displayEvents.length - 1).map(e => e.data);
377+
expect(progressEventsInOrder[0]).toContain("- eventConfigurableEngine1 at 0% completion.");
378+
expect(progressEventsInOrder[1]).toContain("- eventConfigurableEngine1 at 10% completion.");
379+
expect(progressEventsInOrder[2]).toContain("- eventConfigurableEngine1 at 15% completion - Progress Message 1");
380+
expect(progressEventsInOrder[3]).toContain("- eventConfigurableEngine1 at 25% completion.");
381+
expect(progressEventsInOrder[4]).toContain("- eventConfigurableEngine1 at 50% completion - Progress Message 2");
382+
expect(progressEventsInOrder[5]).toContain("- eventConfigurableEngine1 at 75% completion.");
383+
expect(progressEventsInOrder[6]).toContain("- eventConfigurableEngine1 at 90% completion - Progress Message 3");
384+
});
385+
338386
// There's currently no need for this Spinner to accept multiple Cores, so we've opted to not implement that
339387
// functionality. We're locking that in with a test, and we can change this test if we ever decide to support it.
340388
it('Rejects multiple Cores', async () => {

test/stubs/StubEnginePlugins.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ export class TimeableEngine2 extends BaseTimeableEngine {
368368
* EventConfigurableEngine1 - An engine with a {@code setWaitTime()} method allowing a delay to be added between update events.
369369
*/
370370
export class EventConfigurableEngine1 extends EngineApi.Engine {
371-
private events: {logLevel: LogLevel, message: string}[] = [];
371+
private logEvents: {logLevel: LogLevel, message: string}[] = [];
372+
private runProgressEvents: {percentComplete: number, message?: string}[] = [];
372373

373374
constructor(_config: EngineApi.ConfigObject) {
374375
super();
@@ -382,8 +383,12 @@ export class EventConfigurableEngine1 extends EngineApi.Engine {
382383
return Promise.resolve("1.0.5");
383384
}
384385

385-
addEvents(...events: {logLevel: LogLevel, message: string}[]): void {
386-
this.events = [...this.events, ...events];
386+
addLogEvents(...events: {logLevel: LogLevel, message: string}[]): void {
387+
this.logEvents = [...this.logEvents, ...events];
388+
}
389+
390+
addRunProgressEvents(...events: {percentComplete: number, message?: string}[]): void {
391+
this.runProgressEvents = [...this.runProgressEvents, ...events];
387392
}
388393

389394
describeRules(): Promise<EngineApi.RuleDescription[]> {
@@ -399,13 +404,16 @@ export class EventConfigurableEngine1 extends EngineApi.Engine {
399404
}
400405

401406
async runRules(_ruleNames: string[], _runOptions: EngineApi.RunOptions): Promise<EngineApi.EngineRunResults> {
402-
for (const {logLevel, message} of this.events) {
407+
for (const {logLevel, message} of this.logEvents) {
403408
this.emitEvent<EngineApi.LogEvent>({
404409
type: EngineApi.EventType.LogEvent,
405410
message,
406411
logLevel
407412
});
408413
}
414+
for (const {percentComplete, message} of this.runProgressEvents) {
415+
this.emitRunRulesProgressEvent(percentComplete, message);
416+
}
409417
return Promise.resolve({violations: []});
410418
}
411419
}

yarn.lock

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1699,12 +1699,12 @@
16991699
strip-ansi "6.0.1"
17001700
ts-retry-promise "^0.8.1"
17011701

1702-
"@salesforce/code-analyzer-core@0.24.0":
1703-
version "0.24.0"
1704-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-core/-/code-analyzer-core-0.24.0.tgz#5381143f05ef4c76b56aa4f58505dea2c7cd9b4a"
1705-
integrity sha512-VvFWJqd4bi/862gExO2pp7kKhN4HYyOgqiV0E669LzqMyN7McqdRQFiew93o8cKxuzs49R/D3EKFiB+jenU3vQ==
1702+
"@salesforce/code-analyzer-core@0.25.1":
1703+
version "0.25.1"
1704+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-core/-/code-analyzer-core-0.25.1.tgz#06101ea36ab23a54067840851431bdd9fec6f74c"
1705+
integrity sha512-Rm1BLksTta7x0jPw8wILE3JgyFuN9PKlclIYU4fC3MP++vDkzQVxQD9jxL3lsXbQDyHKxFu1UdgqSKgsHY0OdQ==
17061706
dependencies:
1707-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1707+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17081708
"@types/js-yaml" "^4.0.9"
17091709
"@types/node" "^20.0.0"
17101710
"@types/sarif" "^2.1.7"
@@ -1714,24 +1714,26 @@
17141714
semver "^7.7.0"
17151715
xmlbuilder "^15.1.1"
17161716

1717-
"@salesforce/code-analyzer-engine-api@0.18.0":
1718-
version "0.18.0"
1719-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-engine-api/-/code-analyzer-engine-api-0.18.0.tgz#578ef4b7750e589a0bf5ef0fce6b4c0efeb20404"
1720-
integrity sha512-Wahr0SfdGDGNzGYmh14JtFsT3My9KA6+3V9rughwA4BXjFOCkPEKdECHg57GyiLutzldoAUwTBQtoogCboTx6g==
1717+
"@salesforce/code-analyzer-engine-api@0.20.0":
1718+
version "0.20.0"
1719+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-engine-api/-/code-analyzer-engine-api-0.20.0.tgz#2451d15f3ab980842effef9bd35f1bd9b8cfd879"
1720+
integrity sha512-DbNNIIN9z0kI5ezOb9x7Za78V5DUtT3prcfog1aZj4MuTmijEhCRL2UAWKG7bndxXLBkuTr4MmibcYVgOky2lg==
17211721
dependencies:
17221722
"@types/node" "^20.0.0"
1723+
"@types/tmp" "^0.2.6"
1724+
tmp "^0.2.3"
17231725

1724-
"@salesforce/[email protected].0":
1725-
version "0.20.0"
1726-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-eslint-engine/-/code-analyzer-eslint-engine-0.20.0.tgz#08b1cc626f31efbb992085632c974e4e4cb94e5a"
1727-
integrity sha512-HW4l4Tli6gc3K5t3XDH7HsSb7HyfIhVd5/pk+ru0PUyl0IZTHgg5DuiibgC0cOJ2WR8xQKSqbF9eUtcy2mZsCQ==
1726+
"@salesforce/[email protected].1":
1727+
version "0.20.1"
1728+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-eslint-engine/-/code-analyzer-eslint-engine-0.20.1.tgz#41908d84e08ec766d24a2b5b970ec9f14e557c9c"
1729+
integrity sha512-DBMhqSGCqo+/s4tsBrZoEEceFgQ73nokofC5sKKZVnYbEDiOlJRgPuqX3gdGLFDO3DiKWG+jLWcRqv8+NOZ20g==
17281730
dependencies:
17291731
"@babel/core" "^7.26.7"
17301732
"@babel/eslint-parser" "^7.26.5"
17311733
"@eslint/js" "^8.57.1"
17321734
"@lwc/eslint-plugin-lwc" "^2.1.0"
17331735
"@lwc/eslint-plugin-lwc-platform" "^5.1.0"
1734-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1736+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17351737
"@salesforce/eslint-config-lwc" "^3.7.1"
17361738
"@salesforce/eslint-plugin-lightning" "^1.0.1"
17371739
"@types/eslint" "^8.56.10"
@@ -1742,52 +1744,60 @@
17421744
eslint-plugin-import "^2.31.0"
17431745
eslint-plugin-jest "^28.11.0"
17441746

1745-
"@salesforce/[email protected].0":
1746-
version "0.18.0"
1747-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-flowtest-engine/-/code-analyzer-flowtest-engine-0.18.0.tgz#6767755e13e6afef139cdae15a17ff9022ee7880"
1748-
integrity sha512-Dlfh1jpK3U0ZqpUJGzEqSUQBFaawDIntQX8O47PooHt4eeINQzJEF1t7ljkzz/Npqn1eui8xRMyEFvcB3fJ++A==
1747+
"@salesforce/[email protected].1":
1748+
version "0.18.1"
1749+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-flowtest-engine/-/code-analyzer-flowtest-engine-0.18.1.tgz#b623bb1e0d41a397529743b5811ef8aa0f1e9aff"
1750+
integrity sha512-cv2r3vZUcsDKGMxQ2u3WKXzBPWgurLKq1DjGr86imnhRvs+2tsAbMHb5lEDaOOjaXUHjDmf1A2hIObY2oOzHEw==
17491751
dependencies:
1750-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1752+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17511753
"@types/node" "^20.0.0"
17521754
"@types/semver" "^7.5.8"
17531755
"@types/tmp" "^0.2.6"
17541756
semver "^7.7.0"
17551757
tmp "^0.2.3"
17561758

1757-
"@salesforce/code-analyzer-pmd-engine@0.20.0":
1758-
version "0.20.0"
1759-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-pmd-engine/-/code-analyzer-pmd-engine-0.20.0.tgz#c667db6c25d9b10eceda974251cc238ad370c6ff"
1760-
integrity sha512-DoEjH9I7/OLvjXq70La7fs2GOOpqLzTWlQ7rGIpruQ8RmZopKcJ+MOaRmFaLE6NVb/1ufEC2G0G41QbK/ARnFw==
1759+
"@salesforce/code-analyzer-pmd-engine@0.21.0":
1760+
version "0.21.0"
1761+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-pmd-engine/-/code-analyzer-pmd-engine-0.21.0.tgz#68653d7cf54d043e0558a80875a2cff78fe09c74"
1762+
integrity sha512-StkMAyjzaNdcJDWzwMAubKlq5rnjAM2zLxvBYiC255GoSJhkhbMjN6YHiAy35TpzedhXh73bhY8vaYXF0D1eZQ==
17611763
dependencies:
1762-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1764+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17631765
"@types/node" "^20.0.0"
17641766
"@types/semver" "^7.5.8"
1765-
"@types/tmp" "^0.2.6"
17661767
semver "^7.7.0"
1767-
tmp "^0.2.3"
17681768

1769-
"@salesforce/[email protected].0":
1770-
version "0.18.0"
1771-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-regex-engine/-/code-analyzer-regex-engine-0.18.0.tgz#ccf54e61eaae77c9183f5b727dd001a50aed462c"
1772-
integrity sha512-mr6GPTXSs7lTakeZF0ol6g8zUek4ycFYAMZbN4Y+h8ilkwqNwdbGORVr86piLQ/UaDdPYOloKmVwfhKnJ9SF5w==
1769+
"@salesforce/[email protected].1":
1770+
version "0.18.1"
1771+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-regex-engine/-/code-analyzer-regex-engine-0.18.1.tgz#4e4c97531f93ccd645d1fe2f2e56b36ff19b5893"
1772+
integrity sha512-rIhdyYY96ttFdIggXgyES/m5A2ijWH5su7mQqFVzg4sct3BZKdBw+AeypNkQvH2wZm3iggwg9+x5G6fuKcqOZg==
17731773
dependencies:
1774-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1774+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17751775
"@types/node" "^20.0.0"
17761776
isbinaryfile "^5.0.4"
17771777

1778-
"@salesforce/[email protected].0":
1779-
version "0.18.0"
1780-
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-retirejs-engine/-/code-analyzer-retirejs-engine-0.18.0.tgz#a4f322727b58af7e667c3ad33b7d7283ec1a2567"
1781-
integrity sha512-E5QdJqHRG60DCWIEieZzNYWB9EbwcJ98MjMOuKMESAeVn49u2qHn9zuGHWuiJjxO1jmzw+jsqjRVXiRqCOH7JQ==
1778+
"@salesforce/[email protected].1":
1779+
version "0.18.1"
1780+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-retirejs-engine/-/code-analyzer-retirejs-engine-0.18.1.tgz#42e5c9cf94e1a39a38f854e9104c8d5131bd5f2e"
1781+
integrity sha512-RABH2NCD17ll89klJOsxhLIqha3meiGHhJN9lzclV/7AD/3zeXmCuHV4DwRAilN1D74nsDM0CmY9XrTcSLzxsQ==
17821782
dependencies:
1783-
"@salesforce/code-analyzer-engine-api" "0.18.0"
1783+
"@salesforce/code-analyzer-engine-api" "0.20.0"
17841784
"@types/node" "^20.0.0"
17851785
"@types/tmp" "^0.2.6"
17861786
isbinaryfile "^5.0.4"
17871787
node-stream-zip "^1.15.0"
17881788
retire "^5.2.5"
17891789
tmp "^0.2.3"
17901790

1791+
"@salesforce/[email protected]":
1792+
version "0.1.0"
1793+
resolved "https://registry.yarnpkg.com/@salesforce/code-analyzer-sfge-engine/-/code-analyzer-sfge-engine-0.1.0.tgz#10988052af910b8c76bb8c462d1050dad9c6c786"
1794+
integrity sha512-i8v0VEoeX7jk+Dqf/s/uQ1Y6q9sOP7wPtiNW8LyGFLkyQm/FY6XmKWykbfN/QRgPRa39JoJ4J4Qy9Lfe2rASJw==
1795+
dependencies:
1796+
"@salesforce/code-analyzer-engine-api" "0.20.0"
1797+
"@types/node" "^20.0.0"
1798+
"@types/tmp" "^0.2.6"
1799+
tmp "^0.2.3"
1800+
17911801
"@salesforce/[email protected]", "@salesforce/core@^6.4.1":
17921802
version "6.7.6"
17931803
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-6.7.6.tgz#6a73c6a4e615ce837be5b5c142cfc63a6c8db3bd"
@@ -2879,7 +2889,7 @@ ansicolors@~0.3.2:
28792889
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
28802890
integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
28812891

2882-
ansis@^3.10.0, ansis@^3.17.0:
2892+
ansis@^3.17.0:
28832893
version "3.17.0"
28842894
resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7"
28852895
integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==

0 commit comments

Comments
 (0)