Skip to content

Commit b4b2744

Browse files
authored
Merge pull request #1748 from forcedotcom/release-5.0.0-beta.2
RELEASE @W-17831303@ Conducting v5.0.0-beta.2 release
2 parents 6493f96 + 9609e9a commit b4b2744

File tree

22 files changed

+1240
-843
lines changed

22 files changed

+1240
-843
lines changed

.eslintignore

Lines changed: 0 additions & 3 deletions
This file was deleted.

.eslintrc.json

Lines changed: 0 additions & 25 deletions
This file was deleted.

.git2gus/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
"BUG P2": "a3QEE000000V67Z2AS",
2020
"BUG P3": "a3QEE000000V67Z2AS"
2121
},
22-
"gusTitlePrefix": "[GitHub Issue]"
22+
"gusTitlePrefix": "[GitHub Issue]",
23+
"statusWhenClosed": "FIXED"
2324
}

eslint.config.mjs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { FlatCompat } from "@eslint/eslintrc";
2+
import { fixupConfigRules } from "@eslint/compat";
3+
import eslint from '@eslint/js';
4+
import tseslint from 'typescript-eslint';
5+
6+
const compat = new FlatCompat({
7+
baseDirectory: import.meta.dirname
8+
});
9+
10+
export default [
11+
...tseslint.config(
12+
eslint.configs.recommended,
13+
...tseslint.configs.recommendedTypeChecked,
14+
{
15+
languageOptions: {
16+
parserOptions: {
17+
projectService: true,
18+
tsconfigRootDir: import.meta.dirname
19+
}
20+
}
21+
},
22+
{
23+
rules: {
24+
"@typescript-eslint/no-unused-vars": ["error", {
25+
"argsIgnorePattern": "^_",
26+
"varsIgnorePattern": "^_",
27+
"caughtErrorsIgnorePattern": "^_"}],
28+
"@typescript-eslint/unbound-method": ["error", {"ignoreStatic": true}]
29+
}
30+
}
31+
),
32+
...fixupConfigRules(compat.extends("plugin:sf-plugin/recommended")),
33+
{
34+
ignores: ["lib/**", "node_modules/**", "github-actions/**"]
35+
}
36+
];

messages/action-summary-viewer.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# common.streaming-logs-to
2+
3+
Streaming logs in real time to:
4+
15
# common.summary-header
26

37
Summary

