@teambit/doctor 0.0.34 → 0.0.36
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/dist/doctor-cmd.d.ts +3 -0
- package/dist/doctor-cmd.js +4 -12
- package/dist/doctor-cmd.js.map +1 -1
- package/dist/doctor-results-template.d.ts +1 -1
- package/dist/doctor-results-template.js.map +1 -1
- package/dist/doctor.main.runtime.d.ts +46 -1
- package/dist/doctor.main.runtime.js +378 -5
- package/dist/doctor.main.runtime.js.map +1 -1
- package/doctor-cmd.ts +5 -3
- package/doctor-results-template.ts +1 -1
- package/doctor.main.runtime.ts +283 -4
- package/package.json +5 -4
- package/dist/doctor.d.ts +0 -31
- package/dist/doctor.js +0 -357
- package/dist/doctor.js.map +0 -1
- package/doctor.ts +0 -260
- /package/dist/{preview-1721963947073.js → preview-1722136797833.js} +0 -0
package/dist/doctor-cmd.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command, CommandOptions } from '@teambit/cli';
|
|
2
|
+
import { DoctorMain } from './doctor.main.runtime';
|
|
2
3
|
type Flags = {
|
|
3
4
|
list?: boolean;
|
|
4
5
|
save?: string;
|
|
@@ -8,12 +9,14 @@ type Flags = {
|
|
|
8
9
|
excludeLocalScope?: boolean;
|
|
9
10
|
};
|
|
10
11
|
export declare class DoctorCmd implements Command {
|
|
12
|
+
private doctor;
|
|
11
13
|
name: string;
|
|
12
14
|
description: string;
|
|
13
15
|
group: string;
|
|
14
16
|
alias: string;
|
|
15
17
|
loadAspects: boolean;
|
|
16
18
|
options: CommandOptions;
|
|
19
|
+
constructor(doctor: DoctorMain);
|
|
17
20
|
report([diagnosisName]: string[], flags: Flags): Promise<string>;
|
|
18
21
|
json([diagnosisName]: string[], flags: Flags): Promise<any>;
|
|
19
22
|
private runDiag;
|
package/dist/doctor-cmd.js
CHANGED
|
@@ -4,13 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DoctorCmd = void 0;
|
|
7
|
-
function _doctor() {
|
|
8
|
-
const data = _interopRequireWildcard(require("./doctor"));
|
|
9
|
-
_doctor = function () {
|
|
10
|
-
return data;
|
|
11
|
-
};
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
7
|
function _diagnosisListTemplate() {
|
|
15
8
|
const data = _interopRequireDefault(require("./diagnosis-list-template"));
|
|
16
9
|
_diagnosisListTemplate = function () {
|
|
@@ -26,13 +19,12 @@ function _doctorResultsTemplate() {
|
|
|
26
19
|
return data;
|
|
27
20
|
}
|
|
28
21
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
30
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
31
22
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
32
23
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
33
24
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
34
25
|
class DoctorCmd {
|
|
35
|
-
constructor() {
|
|
26
|
+
constructor(doctor) {
|
|
27
|
+
this.doctor = doctor;
|
|
36
28
|
_defineProperty(this, "name", 'doctor [diagnosis-name]');
|
|
37
29
|
_defineProperty(this, "description", 'diagnose a bit workspace');
|
|
38
30
|
_defineProperty(this, "group", 'general');
|
|
@@ -95,7 +87,7 @@ class DoctorCmd {
|
|
|
95
87
|
excludeLocalScope = false
|
|
96
88
|
} = flags;
|
|
97
89
|
if (list) {
|
|
98
|
-
return
|
|
90
|
+
return this.doctor.listDiagnoses();
|
|
99
91
|
}
|
|
100
92
|
if ((includeNodeModules || excludeLocalScope) && !archive) {
|
|
101
93
|
throw new Error('to use --include-node-modules or --exclude-local-scope please specify --archive');
|
|
@@ -117,7 +109,7 @@ class DoctorCmd {
|
|
|
117
109
|
includePublic,
|
|
118
110
|
excludeLocalScope
|
|
119
111
|
};
|
|
120
|
-
return diagnosisName ?
|
|
112
|
+
return diagnosisName ? this.doctor.runOne(doctorOptions) : this.doctor.runAll(doctorOptions);
|
|
121
113
|
}
|
|
122
114
|
}
|
|
123
115
|
exports.DoctorCmd = DoctorCmd;
|
package/dist/doctor-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_diagnosisListTemplate","data","_interopRequireDefault","require","_doctorResultsTemplate","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DoctorCmd","constructor","doctor","report","diagnosisName","flags","res","runDiag","list","formatDiagnosesList","examineResult","savedFilePath","metaData","formatDiagnosesResult","examineResults","json","fullJson","save","archive","includeNodeModules","includePublic","excludeLocalScope","listDiagnoses","Error","filePath","doctorOptions","archiveWorkspace","Boolean","runOne","runAll","exports"],"sources":["doctor-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport formatDiagnosesList from './diagnosis-list-template';\nimport formatDiagnosesResult from './doctor-results-template';\nimport { DoctorMain, DoctorOptions } from './doctor.main.runtime';\n\ntype Flags = {\n list?: boolean;\n save?: string;\n archive?: string;\n includeNodeModules?: boolean;\n includePublic?: boolean;\n excludeLocalScope?: boolean;\n};\n\nexport class DoctorCmd implements Command {\n name = 'doctor [diagnosis-name]';\n description = 'diagnose a bit workspace';\n group = 'general';\n alias = '';\n loadAspects = false;\n options = [\n ['j', 'json', 'return diagnoses in json format'],\n ['', 'list', 'list all available diagnoses'],\n ['s', 'save [filePath]', 'save diagnoses to a file'],\n [\n 'a',\n 'archive [filePath]',\n 'archive the workspace including diagnosis info (by default exclude node-modules and include .bit)',\n ],\n ['n', 'include-node-modules', 'relevant for --archive. include node_modules in the archive file'],\n ['p', 'include-public', 'relevant for --archive. include public folder in the archive file'],\n ['e', 'exclude-local-scope', 'relevant for --archive. exclude .bit or .git/bit from the archive file'],\n ] as CommandOptions;\n\n constructor(private doctor: DoctorMain) {}\n\n async report([diagnosisName]: string[], flags: Flags) {\n const res = await this.runDiag(diagnosisName, flags);\n if (flags.list) {\n return formatDiagnosesList(res);\n }\n if (diagnosisName) {\n const { examineResult, savedFilePath, metaData } = res;\n return formatDiagnosesResult({ examineResults: [examineResult], savedFilePath, metaData });\n }\n const { examineResults, savedFilePath, metaData } = res;\n return formatDiagnosesResult({ examineResults, savedFilePath, metaData });\n }\n\n async json([diagnosisName]: string[], flags: Flags) {\n const res = await this.runDiag(diagnosisName, flags);\n if (flags.list) {\n return res;\n }\n const { examineResults, examineResult, savedFilePath } = res;\n const fullJson = {\n savedFilePath,\n examineResult,\n examineResults,\n };\n return fullJson;\n }\n\n private async runDiag(diagnosisName?: string, flags: Flags = {}): Promise<any> {\n const {\n list = false,\n save,\n archive,\n includeNodeModules = false,\n includePublic = false,\n excludeLocalScope = false,\n } = flags;\n\n if (list) {\n return this.doctor.listDiagnoses();\n }\n if ((includeNodeModules || excludeLocalScope) && !archive) {\n throw new Error('to use --include-node-modules or --exclude-local-scope please specify --archive');\n }\n let filePath = save;\n // Happen when used --save without specify the location\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (save === true || archive === true) {\n filePath = '.';\n }\n if (typeof archive === 'string') {\n filePath = archive;\n }\n const doctorOptions: DoctorOptions = {\n diagnosisName,\n filePath,\n archiveWorkspace: Boolean(archive),\n includeNodeModules,\n includePublic,\n excludeLocalScope,\n };\n return diagnosisName ? this.doctor.runOne(doctorOptions) : this.doctor.runAll(doctorOptions);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DoctorRunAllResults } from './doctor';
|
|
1
|
+
import { DoctorRunAllResults } from './doctor.main.runtime';
|
|
2
2
|
export default function render({ examineResults, savedFilePath, metaData }: DoctorRunAllResults): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_table","e","__esModule","default","summeryTableColumnConfig","columnDefault","alignment","_formatStatusCell","status","chalk","green","red","_createSummeryRow","examineResult","meta","diagnosisMetaData","bareResult","valid","category","name","description","_createSummeryTable","header","bold","rows","map","unshift","output","table","_createSummerySection","title","underline","summeryTable","_createFullReportForDiagnosis","symptomsTitle","symptomsText","formattedSymptoms","cureTitle","cureText","formattedManualTreat","_createFullReportForDiagnoses","fullDiagnosesReport","join","_createFullReportSection","trim","_createWrittenFileSection","savedFilePath","_createMetaSection","metaData","bitVersion","nodeVersion","npmVersion","yarnVersion","platform","userDetails","render","examineResults","meatSection","summerySection","fullReportSection","writtenFileSection"],"sources":["doctor-results-template.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { table } from 'table';\nimport { DoctorMetaData, DoctorRunAllResults } from './doctor';\nimport { ExamineResult } from './diagnosis';\n\n// const NAME_COLUMN_WIDTH = 100;\n// const DESCRIPTION_COLUMN_WIDTH = 30;\n\nconst summeryTableColumnConfig = {\n columnDefault: {\n alignment: 'left',\n },\n};\n\ntype SummeryRow = [string, string, string, string];\n\nfunction _formatStatusCell(status: boolean): string {\n if (status) {\n return chalk.green('passed');\n }\n return chalk.red('failed');\n}\n\nfunction _createSummeryRow(examineResult: ExamineResult): SummeryRow {\n const meta = examineResult.diagnosisMetaData;\n const status = _formatStatusCell(examineResult.bareResult.valid);\n return [meta.category, meta.name, meta.description, status];\n}\n\nfunction _createSummeryTable(examineResult: ExamineResult[]): string {\n const header = [chalk.bold('category'), chalk.bold('name'), chalk.bold('description'), chalk.bold('status')];\n const rows = examineResult.map(_createSummeryRow);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n rows.unshift(header);\n const output = table(rows, summeryTableColumnConfig);\n return output;\n}\n\nfunction _createSummerySection(examineResult: ExamineResult[]): string {\n // A placeholder if we will decide we want a title\n const title = chalk.underline('');\n const summeryTable = _createSummeryTable(examineResult);\n return `${title}\\n${summeryTable}`;\n}\n\nfunction _createFullReportForDiagnosis(examineResult: ExamineResult): string {\n if (examineResult.bareResult.valid) {\n return '';\n }\n const title = chalk.underline(examineResult.diagnosisMetaData.name);\n const symptomsTitle = chalk.underline('symptoms');\n const symptomsText = examineResult.formattedSymptoms;\n const cureTitle = chalk.underline('cure');\n const cureText = examineResult.formattedManualTreat;\n return `${title}\n ${symptomsTitle}\n ${symptomsText}\n ${cureTitle}\n ${cureText}\\n`;\n}\n\nfunction _createFullReportForDiagnoses(examineResult: ExamineResult[]): string {\n const fullDiagnosesReport = examineResult.map(_createFullReportForDiagnosis).join('\\n');\n return fullDiagnosesReport;\n}\n\nfunction _createFullReportSection(examineResult: ExamineResult[]): string {\n const title = chalk.underline('Error report');\n const fullDiagnosesReport = _createFullReportForDiagnoses(examineResult);\n if (fullDiagnosesReport.trim() === '') {\n return '';\n }\n return `${title}\n${fullDiagnosesReport}`;\n}\n\nfunction _createWrittenFileSection(savedFilePath) {\n if (!savedFilePath) {\n return '';\n }\n return `File written to ${savedFilePath}`;\n}\n\nfunction _createMetaSection(metaData: DoctorMetaData) {\n return `\n bit version : ${metaData.bitVersion}\n node version : ${metaData.nodeVersion}\n npm version : ${metaData.npmVersion || 'NA'}\n yarn version : ${metaData.yarnVersion || 'NA'}\n platform : ${metaData.platform}\n user details : ${metaData.userDetails}\n`;\n}\n\nexport default function render({ examineResults, savedFilePath, metaData }: DoctorRunAllResults): string {\n const meatSection = _createMetaSection(metaData);\n const summerySection = _createSummerySection(examineResults);\n const fullReportSection = _createFullReportSection(examineResults);\n const writtenFileSection = _createWrittenFileSection(savedFilePath);\n const output = `${meatSection}\n${summerySection}\n${fullReportSection}\n${writtenFileSection}`;\n return output;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_table","e","__esModule","default","summeryTableColumnConfig","columnDefault","alignment","_formatStatusCell","status","chalk","green","red","_createSummeryRow","examineResult","meta","diagnosisMetaData","bareResult","valid","category","name","description","_createSummeryTable","header","bold","rows","map","unshift","output","table","_createSummerySection","title","underline","summeryTable","_createFullReportForDiagnosis","symptomsTitle","symptomsText","formattedSymptoms","cureTitle","cureText","formattedManualTreat","_createFullReportForDiagnoses","fullDiagnosesReport","join","_createFullReportSection","trim","_createWrittenFileSection","savedFilePath","_createMetaSection","metaData","bitVersion","nodeVersion","npmVersion","yarnVersion","platform","userDetails","render","examineResults","meatSection","summerySection","fullReportSection","writtenFileSection"],"sources":["doctor-results-template.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { table } from 'table';\nimport { DoctorMetaData, DoctorRunAllResults } from './doctor.main.runtime';\nimport { ExamineResult } from './diagnosis';\n\n// const NAME_COLUMN_WIDTH = 100;\n// const DESCRIPTION_COLUMN_WIDTH = 30;\n\nconst summeryTableColumnConfig = {\n columnDefault: {\n alignment: 'left',\n },\n};\n\ntype SummeryRow = [string, string, string, string];\n\nfunction _formatStatusCell(status: boolean): string {\n if (status) {\n return chalk.green('passed');\n }\n return chalk.red('failed');\n}\n\nfunction _createSummeryRow(examineResult: ExamineResult): SummeryRow {\n const meta = examineResult.diagnosisMetaData;\n const status = _formatStatusCell(examineResult.bareResult.valid);\n return [meta.category, meta.name, meta.description, status];\n}\n\nfunction _createSummeryTable(examineResult: ExamineResult[]): string {\n const header = [chalk.bold('category'), chalk.bold('name'), chalk.bold('description'), chalk.bold('status')];\n const rows = examineResult.map(_createSummeryRow);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n rows.unshift(header);\n const output = table(rows, summeryTableColumnConfig);\n return output;\n}\n\nfunction _createSummerySection(examineResult: ExamineResult[]): string {\n // A placeholder if we will decide we want a title\n const title = chalk.underline('');\n const summeryTable = _createSummeryTable(examineResult);\n return `${title}\\n${summeryTable}`;\n}\n\nfunction _createFullReportForDiagnosis(examineResult: ExamineResult): string {\n if (examineResult.bareResult.valid) {\n return '';\n }\n const title = chalk.underline(examineResult.diagnosisMetaData.name);\n const symptomsTitle = chalk.underline('symptoms');\n const symptomsText = examineResult.formattedSymptoms;\n const cureTitle = chalk.underline('cure');\n const cureText = examineResult.formattedManualTreat;\n return `${title}\n ${symptomsTitle}\n ${symptomsText}\n ${cureTitle}\n ${cureText}\\n`;\n}\n\nfunction _createFullReportForDiagnoses(examineResult: ExamineResult[]): string {\n const fullDiagnosesReport = examineResult.map(_createFullReportForDiagnosis).join('\\n');\n return fullDiagnosesReport;\n}\n\nfunction _createFullReportSection(examineResult: ExamineResult[]): string {\n const title = chalk.underline('Error report');\n const fullDiagnosesReport = _createFullReportForDiagnoses(examineResult);\n if (fullDiagnosesReport.trim() === '') {\n return '';\n }\n return `${title}\n${fullDiagnosesReport}`;\n}\n\nfunction _createWrittenFileSection(savedFilePath) {\n if (!savedFilePath) {\n return '';\n }\n return `File written to ${savedFilePath}`;\n}\n\nfunction _createMetaSection(metaData: DoctorMetaData) {\n return `\n bit version : ${metaData.bitVersion}\n node version : ${metaData.nodeVersion}\n npm version : ${metaData.npmVersion || 'NA'}\n yarn version : ${metaData.yarnVersion || 'NA'}\n platform : ${metaData.platform}\n user details : ${metaData.userDetails}\n`;\n}\n\nexport default function render({ examineResults, savedFilePath, metaData }: DoctorRunAllResults): string {\n const meatSection = _createMetaSection(metaData);\n const summerySection = _createSummerySection(examineResults);\n const fullReportSection = _createFullReportSection(examineResults);\n const writtenFileSection = _createWrittenFileSection(savedFilePath);\n const output = `${meatSection}\n${summerySection}\n${fullReportSection}\n${writtenFileSection}`;\n return output;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,53 @@
|
|
|
1
1
|
import { CLIMain } from '@teambit/cli';
|
|
2
|
+
import Diagnosis, { ExamineResult } from './diagnosis';
|
|
3
|
+
import { Logger, LoggerMain } from '@teambit/logger';
|
|
4
|
+
export type DoctorMetaData = {
|
|
5
|
+
nodeVersion: string;
|
|
6
|
+
runningTimestamp: number;
|
|
7
|
+
platform: string;
|
|
8
|
+
bitVersion: string;
|
|
9
|
+
npmVersion: string;
|
|
10
|
+
yarnVersion: string;
|
|
11
|
+
userDetails: string;
|
|
12
|
+
};
|
|
13
|
+
export type DoctorRunAllResults = {
|
|
14
|
+
examineResults: ExamineResult[];
|
|
15
|
+
savedFilePath: string | null | undefined;
|
|
16
|
+
metaData: DoctorMetaData;
|
|
17
|
+
};
|
|
18
|
+
export type DoctorRunOneResult = {
|
|
19
|
+
examineResult: ExamineResult;
|
|
20
|
+
savedFilePath: string | null | undefined;
|
|
21
|
+
metaData: DoctorMetaData;
|
|
22
|
+
};
|
|
23
|
+
export type DoctorOptions = {
|
|
24
|
+
diagnosisName?: string;
|
|
25
|
+
filePath?: string;
|
|
26
|
+
archiveWorkspace?: boolean;
|
|
27
|
+
includeNodeModules?: boolean;
|
|
28
|
+
includePublic?: boolean;
|
|
29
|
+
excludeLocalScope?: boolean;
|
|
30
|
+
};
|
|
2
31
|
export declare class DoctorMain {
|
|
32
|
+
private logger;
|
|
33
|
+
constructor(logger: Logger);
|
|
34
|
+
runAll(options: DoctorOptions): Promise<DoctorRunAllResults>;
|
|
35
|
+
runOne({ diagnosisName, ...options }: DoctorOptions): Promise<DoctorRunOneResult>;
|
|
36
|
+
listDiagnoses(): Promise<Diagnosis[]>;
|
|
37
|
+
private _saveExamineResultsToFile;
|
|
38
|
+
private getWithoutExt;
|
|
39
|
+
private _calculateFinalFileName;
|
|
40
|
+
private _getDefaultFileName;
|
|
41
|
+
private _getTimeStamp;
|
|
42
|
+
private _generateExamineResultsTarFile;
|
|
43
|
+
private _getEnvMeta;
|
|
44
|
+
private _getUserDetails;
|
|
45
|
+
private _getDebugLogAsBuffer;
|
|
46
|
+
private _getConsumerInfo;
|
|
47
|
+
private _getBitMap;
|
|
3
48
|
static slots: never[];
|
|
4
49
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
5
50
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
6
|
-
static provider([cliMain]: [CLIMain]): Promise<DoctorMain>;
|
|
51
|
+
static provider([cliMain, loggerMain]: [CLIMain, LoggerMain]): Promise<DoctorMain>;
|
|
7
52
|
}
|
|
8
53
|
export default DoctorMain;
|
|
@@ -11,6 +11,153 @@ function _cli() {
|
|
|
11
11
|
};
|
|
12
12
|
return data;
|
|
13
13
|
}
|
|
14
|
+
function _path() {
|
|
15
|
+
const data = _interopRequireDefault(require("path"));
|
|
16
|
+
_path = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _fsExtra() {
|
|
22
|
+
const data = _interopRequireDefault(require("fs-extra"));
|
|
23
|
+
_fsExtra = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
function _os() {
|
|
29
|
+
const data = _interopRequireDefault(require("os"));
|
|
30
|
+
_os = function () {
|
|
31
|
+
return data;
|
|
32
|
+
};
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
function _tarStream() {
|
|
36
|
+
const data = _interopRequireDefault(require("tar-stream"));
|
|
37
|
+
_tarStream = function () {
|
|
38
|
+
return data;
|
|
39
|
+
};
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
function _tarFs() {
|
|
43
|
+
const data = _interopRequireDefault(require("tar-fs"));
|
|
44
|
+
_tarFs = function () {
|
|
45
|
+
return data;
|
|
46
|
+
};
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
function _bit() {
|
|
50
|
+
const data = require("@teambit/bit.get-bit-version");
|
|
51
|
+
_bit = function () {
|
|
52
|
+
return data;
|
|
53
|
+
};
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
function _constants() {
|
|
57
|
+
const data = require("@teambit/legacy/dist/constants");
|
|
58
|
+
_constants = function () {
|
|
59
|
+
return data;
|
|
60
|
+
};
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
function _legacy() {
|
|
64
|
+
const data = require("@teambit/legacy.bit-map");
|
|
65
|
+
_legacy = function () {
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
function _workspaceConfig() {
|
|
71
|
+
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/config/workspace-config"));
|
|
72
|
+
_workspaceConfig = function () {
|
|
73
|
+
return data;
|
|
74
|
+
};
|
|
75
|
+
return data;
|
|
76
|
+
}
|
|
77
|
+
function _consumerLocator() {
|
|
78
|
+
const data = require("@teambit/legacy/dist/consumer/consumer-locator");
|
|
79
|
+
_consumerLocator = function () {
|
|
80
|
+
return data;
|
|
81
|
+
};
|
|
82
|
+
return data;
|
|
83
|
+
}
|
|
84
|
+
function _doctorRegistrar() {
|
|
85
|
+
const data = _interopRequireDefault(require("./doctor-registrar"));
|
|
86
|
+
_doctorRegistrar = function () {
|
|
87
|
+
return data;
|
|
88
|
+
};
|
|
89
|
+
return data;
|
|
90
|
+
}
|
|
91
|
+
function _doctorRegistrarBuilder() {
|
|
92
|
+
const data = _interopRequireDefault(require("./doctor-registrar-builder"));
|
|
93
|
+
_doctorRegistrarBuilder = function () {
|
|
94
|
+
return data;
|
|
95
|
+
};
|
|
96
|
+
return data;
|
|
97
|
+
}
|
|
98
|
+
function _lodash() {
|
|
99
|
+
const data = require("lodash");
|
|
100
|
+
_lodash = function () {
|
|
101
|
+
return data;
|
|
102
|
+
};
|
|
103
|
+
return data;
|
|
104
|
+
}
|
|
105
|
+
function _legacy2() {
|
|
106
|
+
const data = require("@teambit/legacy.utils");
|
|
107
|
+
_legacy2 = function () {
|
|
108
|
+
return data;
|
|
109
|
+
};
|
|
110
|
+
return data;
|
|
111
|
+
}
|
|
112
|
+
function _toolboxFs() {
|
|
113
|
+
const data = require("@teambit/toolbox.fs.extension-getter");
|
|
114
|
+
_toolboxFs = function () {
|
|
115
|
+
return data;
|
|
116
|
+
};
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
119
|
+
function _scopeModules() {
|
|
120
|
+
const data = require("@teambit/scope.modules.find-scope-path");
|
|
121
|
+
_scopeModules = function () {
|
|
122
|
+
return data;
|
|
123
|
+
};
|
|
124
|
+
return data;
|
|
125
|
+
}
|
|
126
|
+
function globalConfig() {
|
|
127
|
+
const data = _interopRequireWildcard(require("@teambit/legacy/dist/api/consumer/lib/global-config"));
|
|
128
|
+
globalConfig = function () {
|
|
129
|
+
return data;
|
|
130
|
+
};
|
|
131
|
+
return data;
|
|
132
|
+
}
|
|
133
|
+
function _validateNpmExec() {
|
|
134
|
+
const data = require("./core-diagnoses/validate-npm-exec");
|
|
135
|
+
_validateNpmExec = function () {
|
|
136
|
+
return data;
|
|
137
|
+
};
|
|
138
|
+
return data;
|
|
139
|
+
}
|
|
140
|
+
function _validateYarnExec() {
|
|
141
|
+
const data = require("./core-diagnoses/validate-yarn-exec");
|
|
142
|
+
_validateYarnExec = function () {
|
|
143
|
+
return data;
|
|
144
|
+
};
|
|
145
|
+
return data;
|
|
146
|
+
}
|
|
147
|
+
function _diagnosisNotFound() {
|
|
148
|
+
const data = require("./exceptions/diagnosis-not-found");
|
|
149
|
+
_diagnosisNotFound = function () {
|
|
150
|
+
return data;
|
|
151
|
+
};
|
|
152
|
+
return data;
|
|
153
|
+
}
|
|
154
|
+
function _missingDiagnosisName() {
|
|
155
|
+
const data = require("./exceptions/missing-diagnosis-name");
|
|
156
|
+
_missingDiagnosisName = function () {
|
|
157
|
+
return data;
|
|
158
|
+
};
|
|
159
|
+
return data;
|
|
160
|
+
}
|
|
14
161
|
function _doctor() {
|
|
15
162
|
const data = require("./doctor.aspect");
|
|
16
163
|
_doctor = function () {
|
|
@@ -25,18 +172,244 @@ function _doctorCmd() {
|
|
|
25
172
|
};
|
|
26
173
|
return data;
|
|
27
174
|
}
|
|
175
|
+
function _logger() {
|
|
176
|
+
const data = require("@teambit/logger");
|
|
177
|
+
_logger = function () {
|
|
178
|
+
return data;
|
|
179
|
+
};
|
|
180
|
+
return data;
|
|
181
|
+
}
|
|
182
|
+
function _chalk() {
|
|
183
|
+
const data = _interopRequireDefault(require("chalk"));
|
|
184
|
+
_chalk = function () {
|
|
185
|
+
return data;
|
|
186
|
+
};
|
|
187
|
+
return data;
|
|
188
|
+
}
|
|
189
|
+
const _excluded = ["diagnosisName"];
|
|
190
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
191
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
192
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
193
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
194
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
|
|
28
195
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
29
196
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
30
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
197
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
198
|
+
// run specific check
|
|
199
|
+
|
|
200
|
+
let runningTimeStamp;
|
|
31
201
|
class DoctorMain {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
202
|
+
constructor(logger) {
|
|
203
|
+
this.logger = logger;
|
|
204
|
+
}
|
|
205
|
+
async runAll(options) {
|
|
206
|
+
(0, _doctorRegistrarBuilder().default)();
|
|
207
|
+
runningTimeStamp = this._getTimeStamp();
|
|
208
|
+
const doctorRegistrar = _doctorRegistrar().default.getInstance();
|
|
209
|
+
const examineResultsWithNulls = await Promise.all(doctorRegistrar.diagnoses.map(async diagnosis => {
|
|
210
|
+
try {
|
|
211
|
+
return await diagnosis.examine();
|
|
212
|
+
} catch (err) {
|
|
213
|
+
this.logger.error(`doctor failed running diagnosis "${diagnosis.name}"`, err);
|
|
214
|
+
this.logger.consoleFailure(_chalk().default.red(`doctor failed running diagnosis "${diagnosis.name}".\nerror-message: ${err.message}`));
|
|
215
|
+
}
|
|
216
|
+
}));
|
|
217
|
+
const examineResults = (0, _lodash().compact)(examineResultsWithNulls);
|
|
218
|
+
const envMeta = await this._getEnvMeta();
|
|
219
|
+
const savedFilePath = await this._saveExamineResultsToFile(examineResults, envMeta, options);
|
|
220
|
+
return {
|
|
221
|
+
examineResults,
|
|
222
|
+
savedFilePath,
|
|
223
|
+
metaData: envMeta
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
async runOne(_ref) {
|
|
227
|
+
let {
|
|
228
|
+
diagnosisName
|
|
229
|
+
} = _ref,
|
|
230
|
+
options = _objectWithoutProperties(_ref, _excluded);
|
|
231
|
+
if (!diagnosisName) {
|
|
232
|
+
throw new (_missingDiagnosisName().MissingDiagnosisName)();
|
|
233
|
+
}
|
|
234
|
+
(0, _doctorRegistrarBuilder().default)();
|
|
235
|
+
runningTimeStamp = this._getTimeStamp();
|
|
236
|
+
const doctorRegistrar = _doctorRegistrar().default.getInstance();
|
|
237
|
+
const diagnosis = doctorRegistrar.getDiagnosisByName(diagnosisName);
|
|
238
|
+
if (!diagnosis) {
|
|
239
|
+
throw new (_diagnosisNotFound().DiagnosisNotFound)(diagnosisName);
|
|
240
|
+
}
|
|
241
|
+
const examineResult = await diagnosis.examine();
|
|
242
|
+
const envMeta = await this._getEnvMeta();
|
|
243
|
+
const savedFilePath = await this._saveExamineResultsToFile([examineResult], envMeta, options);
|
|
244
|
+
return {
|
|
245
|
+
examineResult,
|
|
246
|
+
savedFilePath,
|
|
247
|
+
metaData: envMeta
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
async listDiagnoses() {
|
|
251
|
+
(0, _doctorRegistrarBuilder().default)();
|
|
252
|
+
const doctorRegistrar = _doctorRegistrar().default.getInstance();
|
|
253
|
+
return Promise.resolve(doctorRegistrar.diagnoses);
|
|
254
|
+
}
|
|
255
|
+
async _saveExamineResultsToFile(examineResults, envMeta, options) {
|
|
256
|
+
if (!options.filePath) {
|
|
257
|
+
return Promise.resolve(undefined);
|
|
258
|
+
}
|
|
259
|
+
const finalFilePath = this._calculateFinalFileName(options.filePath);
|
|
260
|
+
const packStream = await this._generateExamineResultsTarFile(examineResults, envMeta, finalFilePath, options);
|
|
261
|
+
const yourTarball = _fsExtra().default.createWriteStream(finalFilePath);
|
|
262
|
+
packStream.pipe(yourTarball);
|
|
263
|
+
return new Promise(resolve => {
|
|
264
|
+
yourTarball.on('close', () => {
|
|
265
|
+
this.logger.info(`wrote a file by bit doctor, file path: ${finalFilePath}`);
|
|
266
|
+
resolve(finalFilePath);
|
|
267
|
+
// fs.stat(finalFilePath, private (err, stats) {
|
|
268
|
+
// if (err) throw err
|
|
269
|
+
// console.log(stats)
|
|
270
|
+
// console.log('Got file info successfully!')
|
|
271
|
+
// })
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
getWithoutExt(filename) {
|
|
276
|
+
const ext = (0, _toolboxFs().getExt)(filename);
|
|
277
|
+
// There is no extension just return the file name
|
|
278
|
+
if (ext === filename) {
|
|
279
|
+
return filename;
|
|
280
|
+
}
|
|
281
|
+
return filename.substring(0, filename.length - ext.length - 1); // -1 to remove the '.'
|
|
282
|
+
}
|
|
283
|
+
_calculateFinalFileName(fileName) {
|
|
284
|
+
if (fileName === '.') {
|
|
285
|
+
return this._getDefaultFileName();
|
|
286
|
+
}
|
|
287
|
+
let finalFileName = fileName;
|
|
288
|
+
if ((0, _toolboxFs().getExt)(fileName) !== 'tar' && (0, _toolboxFs().getExt)(fileName) !== 'tar.gz') {
|
|
289
|
+
finalFileName = `${this.getWithoutExt(finalFileName)}.tar`;
|
|
290
|
+
}
|
|
291
|
+
return finalFileName;
|
|
292
|
+
}
|
|
293
|
+
_getDefaultFileName() {
|
|
294
|
+
const timestamp = runningTimeStamp || this._getTimeStamp();
|
|
295
|
+
return `doctor-results-${timestamp}.tar`;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// TODO: move to utils
|
|
299
|
+
_getTimeStamp() {
|
|
300
|
+
const d = new Date();
|
|
301
|
+
const timestamp = d.getTime();
|
|
302
|
+
return timestamp;
|
|
303
|
+
}
|
|
304
|
+
async _generateExamineResultsTarFile(examineResults, envMeta, tarFilePath, options) {
|
|
305
|
+
const {
|
|
306
|
+
archiveWorkspace,
|
|
307
|
+
includeNodeModules,
|
|
308
|
+
includePublic,
|
|
309
|
+
excludeLocalScope
|
|
310
|
+
} = options;
|
|
311
|
+
const debugLog = await this._getDebugLogAsBuffer();
|
|
312
|
+
const consumerInfo = await this._getConsumerInfo();
|
|
313
|
+
let bitmap;
|
|
314
|
+
if (consumerInfo && consumerInfo.path) {
|
|
315
|
+
bitmap = this._getBitMap(consumerInfo.path);
|
|
316
|
+
}
|
|
317
|
+
const packExamineResults = async pack => {
|
|
318
|
+
pack.entry({
|
|
319
|
+
name: 'env-meta.json'
|
|
320
|
+
}, JSON.stringify(envMeta, null, 2));
|
|
321
|
+
pack.entry({
|
|
322
|
+
name: 'doc-results.json'
|
|
323
|
+
}, JSON.stringify(examineResults, null, 2));
|
|
324
|
+
if (debugLog) {
|
|
325
|
+
pack.entry({
|
|
326
|
+
name: 'debug.log'
|
|
327
|
+
}, debugLog);
|
|
328
|
+
}
|
|
329
|
+
if (!archiveWorkspace && bitmap) {
|
|
330
|
+
pack.entry({
|
|
331
|
+
name: '.bitmap'
|
|
332
|
+
}, bitmap);
|
|
333
|
+
}
|
|
334
|
+
if (consumerInfo && consumerInfo.hasConsumerConfig) {
|
|
335
|
+
// TODO: support new config as well
|
|
336
|
+
const scopePath = (0, _scopeModules().findScopePath)(consumerInfo.path);
|
|
337
|
+
const config = scopePath ? await _workspaceConfig().default.loadIfExist(consumerInfo.path, scopePath) : undefined;
|
|
338
|
+
const legacyPlainConfig = config === null || config === void 0 ? void 0 : config._legacyPlainObject();
|
|
339
|
+
if (legacyPlainConfig) {
|
|
340
|
+
pack.entry({
|
|
341
|
+
name: 'config.json'
|
|
342
|
+
}, JSON.stringify(legacyPlainConfig, null, 4));
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
pack.finalize();
|
|
346
|
+
return pack;
|
|
347
|
+
};
|
|
348
|
+
if (!archiveWorkspace) {
|
|
349
|
+
const pack = _tarStream().default.pack(); // pack is a streams2 stream
|
|
350
|
+
return packExamineResults(pack);
|
|
351
|
+
}
|
|
352
|
+
const ignore = fileName => {
|
|
353
|
+
if (fileName === tarFilePath) return true;
|
|
354
|
+
if (fileName === '.DS_Store') return true;
|
|
355
|
+
if (!includeNodeModules && (fileName.startsWith(`node_modules${_path().default.sep}`) || fileName.includes(`${_path().default.sep}node_modules${_path().default.sep}`))) return true;
|
|
356
|
+
if (!includePublic && (fileName.startsWith(`public${_path().default.sep}`) || fileName.includes(`${_path().default.sep}public${_path().default.sep}`))) return true;
|
|
357
|
+
const isGit = fileName.startsWith(`.git${_path().default.sep}`);
|
|
358
|
+
const isLocalScope = fileName.startsWith(`.bit${_path().default.sep}`) || fileName.startsWith(`.git${_path().default.sep}bit${_path().default.sep}`);
|
|
359
|
+
if (excludeLocalScope && isLocalScope) return true;
|
|
360
|
+
if (isGit && !isLocalScope) return true;
|
|
361
|
+
return false;
|
|
362
|
+
};
|
|
363
|
+
const myPack = _tarFs().default.pack('.', {
|
|
364
|
+
ignore,
|
|
365
|
+
finalize: false,
|
|
366
|
+
finish: packExamineResults
|
|
367
|
+
});
|
|
368
|
+
return myPack;
|
|
369
|
+
}
|
|
370
|
+
async _getEnvMeta() {
|
|
371
|
+
const env = {
|
|
372
|
+
nodeVersion: process.version,
|
|
373
|
+
runningTimestamp: runningTimeStamp || this._getTimeStamp(),
|
|
374
|
+
platform: _os().default.platform(),
|
|
375
|
+
bitVersion: (0, _bit().getBitVersion)(),
|
|
376
|
+
npmVersion: await (0, _validateNpmExec().getNpmVersion)(),
|
|
377
|
+
yarnVersion: await (0, _validateYarnExec().getYarnVersion)(),
|
|
378
|
+
userDetails: this._getUserDetails()
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
382
|
+
return env;
|
|
383
|
+
}
|
|
384
|
+
_getUserDetails() {
|
|
385
|
+
const name = globalConfig().getSync(_constants().CFG_USER_NAME_KEY) || '';
|
|
386
|
+
const email = globalConfig().getSync(_constants().CFG_USER_EMAIL_KEY) || '';
|
|
387
|
+
return `${name}<${email}>`;
|
|
388
|
+
}
|
|
389
|
+
async _getDebugLogAsBuffer() {
|
|
390
|
+
const exists = await _fsExtra().default.pathExists(_constants().DEBUG_LOG);
|
|
391
|
+
if (!exists) return null;
|
|
392
|
+
const log = await _fsExtra().default.readFile(_constants().DEBUG_LOG, 'utf-8');
|
|
393
|
+
const logWithoutChalk = (0, _legacy2().removeChalkCharacters)(log);
|
|
394
|
+
return Buffer.from(logWithoutChalk);
|
|
395
|
+
}
|
|
396
|
+
async _getConsumerInfo() {
|
|
397
|
+
const consumerInfo = await (0, _consumerLocator().getConsumerInfo)(process.cwd());
|
|
398
|
+
return consumerInfo;
|
|
399
|
+
}
|
|
400
|
+
_getBitMap(workspaceDir) {
|
|
401
|
+
return _legacy().BitMap.loadRawSync(workspaceDir);
|
|
402
|
+
}
|
|
403
|
+
static async provider([cliMain, loggerMain]) {
|
|
404
|
+
const logger = loggerMain.createLogger(_doctor().DoctorAspect.id);
|
|
405
|
+
const doctor = new DoctorMain(logger);
|
|
406
|
+
cliMain.register(new (_doctorCmd().DoctorCmd)(doctor));
|
|
407
|
+
return doctor;
|
|
35
408
|
}
|
|
36
409
|
}
|
|
37
410
|
exports.DoctorMain = DoctorMain;
|
|
38
411
|
_defineProperty(DoctorMain, "slots", []);
|
|
39
|
-
_defineProperty(DoctorMain, "dependencies", [_cli().CLIAspect]);
|
|
412
|
+
_defineProperty(DoctorMain, "dependencies", [_cli().CLIAspect, _logger().LoggerAspect]);
|
|
40
413
|
_defineProperty(DoctorMain, "runtime", _cli().MainRuntime);
|
|
41
414
|
_doctor().DoctorAspect.addRuntime(DoctorMain);
|
|
42
415
|
var _default = exports.default = DoctorMain;
|