@salesforce/plugin-info 2.0.1 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -108,6 +108,6 @@ EXAMPLES
108
108
  $ sfdx info:releasenotes:display --version latest
109
109
  ```
110
110
 
111
- _See code: [src/commands/info/releasenotes/display.ts](https://github.com/salesforcecli/plugin-info/blob/v2.0.0/src/commands/info/releasenotes/display.ts)_
111
+ _See code: [src/commands/info/releasenotes/display.ts](https://github.com/salesforcecli/plugin-info/blob/v2.0.1/src/commands/info/releasenotes/display.ts)_
112
112
 
113
113
  <!-- commandsstop -->
@@ -0,0 +1,19 @@
1
+ import { flags, SfdxCommand } from '@salesforce/command';
2
+ import { SfDoctorDiagnosis } from '../doctor';
3
+ export default class Doctor extends SfdxCommand {
4
+ static description: string;
5
+ static examples: string[];
6
+ static hidden: boolean;
7
+ protected static flagsConfig: {
8
+ command: flags.Discriminated<flags.String>;
9
+ plugin: flags.Discriminated<flags.String>;
10
+ outputdir: flags.Discriminated<flags.String>;
11
+ };
12
+ private tasks;
13
+ private doctor;
14
+ private outputDir;
15
+ private filesWrittenMsgs;
16
+ run(): Promise<SfDoctorDiagnosis>;
17
+ private parseCommand;
18
+ private setupCommandExecution;
19
+ }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const os = require("os");
10
+ const path = require("path");
11
+ const child_process_1 = require("child_process");
12
+ const command_1 = require("@salesforce/command");
13
+ const core_1 = require("@salesforce/core");
14
+ const doctor_1 = require("../doctor");
15
+ core_1.Messages.importMessagesDirectory(__dirname);
16
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-info', 'doctor');
17
+ class Doctor extends command_1.SfdxCommand {
18
+ constructor() {
19
+ super(...arguments);
20
+ // Array of promises that are various doctor tasks to perform
21
+ // such as running a command and running diagnostics.
22
+ this.tasks = [];
23
+ this.filesWrittenMsgs = [];
24
+ }
25
+ async run() {
26
+ this.doctor = doctor_1.Doctor.getInstance();
27
+ const lifecycle = core_1.Lifecycle.getInstance();
28
+ const pluginFlag = this.flags.plugin;
29
+ const commandFlag = this.flags.command;
30
+ const outputdirFlag = this.flags.outputdir;
31
+ this.outputDir = path.resolve(outputdirFlag ?? process.cwd());
32
+ // eslint-disable-next-line @typescript-eslint/require-await
33
+ lifecycle.on('Doctor:diagnostic', async (data) => {
34
+ this.ux.log(`${data.status} - ${data.testName}`);
35
+ this.doctor.addDiagnosticStatus(data);
36
+ });
37
+ if (commandFlag) {
38
+ this.setupCommandExecution(commandFlag);
39
+ }
40
+ if (pluginFlag) {
41
+ // verify the plugin flag matches an installed plugin
42
+ if (!this.config.plugins.some((p) => p.name === pluginFlag)) {
43
+ throw new core_1.SfError(messages.getMessage('pluginNotInstalledError', [pluginFlag]), 'UnknownPluginError');
44
+ }
45
+ this.ux.styledHeader(`Running diagnostics for plugin: ${pluginFlag}`);
46
+ const listeners = lifecycle.getListeners(`sf-doctor-${pluginFlag}`);
47
+ if (listeners.length) {
48
+ // run the diagnostics for a specific plugin
49
+ this.tasks.push(lifecycle.emit(`sf-doctor-${pluginFlag}`, this.doctor));
50
+ }
51
+ else {
52
+ this.ux.log("Plugin doesn't have diagnostic tests to run.");
53
+ }
54
+ }
55
+ else {
56
+ this.ux.styledHeader('Running all diagnostics');
57
+ // run all diagnostics
58
+ this.tasks.push(lifecycle.emit('sf-doctor', this.doctor));
59
+ /* eslint-disable @typescript-eslint/ban-ts-comment,@typescript-eslint/no-unsafe-assignment */
60
+ // @ts-ignore Seems like a TypeScript bug. Compiler thinks doctor.diagnose() returns `void`.
61
+ this.tasks = [...this.tasks, ...this.doctor.diagnose()];
62
+ /* eslint-enable @typescript-eslint/ban-ts-comment,@typescript-eslint/no-unsafe-assignment */
63
+ }
64
+ await Promise.all(this.tasks);
65
+ const diagnosis = this.doctor.getDiagnosis();
66
+ const diagnosisLocation = this.doctor.writeFileSync(path.join(this.outputDir, 'diagnosis.json'), JSON.stringify(diagnosis, null, 2));
67
+ this.filesWrittenMsgs.push(`Wrote doctor diagnosis to: ${diagnosisLocation}`);
68
+ this.ux.log();
69
+ this.filesWrittenMsgs.forEach((msg) => this.ux.log(msg));
70
+ this.ux.log();
71
+ this.ux.styledHeader('Suggestions');
72
+ diagnosis.suggestions.forEach((s) => this.ux.log(` * ${s}`));
73
+ return diagnosis;
74
+ }
75
+ // Takes the command flag and:
76
+ // 1. ensures it begins with `${config.bin}`; typically "sfdx" or "sf"
77
+ // 2. ensures the `--dev-debug` flag is set
78
+ parseCommand(command) {
79
+ let fullCmd = command.trim();
80
+ if (!fullCmd.startsWith(`${this.config.bin} `)) {
81
+ fullCmd = `${this.config.bin} ${fullCmd}`;
82
+ }
83
+ if (!command.includes('--dev-debug')) {
84
+ fullCmd += ' --dev-debug';
85
+ }
86
+ return fullCmd;
87
+ }
88
+ // Adds a promise to execute the provided command and all
89
+ // parameters in debug mode, writing stdout and stderr to files
90
+ // in the current or specified directory.
91
+ setupCommandExecution(command) {
92
+ const cmdString = this.parseCommand(command);
93
+ this.ux.styledHeader('Running command with debugging');
94
+ this.ux.log(`${cmdString}\n`);
95
+ this.doctor.addCommandName(cmdString);
96
+ const execPromise = new Promise((resolve) => {
97
+ const execOptions = {
98
+ env: Object.assign({}, process.env),
99
+ };
100
+ (0, child_process_1.exec)(cmdString, execOptions, (error, stdout, stderr) => {
101
+ const code = error?.code || 0;
102
+ const stdoutWithCode = `Command exit code: ${code}\n\n${stdout}`;
103
+ const stdoutLogLocation = this.doctor.writeFileSync(path.join(this.outputDir, 'command-stdout.log'), stdoutWithCode);
104
+ const debugLogLocation = this.doctor.writeFileSync(path.join(this.outputDir, 'command-debug.log'), stderr);
105
+ this.filesWrittenMsgs.push(`Wrote command stdout log to: ${stdoutLogLocation}`);
106
+ this.filesWrittenMsgs.push(`Wrote command debug log to: ${debugLogLocation}`);
107
+ resolve();
108
+ });
109
+ });
110
+ this.tasks.push(execPromise);
111
+ }
112
+ }
113
+ exports.default = Doctor;
114
+ Doctor.description = messages.getMessage('commandDescription');
115
+ Doctor.examples = messages.getMessage('examples').split(os.EOL);
116
+ // Hide for now
117
+ Doctor.hidden = true;
118
+ Doctor.flagsConfig = {
119
+ command: command_1.flags.string({
120
+ char: 'c',
121
+ description: messages.getMessage('flags.command'),
122
+ }),
123
+ plugin: command_1.flags.string({
124
+ char: 'p',
125
+ description: messages.getMessage('flags.plugin'),
126
+ }),
127
+ outputdir: command_1.flags.directory({
128
+ char: 'o',
129
+ description: messages.getMessage('flags.outputdir'),
130
+ }),
131
+ };
132
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,6 @@ const HIDE_FOOTER = 'SFDX_HIDE_RELEASE_NOTES_FOOTER';
27
27
  const messages = core_1.Messages.loadMessages('@salesforce/plugin-info', 'display');
28
28
  class Display extends command_1.SfdxCommand {
29
29
  async run() {
30
- var _a;
31
30
  const env = new kit_1.Env();
32
31
  const isHook = !!this.flags.hook;
33
32
  if (env.getBoolean(HIDE_NOTES) && isHook) {
@@ -42,7 +41,7 @@ class Display extends command_1.SfdxCommand {
42
41
  const installedVersion = this.config.pjson.version;
43
42
  const infoConfig = await (0, getInfoConfig_1.getInfoConfig)(this.config.root);
44
43
  const { distTagUrl, releaseNotesPath, releaseNotesFilename } = infoConfig.releasenotes;
45
- let version = (_a = this.flags.version) !== null && _a !== void 0 ? _a : installedVersion;
44
+ let version = this.flags.version ?? installedVersion;
46
45
  if (Display.helpers.includes(version)) {
47
46
  version = await (0, getDistTagVersion_1.getDistTagVersion)(distTagUrl, version);
48
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../../src/commands/info/releasenotes/display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../../src/commands/info/releasenotes/display.ts"],"names":[],"mappings":"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"}
package/lib/constants.js CHANGED
@@ -5,8 +5,7 @@
5
5
  * Licensed under the BSD 3-Clause license.
6
6
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
- var _a;
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
10
9
  exports.SFDX_RELEASE_NOTES_TIMEOUT = void 0;
11
- exports.SFDX_RELEASE_NOTES_TIMEOUT = ((_a = process.env.SFDX_RELEASE_NOTES_TIMEOUT) !== null && _a !== void 0 ? _a : 3000);
10
+ exports.SFDX_RELEASE_NOTES_TIMEOUT = (process.env.SFDX_RELEASE_NOTES_TIMEOUT ?? 3000);
12
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEU,QAAA,0BAA0B,GAAG,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,mCAAI,IAAI,CAAW,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,0BAA0B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,CAAW,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Config } from '@oclif/core';
2
+ import { SfDoctor } from './doctor';
3
+ export interface DiagnosticStatus {
4
+ testName: string;
5
+ status: 'pass' | 'fail' | 'warn' | 'unknown';
6
+ }
7
+ /**
8
+ * Diagnostics are all the tests that ensure a known, clean CLI configuration
9
+ * and a way to run them asynchronously. Typically this is used only by the
10
+ * Doctor class.
11
+ *
12
+ * Create a new diagnostic test by adding a method to the `Diagnostics` class,
13
+ * appending "Check" to the name. Emit a "Doctor:diagnostic" event with a
14
+ * `DiagnosticStatus` payload so the CLI can report on the diagnostic result.
15
+ */
16
+ export declare class Diagnostics {
17
+ private readonly doctor;
18
+ private config;
19
+ private diagnosis;
20
+ constructor(doctor: SfDoctor, config: Config);
21
+ /**
22
+ * Run all diagnostics using the data gathered by the doctor and add
23
+ * suggestions to the diagnosis.
24
+ */
25
+ run(): Array<Promise<void>>;
26
+ /**
27
+ * Checks to see if the running version of the CLI is the latest.
28
+ */
29
+ outdatedCliVersionCheck(): Promise<void>;
30
+ /**
31
+ * Checks if the salesforcedx plugin is installed and suggests
32
+ * to uninstall it if there.
33
+ */
34
+ salesforceDxPluginCheck(): Promise<void>;
35
+ /**
36
+ * Checks and warns if any plugins are linked.
37
+ */
38
+ linkedPluginCheck(): Promise<void>;
39
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Diagnostics = void 0;
10
+ const childProcess = require("child_process");
11
+ const core_1 = require("@salesforce/core");
12
+ core_1.Messages.importMessagesDirectory(__dirname);
13
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-info', 'diagnostics');
14
+ /**
15
+ * Diagnostics are all the tests that ensure a known, clean CLI configuration
16
+ * and a way to run them asynchronously. Typically this is used only by the
17
+ * Doctor class.
18
+ *
19
+ * Create a new diagnostic test by adding a method to the `Diagnostics` class,
20
+ * appending "Check" to the name. Emit a "Doctor:diagnostic" event with a
21
+ * `DiagnosticStatus` payload so the CLI can report on the diagnostic result.
22
+ */
23
+ class Diagnostics {
24
+ constructor(doctor, config) {
25
+ this.doctor = doctor;
26
+ this.config = config;
27
+ this.diagnosis = doctor.getDiagnosis();
28
+ }
29
+ /**
30
+ * Run all diagnostics using the data gathered by the doctor and add
31
+ * suggestions to the diagnosis.
32
+ */
33
+ run() {
34
+ const keys = Reflect.ownKeys(Diagnostics.prototype);
35
+ return keys.filter((key) => key.endsWith('Check')).map((diagnostic) => this[diagnostic]());
36
+ }
37
+ // **********************************************************
38
+ // D I A G N O S T I C S
39
+ //
40
+ // NOTE: Diagnostic function names must end with "Check"
41
+ // or they will not be run with all diagnostics.
42
+ //
43
+ // **********************************************************
44
+ /**
45
+ * Checks to see if the running version of the CLI is the latest.
46
+ */
47
+ async outdatedCliVersionCheck() {
48
+ const cliVersionArray = this.diagnosis.versionDetail.cliVersion.split('/');
49
+ const cliName = cliVersionArray[0];
50
+ const cliVersion = cliVersionArray[1];
51
+ return new Promise((resolve) => {
52
+ const testName = 'using latest or latest-rc CLI version';
53
+ let status = 'unknown';
54
+ childProcess.exec(`npm view ${cliName} dist-tags.latest`, {}, (error, stdout, stderr) => {
55
+ const code = error?.code ?? 0;
56
+ if (code === 0) {
57
+ const latest = stdout.trim();
58
+ if (cliVersion < latest) {
59
+ status = 'fail';
60
+ this.doctor.addSuggestion(messages.getMessage('updateCliVersion', [cliVersion, latest]));
61
+ }
62
+ else {
63
+ status = 'pass';
64
+ }
65
+ }
66
+ else {
67
+ this.doctor.addSuggestion(messages.getMessage('latestCliVersionError', [stderr]));
68
+ }
69
+ void core_1.Lifecycle.getInstance()
70
+ .emit('Doctor:diagnostic', { testName, status })
71
+ .then(() => resolve());
72
+ });
73
+ });
74
+ }
75
+ /**
76
+ * Checks if the salesforcedx plugin is installed and suggests
77
+ * to uninstall it if there.
78
+ */
79
+ async salesforceDxPluginCheck() {
80
+ const testName = 'salesforcedx plugin not installed';
81
+ let status = 'pass';
82
+ const plugins = this.diagnosis.versionDetail.pluginVersions;
83
+ if (plugins?.some((p) => p.split(' ')[0] === 'salesforcedx')) {
84
+ status = 'fail';
85
+ const bin = this.diagnosis.cliConfig.bin;
86
+ this.doctor.addSuggestion(messages.getMessage('salesforceDxPluginDetected', [bin]));
87
+ }
88
+ await core_1.Lifecycle.getInstance().emit('Doctor:diagnostic', { testName, status });
89
+ }
90
+ /**
91
+ * Checks and warns if any plugins are linked.
92
+ */
93
+ async linkedPluginCheck() {
94
+ const testName = 'no linked plugins';
95
+ let status = 'pass';
96
+ const plugins = this.config.plugins;
97
+ const linkedPlugins = plugins.filter((p) => p.name.includes('(link)'));
98
+ linkedPlugins.forEach((lp) => {
99
+ status = 'fail';
100
+ this.doctor.addSuggestion(messages.getMessage('linkedPluginWarning', [lp.name]));
101
+ });
102
+ await core_1.Lifecycle.getInstance().emit('Doctor:diagnostic', { testName, status });
103
+ }
104
+ }
105
+ exports.Diagnostics = Diagnostics;
106
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { AnyJson, KeyValue } from '@salesforce/ts-types';
2
+ import { Config } from '@oclif/core';
3
+ import { VersionDetail } from '@oclif/plugin-version';
4
+ import { DiagnosticStatus } from './diagnostics';
5
+ export interface SfDoctor {
6
+ addCommandName(commandName: string): void;
7
+ addSuggestion(suggestion: string): void;
8
+ addDiagnosticStatus(status: DiagnosticStatus): void;
9
+ addPluginData(pluginName: string, data: AnyJson): void;
10
+ diagnose(): void;
11
+ getDiagnosis(): SfDoctorDiagnosis;
12
+ writeFileSync(filePath: string, contents: string): string;
13
+ }
14
+ declare type CliConfig = Partial<Config> & {
15
+ nodeEngine: string;
16
+ };
17
+ export interface SfDoctorDiagnosis {
18
+ versionDetail: VersionDetail;
19
+ sfdxEnvVars: Array<KeyValue<string>>;
20
+ sfEnvVars: Array<KeyValue<string>>;
21
+ cliConfig: CliConfig;
22
+ pluginSpecificData: {
23
+ [pluginName: string]: AnyJson[];
24
+ };
25
+ diagnosticResults: DiagnosticStatus[];
26
+ suggestions: string[];
27
+ commandName?: string;
28
+ logFilePaths: string[];
29
+ }
30
+ export declare class Doctor implements SfDoctor {
31
+ private readonly config;
32
+ private static instance;
33
+ readonly id: number;
34
+ private diagnosis;
35
+ private constructor();
36
+ /**
37
+ * Returns a singleton instance of an SfDoctor.
38
+ */
39
+ static getInstance(): SfDoctor;
40
+ /**
41
+ * Initializes a new instance of SfDoctor with CLI config data.
42
+ *
43
+ * @param config The oclif config for the CLI
44
+ * @param versionDetail The result of running a verbose version command
45
+ * @returns An instance of SfDoctor
46
+ */
47
+ static init(config: Config, versionDetail: VersionDetail): SfDoctor;
48
+ /**
49
+ * Use the gathered data to discover potential problems by running all diagnostics.
50
+ *
51
+ * @returns An array of diagnostic promises.
52
+ */
53
+ diagnose(): Array<Promise<void>>;
54
+ /**
55
+ * Add a suggestion in the form of:
56
+ * "Because of <this data point> we recommend to <suggestion>"
57
+ *
58
+ * @param suggestion A suggestion for the CLI user to try based on gathered data
59
+ */
60
+ addSuggestion(suggestion: string): void;
61
+ /**
62
+ * Add a diagnostic test status.
63
+ *
64
+ * @param status a diagnostic test status
65
+ */
66
+ addDiagnosticStatus(status: DiagnosticStatus): void;
67
+ /**
68
+ * Add diagnostic data that is specific to the passed plugin name.
69
+ *
70
+ * @param pluginName The name in the plugin's package.json
71
+ * @param data Any data to add to the doctor diagnosis that is specific
72
+ * to the plugin and a valid JSON value.
73
+ */
74
+ addPluginData(pluginName: string, data: AnyJson): void;
75
+ /**
76
+ * Add a command name that the doctor will run to the diagnosis data for
77
+ * use by diagnostics.
78
+ *
79
+ * @param commandName The name of the command that the doctor will run. E.g., "force:org:list"
80
+ */
81
+ addCommandName(commandName: string): void;
82
+ /**
83
+ * Returns all the data gathered, paths to doctor files, and recommendations.
84
+ */
85
+ getDiagnosis(): SfDoctorDiagnosis;
86
+ /**
87
+ * Write a file with the provided path. The file name will be prepended
88
+ * with this doctor's id.
89
+ *
90
+ * E.g., `name = myContent.json` will write `1658350735579-myContent.json`
91
+ *
92
+ * @param filePath The path of the file to write.
93
+ * @param contents The string contents to write.
94
+ * @return The full path to the file.
95
+ */
96
+ writeFileSync(filePath: string, contents: string): string;
97
+ }
98
+ export {};
package/lib/doctor.js ADDED
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Doctor = void 0;
10
+ const fs = require("fs");
11
+ const path = require("path");
12
+ const core_1 = require("@salesforce/core");
13
+ const kit_1 = require("@salesforce/kit");
14
+ const diagnostics_1 = require("./diagnostics");
15
+ core_1.Messages.importMessagesDirectory(__dirname);
16
+ const messages = core_1.Messages.loadMessages('@salesforce/plugin-info', 'doctor');
17
+ const PINNED_SUGGESTIONS = [
18
+ messages.getMessage('pinnedSuggestions.checkGitHubIssues'),
19
+ messages.getMessage('pinnedSuggestions.checkSfdcStatus'),
20
+ ];
21
+ class Doctor {
22
+ constructor(config, versionDetail) {
23
+ this.config = config;
24
+ this.id = Date.now();
25
+ const sfdxEnvVars = new kit_1.Env().entries().filter((e) => e[0].startsWith('SFDX_'));
26
+ const sfEnvVars = new kit_1.Env().entries().filter((e) => e[0].startsWith('SF_'));
27
+ const cliConfig = (0, kit_1.omit)(config, ['plugins', 'pjson', 'userPJSON', 'options']);
28
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
29
+ cliConfig.nodeEngine = config.pjson.engines.node;
30
+ this.diagnosis = {
31
+ versionDetail,
32
+ sfdxEnvVars,
33
+ sfEnvVars,
34
+ cliConfig,
35
+ pluginSpecificData: {},
36
+ diagnosticResults: [],
37
+ suggestions: [...PINNED_SUGGESTIONS],
38
+ logFilePaths: [],
39
+ };
40
+ }
41
+ /**
42
+ * Returns a singleton instance of an SfDoctor.
43
+ */
44
+ static getInstance() {
45
+ if (!Doctor.instance) {
46
+ throw new core_1.SfError(messages.getMessage('doctorNotInitializedError'), 'SfDoctorInitError');
47
+ }
48
+ return Doctor.instance;
49
+ }
50
+ /**
51
+ * Initializes a new instance of SfDoctor with CLI config data.
52
+ *
53
+ * @param config The oclif config for the CLI
54
+ * @param versionDetail The result of running a verbose version command
55
+ * @returns An instance of SfDoctor
56
+ */
57
+ static init(config, versionDetail) {
58
+ if (Doctor.instance) {
59
+ throw new core_1.SfError(messages.getMessage('doctorAlreadyInitializedError'), 'SfDoctorInitError');
60
+ }
61
+ Doctor.instance = new this(config, versionDetail);
62
+ return Doctor.instance;
63
+ }
64
+ /**
65
+ * Use the gathered data to discover potential problems by running all diagnostics.
66
+ *
67
+ * @returns An array of diagnostic promises.
68
+ */
69
+ diagnose() {
70
+ return new diagnostics_1.Diagnostics(this, this.config).run();
71
+ }
72
+ /**
73
+ * Add a suggestion in the form of:
74
+ * "Because of <this data point> we recommend to <suggestion>"
75
+ *
76
+ * @param suggestion A suggestion for the CLI user to try based on gathered data
77
+ */
78
+ addSuggestion(suggestion) {
79
+ this.diagnosis.suggestions.push(suggestion);
80
+ }
81
+ /**
82
+ * Add a diagnostic test status.
83
+ *
84
+ * @param status a diagnostic test status
85
+ */
86
+ addDiagnosticStatus(status) {
87
+ this.diagnosis.diagnosticResults.push(status);
88
+ }
89
+ /**
90
+ * Add diagnostic data that is specific to the passed plugin name.
91
+ *
92
+ * @param pluginName The name in the plugin's package.json
93
+ * @param data Any data to add to the doctor diagnosis that is specific
94
+ * to the plugin and a valid JSON value.
95
+ */
96
+ addPluginData(pluginName, data) {
97
+ const pluginEntry = this.diagnosis.pluginSpecificData[pluginName];
98
+ if (pluginEntry) {
99
+ pluginEntry.push(data);
100
+ }
101
+ else {
102
+ this.diagnosis.pluginSpecificData[pluginName] = [data];
103
+ }
104
+ }
105
+ /**
106
+ * Add a command name that the doctor will run to the diagnosis data for
107
+ * use by diagnostics.
108
+ *
109
+ * @param commandName The name of the command that the doctor will run. E.g., "force:org:list"
110
+ */
111
+ addCommandName(commandName) {
112
+ this.diagnosis.commandName = commandName;
113
+ }
114
+ /**
115
+ * Returns all the data gathered, paths to doctor files, and recommendations.
116
+ */
117
+ getDiagnosis() {
118
+ return { ...this.diagnosis };
119
+ }
120
+ /**
121
+ * Write a file with the provided path. The file name will be prepended
122
+ * with this doctor's id.
123
+ *
124
+ * E.g., `name = myContent.json` will write `1658350735579-myContent.json`
125
+ *
126
+ * @param filePath The path of the file to write.
127
+ * @param contents The string contents to write.
128
+ * @return The full path to the file.
129
+ */
130
+ writeFileSync(filePath, contents) {
131
+ const dir = path.dirname(filePath);
132
+ const fileName = `${this.id}-${path.basename(filePath)}`;
133
+ if (!fs.existsSync(dir)) {
134
+ fs.mkdirSync(dir, { recursive: true });
135
+ }
136
+ const fullPath = path.join(dir, fileName);
137
+ this.diagnosis.logFilePaths.push(fullPath);
138
+ fs.writeFileSync(fullPath, contents);
139
+ return fullPath;
140
+ }
141
+ }
142
+ exports.Doctor = Doctor;
143
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,yBAAyB;AACzB,6BAA6B;AAC7B,2CAAqD;AACrD,yCAA4C;AAI5C,+CAA8D;AA0B9D,eAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,QAAQ,GAAG,eAAQ,CAAC,YAAY,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;AAE5E,MAAM,kBAAkB,GAAG;IACzB,QAAQ,CAAC,UAAU,CAAC,qCAAqC,CAAC;IAC1D,QAAQ,CAAC,UAAU,CAAC,mCAAmC,CAAC;CACzD,CAAC;AAEF,MAAa,MAAM;IASjB,YAAqC,MAAc,EAAE,aAA4B;QAA5C,WAAM,GAAN,MAAM,CAAQ;QACjD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,SAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,IAAI,SAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAA,UAAI,EAAC,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAc,CAAC;QAC1F,sEAAsE;QACtE,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAc,CAAC;QAE3D,IAAI,CAAC,SAAS,GAAG;YACf,aAAa;YACb,WAAW;YACX,SAAS;YACT,SAAS;YACT,kBAAkB,EAAE,EAAE;YACtB,iBAAiB,EAAE,EAAE;YACrB,WAAW,EAAE,CAAC,GAAG,kBAAkB,CAAC;YACpC,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,IAAI,cAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,mBAAmB,CAAC,CAAC;SAC1F;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,CAAC,MAAc,EAAE,aAA4B;QAC7D,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,cAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAE,mBAAmB,CAAC,CAAC;SAC9F;QAED,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,QAAQ;QACb,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,UAAkB;QACrC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,MAAwB;QACjD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAC,UAAkB,EAAE,IAAa;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxD;IACH,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,WAAmB;QACvC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACI,aAAa,CAAC,QAAgB,EAAE,QAAgB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACxC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAzID,wBAyIC"}
package/lib/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: {};
2
- export = _default;
1
+ export { Doctor, SfDoctor, SfDoctorDiagnosis } from './doctor';
2
+ export { Diagnostics, DiagnosticStatus } from './diagnostics';
package/lib/index.js CHANGED
@@ -5,5 +5,10 @@
5
5
  * Licensed under the BSD 3-Clause license.
6
6
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
7
  */
8
- module.exports = {};
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Diagnostics = exports.Doctor = void 0;
10
+ var doctor_1 = require("./doctor");
11
+ Object.defineProperty(exports, "Doctor", { enumerable: true, get: function () { return doctor_1.Doctor; } });
12
+ var diagnostics_1 = require("./diagnostics");
13
+ Object.defineProperty(exports, "Diagnostics", { enumerable: true, get: function () { return diagnostics_1.Diagnostics; } });
9
14
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,iBAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mCAA+D;AAAtD,gGAAA,MAAM,OAAA;AACf,6CAA8D;AAArD,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,16 @@
1
+ # updateCliVersion
2
+
3
+ Update your CLI version from: %s to the latest version: %s.
4
+
5
+ # latestCliVersionError
6
+
7
+ Couldn't determine latest CLI version due to:
8
+ %s
9
+
10
+ # salesforceDxPluginDetected
11
+
12
+ The salesforcedx plugin is deprecated. Uninstall it by running: `%s plugins:uninstall salesforcedx`.
13
+
14
+ # linkedPluginWarning
15
+
16
+ Warning: the [%s] plugin is linked.
@@ -0,0 +1,32 @@
1
+ module.exports = {
2
+ commandDescription: `Gather CLI configuration data and run diagnostic tests to discover and report potential problems in your environment.
3
+
4
+ When you run the doctor command without parameters, it first displays a diagnostic overview of your environment. It then writes a detailed diagnosis to a JSON file in the current directory. Use the --outputdir to specify a different directory. To run diagnostic tests on a specific plugin, use the --plugin parameter. If the plugin isn't listening to the doctor, then you get a warning.
5
+
6
+ Use the --command parameter to run a specific command in debug mode; the doctor writes both stdout and stderr to *.log files that you can provide to Salesforce Customer Support or attach to a GitHub issue.
7
+
8
+ Plugin providers can also implement their own doctor diagnostic tests by listening to the "sf-doctor" event and running plugin specific tests that are then included in the doctor diagnostics log.
9
+ `,
10
+ flags: {
11
+ command: 'command to run in debug mode ; results are written to a log file',
12
+ newissue: 'create a new GitHub issue and attach all diagnostic results',
13
+ plugin: 'specific plugin on which to run diagnostics ',
14
+ outputdir: 'directory to save all created files rather than the current working directory',
15
+ },
16
+ examples: [
17
+ `Run CLI doctor diagnostics:
18
+ $ <%= config.bin %> doctor
19
+ Run CLI doctor diagnostics and the specified command, and write the debug output to a file:
20
+ $ <%= config.bin %> doctor --command "force:org:list --all"
21
+ Run CLI doctor diagnostics for a specific plugin:
22
+ $ <%= config.bin %> doctor --plugin @salesforce/plugin-source`,
23
+ ],
24
+ pinnedSuggestions: {
25
+ checkGitHubIssues: 'Check https://github.com/forcedotcom/cli/issues for CLI issues posted by the community.',
26
+ checkSfdcStatus: 'Check http://status.salesforce.com for general Salesforce availability and performance.',
27
+ },
28
+ doctorNotInitializedError: 'Must first initialize a new SfDoctor.',
29
+ doctorAlreadyInitializedError: 'SfDoctor has already been initialized.',
30
+ pluginNotInstalledError:
31
+ 'Specified plugin [%s] isn\'t installed. Install it, correct the name, or choose another plugin.',
32
+ };
@@ -1 +1 @@
1
- {"version":"2.0.1","commands":{"info:releasenotes:display":{"id":"info:releasenotes:display","description":"Display Salesforce CLI release notes on the command line.","usage":"<%= command.id %> [-v <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@salesforce/plugin-info","pluginType":"core","aliases":["whatsnew"],"examples":["Display release notes for the currently installed CLI version:","$ <%= config.bin %> <%= command.id %>","Display release notes for CLI version 7.120.0:","$ <%= config.bin %> <%= command.id %> --version 7.120.0","Display release notes for the CLI version that corresponds to a tag (stable, stable-rc, latest, latest-rc, rc):","$ <%= config.bin %> <%= command.id %> --version latest"," "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"version":{"name":"version","type":"option","char":"v","description":"CLI version or tag for which to display release notes."},"hook":{"name":"hook","type":"boolean","description":"This hidden parameter is used in post install or update hooks.","hidden":true,"allowNo":false}},"args":[]}}}
1
+ {"version":"2.1.1","commands":{"doctor":{"id":"doctor","description":"Gather CLI configuration data and run diagnostic tests to discover and report potential problems in your environment.\n\nWhen you run the doctor command without parameters, it first displays a diagnostic overview of your environment. It then writes a detailed diagnosis to a JSON file in the current directory. Use the --outputdir to specify a different directory. To run diagnostic tests on a specific plugin, use the --plugin parameter. If the plugin isn't listening to the doctor, then you get a warning.\n\nUse the --command parameter to run a specific command in debug mode; the doctor writes both stdout and stderr to *.log files that you can provide to Salesforce Customer Support or attach to a GitHub issue.\n\nPlugin providers can also implement their own doctor diagnostic tests by listening to the \"sf-doctor\" event and running plugin specific tests that are then included in the doctor diagnostics log.\n","usage":"<%= command.id %> [-c <string>] [-p <string>] [-o <directory>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@salesforce/plugin-info","pluginType":"core","hidden":true,"aliases":[],"examples":["Run CLI doctor diagnostics:"," $ <%= config.bin %> doctor","Run CLI doctor diagnostics and the specified command, and write the debug output to a file:"," $ <%= config.bin %> doctor --command \"force:org:list --all\"","Run CLI doctor diagnostics for a specific plugin:"," $ <%= config.bin %> doctor --plugin @salesforce/plugin-source"],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"command":{"name":"command","type":"option","char":"c","description":"command to run in debug mode ; results are written to a log file"},"plugin":{"name":"plugin","type":"option","char":"p","description":"specific plugin on which to run diagnostics "},"outputdir":{"name":"outputdir","type":"option","char":"o","description":"directory to save all created files rather than the current working directory"}},"args":[]},"info:releasenotes:display":{"id":"info:releasenotes:display","description":"Display Salesforce CLI release notes on the command line.","usage":"<%= command.id %> [-v <string>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@salesforce/plugin-info","pluginType":"core","aliases":["whatsnew"],"examples":["Display release notes for the currently installed CLI version:","$ <%= config.bin %> <%= command.id %>","Display release notes for CLI version 7.120.0:","$ <%= config.bin %> <%= command.id %> --version 7.120.0","Display release notes for the CLI version that corresponds to a tag (stable, stable-rc, latest, latest-rc, rc):","$ <%= config.bin %> <%= command.id %> --version latest"," "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"version":{"name":"version","type":"option","char":"v","description":"CLI version or tag for which to display release notes."},"hook":{"name":"hook","type":"boolean","description":"This hidden parameter is used in post install or update hooks.","hidden":true,"allowNo":false}},"args":[]}}}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@salesforce/plugin-info",
3
3
  "description": "Plugin for accessing cli info from the command line",
4
- "version": "2.0.1",
4
+ "version": "2.1.1",
5
5
  "author": "Salesforce",
6
6
  "bugs": "https://github.com/forcedotcom/cli/issues",
7
7
  "main": "lib/index.js",
8
8
  "dependencies": {
9
- "@oclif/core": "^1.6.3",
10
- "@salesforce/command": "^5.0.4",
11
- "@salesforce/core": "^3.10.1",
12
- "@salesforce/kit": "^1.5.34",
9
+ "@oclif/core": "^1.16.0",
10
+ "@salesforce/command": "^5.2.6",
11
+ "@salesforce/core": "^3.30.1",
12
+ "@salesforce/kit": "^1.6.0",
13
13
  "got": "^11.8.2",
14
14
  "marked": "^4.0.1",
15
15
  "marked-terminal": "^4.2.0",
@@ -21,9 +21,10 @@
21
21
  "devDependencies": {
22
22
  "@oclif/dev-cli": "^1",
23
23
  "@oclif/plugin-command-snapshot": "^3",
24
- "@salesforce/cli-plugins-testkit": "^1.4.17",
25
- "@salesforce/dev-config": "^3.0.0",
26
- "@salesforce/dev-scripts": "^2.0.0",
24
+ "@oclif/plugin-version": "1.1.2",
25
+ "@salesforce/cli-plugins-testkit": "^2.3.13",
26
+ "@salesforce/dev-config": "^3.1.0",
27
+ "@salesforce/dev-scripts": "^3.1.0",
27
28
  "@salesforce/plugin-command-reference": "^1.3.17",
28
29
  "@salesforce/prettier-config": "^0.0.2",
29
30
  "@salesforce/ts-sinon": "1.3.21",
@@ -32,36 +33,30 @@
32
33
  "@types/marked-terminal": "^3.1.3",
33
34
  "@types/proxy-from-env": "^1.0.1",
34
35
  "@types/semver": "^7.3.8",
35
- "@typescript-eslint/eslint-plugin": "^4.33.0",
36
- "@typescript-eslint/parser": "^4.33.0",
36
+ "@typescript-eslint/eslint-plugin": "^5.33.0",
37
+ "@typescript-eslint/parser": "^5.33.0",
37
38
  "chai": "^4.3.4",
38
- "cz-conventional-changelog": "^3.3.0",
39
- "eslint": "^7.32.0",
40
- "eslint-config-prettier": "^8.3.0",
41
- "eslint-config-salesforce": "^0.1.6",
39
+ "eslint": "^8.21.0",
40
+ "eslint-config-prettier": "^8.5.0",
41
+ "eslint-config-salesforce": "^1.1.0",
42
42
  "eslint-config-salesforce-license": "^0.1.6",
43
- "eslint-config-salesforce-typescript": "^0.2.8",
43
+ "eslint-config-salesforce-typescript": "^1.1.1",
44
44
  "eslint-plugin-header": "^3.1.1",
45
- "eslint-plugin-import": "^2.25.3",
46
- "eslint-plugin-jsdoc": "^35.5.1",
47
- "eslint-plugin-prettier": "^3.4.1",
45
+ "eslint-plugin-import": "^2.26.0",
46
+ "eslint-plugin-jsdoc": "^39.3.6",
48
47
  "husky": "^7.0.4",
49
- "lint-staged": "^11.2.6",
50
48
  "mocha": "^9.1.3",
51
49
  "nyc": "^15.1.0",
52
- "prettier": "^2.4.1",
50
+ "prettier": "^2.7.1",
53
51
  "pretty-quick": "^3.1.0",
52
+ "sfdx-cli": "^7.168.0",
54
53
  "shx": "0.3.4",
55
54
  "sinon": "^11.1.1",
56
55
  "sinon-chai": "^3.7.0",
57
56
  "ts-node": "^10.4.0",
58
57
  "typescript": "^4.5.2"
59
58
  },
60
- "config": {
61
- "commitizen": {
62
- "path": "cz-conventional-changelog"
63
- }
64
- },
59
+ "config": {},
65
60
  "engines": {
66
61
  "node": ">=14.0.0"
67
62
  },
@@ -126,7 +121,7 @@
126
121
  "access": "public"
127
122
  },
128
123
  "sfdx": {
129
- "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-info/2.0.1.crt",
130
- "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-info/2.0.1.sig"
124
+ "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-info/2.1.1.crt",
125
+ "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-info/2.1.1.sig"
131
126
  }
132
127
  }
package/CHANGELOG.md DELETED
@@ -1,89 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ### [2.0.1](https://github.com/salesforcecli/plugin-info/compare/v2.0.0...v2.0.1) (2022-05-24)
6
-
7
- ### Bug Fixes
8
-
9
- - add prompt to examples ([981c3d3](https://github.com/salesforcecli/plugin-info/commit/981c3d3ac38659d537fb641d1501d4d85c31e37e))
10
-
11
- ## [2.0.0](https://github.com/salesforcecli/plugin-info/compare/v1.3.1...v2.0.0) (2022-04-01)
12
-
13
- ### Bug Fixes
14
-
15
- - parking orbit plugin-info ([f18721f](https://github.com/salesforcecli/plugin-info/commit/f18721ff411cb4720d6d297d3250206129eb620b))
16
-
17
- ### [1.3.1](https://github.com/salesforcecli/plugin-info/compare/v1.3.0...v1.3.1) (2022-03-16)
18
-
19
- ### Bug Fixes
20
-
21
- - remove force.ts ([c663604](https://github.com/salesforcecli/plugin-info/commit/c6636048571b198f7ae23c1fb014ebc180075bb9))
22
-
23
- ## [1.3.0](https://github.com/salesforcecli/plugin-info/compare/v1.2.1...v1.3.0) (2022-02-28)
24
-
25
- ### Features
26
-
27
- - json output ([edd0b99](https://github.com/salesforcecli/plugin-info/commit/edd0b991edc0383dc6d6fb20a9e4daa15eb82a55))
28
- - migrate force command from toolbelt ([68ecc16](https://github.com/salesforcecli/plugin-info/commit/68ecc1643a672e72fd34ea9e224e30a917aa840b))
29
- - support api from config ([25ac49d](https://github.com/salesforcecli/plugin-info/commit/25ac49d8d4f0ff10dcdf740f4e6cdd4eb1c3d8db))
30
-
31
- ### [1.2.1](https://github.com/salesforcecli/plugin-info/compare/v1.2.0...v1.2.1) (2022-02-10)
32
-
33
- ### Bug Fixes
34
-
35
- - proxy support for got ([#75](https://github.com/salesforcecli/plugin-info/issues/75)) ([2d9abef](https://github.com/salesforcecli/plugin-info/commit/2d9abefe045d9fcfde9c79df416e5b809b5461d6))
36
-
37
- ## [1.2.0](https://github.com/salesforcecli/plugin-info/compare/v1.1.4...v1.2.0) (2022-01-05)
38
-
39
- ### Features
40
-
41
- - find close version fallback ([f1b2edc](https://github.com/salesforcecli/plugin-info/commit/f1b2edcb26057b1eef10656a8c7fb255f1e4dd08))
42
-
43
- ### Bug Fixes
44
-
45
- - type and typos ([75d46c6](https://github.com/salesforcecli/plugin-info/commit/75d46c66b1b22c74b1d8dfeb56da727c1e51ea51))
46
-
47
- ### [1.1.4](https://github.com/salesforcecli/plugin-info/compare/v1.1.3...v1.1.4) (2021-12-07)
48
-
49
- ### Bug Fixes
50
-
51
- - update help message to make the CLI Command Ref work ([268a7b5](https://github.com/salesforcecli/plugin-info/commit/268a7b551fd05d3358691e98cb04ad70df2cef95))
52
-
53
- ### [1.1.3](https://github.com/salesforcecli/plugin-info/compare/v1.1.2...v1.1.3) (2021-12-07)
54
-
55
- ### Bug Fixes
56
-
57
- - disable emoji ([b4edbae](https://github.com/salesforcecli/plugin-info/commit/b4edbae03f308198c8fa6a90323a3c69c1e9efc5))
58
- - emoji test ([10229c4](https://github.com/salesforcecli/plugin-info/commit/10229c40da67b6ea65577ddd53f685d0ce79c0ea))
59
-
60
- ### [1.1.2](https://github.com/salesforcecli/plugin-info/compare/v1.1.1...v1.1.2) (2021-12-01)
61
-
62
- ### Bug Fixes
63
-
64
- - always show notes when running directly ([a0cd11e](https://github.com/salesforcecli/plugin-info/commit/a0cd11ec3777eb91adcfcac180d85b442b34b52a))
65
- - merge conflict ([e4f7103](https://github.com/salesforcecli/plugin-info/commit/e4f7103b04f23cc9f66fa02f18286166be819812))
66
- - whitespace conflict ([605d782](https://github.com/salesforcecli/plugin-info/commit/605d782be93a060e0eda69441806fe0cb76193d5))
67
-
68
- ### [1.1.1](https://github.com/salesforcecli/plugin-info/compare/v1.1.0...v1.1.1) (2021-11-30)
69
-
70
- ### Bug Fixes
71
-
72
- - add more telemetry ([b8af2d7](https://github.com/salesforcecli/plugin-info/commit/b8af2d7e516cd1f5347d379d1c29d6389299fab8))
73
-
74
- ## [1.1.0](https://github.com/salesforcecli/plugin-info/compare/v1.0.0...v1.1.0) (2021-11-22)
75
-
76
- ### Features
77
-
78
- - initial setup and release notes fetch ([d258d91](https://github.com/salesforcecli/plugin-info/commit/d258d91cf3f781c0afbc4f8b3c776cd4fd0085ef))
79
- - parse and render release notes ([f5e3398](https://github.com/salesforcecli/plugin-info/commit/f5e3398f14e74aa1f83fa308c9601f1b770afcae))
80
- - parse release notes ([83f0a47](https://github.com/salesforcecli/plugin-info/commit/83f0a47d5e54e0e0cacace1f3bc12ad757aa6e38))
81
-
82
- ### Bug Fixes
83
-
84
- - no more partial version match. updates footer ([010c4f3](https://github.com/salesforcecli/plugin-info/commit/010c4f38e963e416f57032db9578a28b26ed2b08))
85
- - pin typescript ([c02bd4e](https://github.com/salesforcecli/plugin-info/commit/c02bd4e0beb4b686e5a3e6ced866e97d4d61ed88))
86
- - switch from axios to got, added tests ([ef74275](https://github.com/salesforcecli/plugin-info/commit/ef74275517f2305e705e9f21d62f9f916a17471a))
87
- - test for Windows ([16db159](https://github.com/salesforcecli/plugin-info/commit/16db159ca3fb64a51f0076881bea5df37e4edce9))
88
-
89
- ## 1.0.0 (2021-10-12)