package.json

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,46 @@
11
{
22
"name": "@salesforce/plugin-code-analyzer",
33
"description": "Static code scanner that applies quality and security rules to Apex code, and provides feedback.",
4-
"version": "5.0.0-beta.1",
4+
"version": "5.0.0-beta.2",
55
"author": "Salesforce Code Analyzer Team",
66
"bugs": "https://github.com/forcedotcom/sfdx-scanner/issues",
77
"dependencies": {
8-
"@oclif/core": "^3.3.2",
9-
"@salesforce/code-analyzer-core": "0.22.0",
10-
"@salesforce/code-analyzer-engine-api": "0.17.0",
11-
"@salesforce/code-analyzer-eslint-engine": "0.19.0",
12-
"@salesforce/code-analyzer-flowtest-engine": "0.17.0",
13-
"@salesforce/code-analyzer-pmd-engine": "0.19.0",
14-
"@salesforce/code-analyzer-regex-engine": "0.17.0",
15-
"@salesforce/code-analyzer-retirejs-engine": "0.17.0",
16-
"@salesforce/core": "^5",
17-
"@salesforce/sf-plugins-core": "^5.0.4",
8+
"@oclif/core": "3.27.0",
9+
"@salesforce/code-analyzer-core": "0.23.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",
16+
"@salesforce/core": "6.7.6",
17+
"@salesforce/sf-plugins-core": "5.0.13",
1818
"@salesforce/ts-types": "^2.0.12",
1919
"@types/js-yaml": "^4.0.9",
20-
"@types/node": "^22.10.9",
21-
"ansis": "^3.9.0",
20+
"@types/node": "^22.12.0",
21+
"ansis": "^3.10.0",
2222
"fast-glob": "^3.3.3",
2323
"js-yaml": "^4.1.0",
2424
"ts-node": "^10",
2525
"tslib": "^2"
2626
},
2727
"devDependencies": {
28-
"@eslint/js": "^8.57.1",
29-
"@oclif/plugin-help": "^6.2.22",
28+
"@eslint/compat": "^1.2.5",
29+
"@eslint/eslintrc": "^3.2.0",
30+
"@eslint/js": "^9.19.0",
31+
"@oclif/plugin-help": "^6.2.23",
3032
"@salesforce/cli-plugins-testkit": "^5.3.39",
3133
"@types/jest": "^29.5.14",
3234
"@types/tmp": "^0.2.6",
33-
"@typescript-eslint/eslint-plugin": "^8.21.0",
34-
"@typescript-eslint/parser": "^8.21.0",
35-
"eslint": "^8.57.1",
35+
"eslint": "^9.19.0",
3636
"eslint-plugin-sf-plugin": "^1.20.14",
3737
"jest": "^29.7.0",
3838
"jest-junit": "^16.0.0",
39-
"oclif": "^4.17.17",
39+
"oclif": "^4.17.20",
4040
"tmp": "^0.2.3",
4141
"ts-jest": "^29.2.5",
42-
"typescript": "^5.7.3"
42+
"typescript": "^5.7.3",
43+
"typescript-eslint": "^8.22.0"
4344
},
4445
"engines": {
4546
"node": ">=20.0.0"

src/lib/actions/ConfigAction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export class ConfigAction {
4141

4242
// We always add a Logger Listener to the appropriate listeners list, because we should always be logging.
4343
const logFileWriter: LogFileWriter = await LogFileWriter.fromConfig(userConfig);
44+
this.dependencies.actionSummaryViewer.viewPreExecutionSummary(logFileWriter.getLogDestination());
4445
const logEventLogger: LogEventLogger = new LogEventLogger(logFileWriter);
4546
this.dependencies.logEventListeners.push(logEventLogger);
4647

@@ -117,7 +118,7 @@ export class ConfigAction {
117118
this.dependencies.viewer.view(configModel);
118119
}
119120

120-
this.dependencies.actionSummaryViewer.view(logFileWriter.getLogDestination(), fileWritten ? input['output-file'] : undefined);
121+
this.dependencies.actionSummaryViewer.viewPostExecutionSummary(logFileWriter.getLogDestination(), fileWritten ? input['output-file'] : undefined);
121122
return Promise.resolve();
122123
}
123124

src/lib/actions/RulesAction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class RulesAction {
3333
public async execute(input: RulesInput): Promise<void> {
3434
const config: CodeAnalyzerConfig = this.dependencies.configFactory.create(input['config-file']);
3535
const logWriter: LogFileWriter = await LogFileWriter.fromConfig(config);
36+
this.dependencies.actionSummaryViewer.viewPreExecutionSummary(logWriter.getLogDestination());
3637
// We always add a Logger Listener to the appropriate listeners list, because we should Always Be Logging.
3738
this.dependencies.logEventListeners.push(new LogEventLogger(logWriter));
3839
const core: CodeAnalyzer = new CodeAnalyzer(config);
@@ -60,7 +61,7 @@ export class RulesAction {
6061
const rules: Rule[] = core.getEngineNames().flatMap(name => ruleSelection.getRulesFor(name));
6162

6263
this.dependencies.viewer.view(rules);
63-
this.dependencies.actionSummaryViewer.view(ruleSelection, logWriter.getLogDestination());
64+
this.dependencies.actionSummaryViewer.viewPostExecutionSummary(ruleSelection, logWriter.getLogDestination());
6465
}
6566

6667
public static createAction(dependencies: RulesDependencies): RulesAction {

src/lib/actions/RunAction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class RunAction {
5050
public async execute(input: RunInput): Promise<void> {
5151
const config: CodeAnalyzerConfig = this.dependencies.configFactory.create(input['config-file']);
5252
const logWriter: LogFileWriter = await LogFileWriter.fromConfig(config);
53+
this.dependencies.actionSummaryViewer.viewPreExecutionSummary(logWriter.getLogDestination());
5354
// We always add a Logger Listener to the appropriate listeners list, because we should Always Be Logging.
5455
this.dependencies.logEventListeners.push(new LogEventLogger(logWriter));
5556
const core: CodeAnalyzer = new CodeAnalyzer(config);
@@ -80,7 +81,7 @@ export class RunAction {
8081
this.dependencies.logEventListeners.forEach(listener => listener.stopListening());
8182
this.dependencies.writer.write(results);
8283
this.dependencies.resultsViewer.view(results);
83-
this.dependencies.actionSummaryViewer.view(results, logWriter.getLogDestination(), input['output-file']);
84+
this.dependencies.actionSummaryViewer.viewPostExecutionSummary(results, logWriter.getLogDestination(), input['output-file']);
8485

8586
const thresholdValue = input['severity-threshold'];
8687
if (thresholdValue) {

src/lib/utils/DateTimeUtils.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export interface Clock {
2+
now(): Date;
3+
}
4+
5+
export class RealClock implements Clock {
6+
public now(): Date {
7+
return new Date();
8+
}
9+
}
10+
11+
export function formatToDateTimeString(dateTime: Date): string {
12+
const year: number = dateTime.getFullYear();
13+
const month: string = String(dateTime.getMonth() + 1).padStart(2, '0'); // Months are 0-indexed
14+
const day: string = String(dateTime.getDate()).padStart(2, '0');
15+
const hours: string = String(dateTime.getHours()).padStart(2, '0');
16+
const minutes: string = String(dateTime.getMinutes()).padStart(2, '0');
17+
const seconds: string = String(dateTime.getSeconds()).padStart(2, '0');
18+
const milliseconds: string = String(dateTime.getMilliseconds()).padStart(3, '0');
19+
return `${year}_${month}_${day}_${hours}_${minutes}_${seconds}_${milliseconds}`;
20+
}

0 commit comments

Comments
 (0)