@teambit/validator 0.0.144 → 0.0.145

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.
@@ -129,7 +129,17 @@ class ValidatorMain {
129
129
  }, files);
130
130
  const tsserver = this.typescript.getTsserverClient();
131
131
  if (!tsserver) throw new Error('unable to start tsserver');
132
- await tsserver.getDiagnostic(files);
132
+ try {
133
+ const BATCH_SIZE = 50;
134
+ await tsserver.getDiagnostic(files, files.length > BATCH_SIZE ? BATCH_SIZE : undefined);
135
+ } catch (err) {
136
+ tsserver.killTsServer();
137
+ const errMsg = err instanceof Error ? err.message : String(err);
138
+ return {
139
+ code: 1,
140
+ message: `type checking failed: ${errMsg}`
141
+ };
142
+ }
133
143
  const errorCount = tsserver.lastDiagnostics.length;
134
144
  tsserver.killTsServer();
135
145
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_logger","_workspace","_typescript","_linter","_tester","_chalk","_interopRequireDefault","_validator","_validate","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ValidatorMain","constructor","workspace","typescript","linter","tester","logger","validate","components","continueOnError","skipTasks","steps","includes","push","label","run","checkTypes","lint","test","length","code","message","skippedAll","total","results","step","console","chalk","cyan","result","firstError","find","files","getSupportedFilesForTsserver","initTsserverClientFromWorkspace","aggregateDiagnosticData","printTypeErrors","tsserver","getTsserverClient","Error","getDiagnostic","errorCount","lastDiagnostics","killTsServer","linterResults","totalErrors","totalWarnings","dirtyComponents","forEach","res","componentErrors","totalErrorCount","totalFatalErrorCount","totalWarningCount","compResult","hasErrors","output","compTitle","bold","component","id","toString","ignoreVersion","join","tests","watch","debug","provider","cli","loggerAspect","createLogger","ValidatorAspect","validator","register","ValidateCmd","exports","MainRuntime","CLIAspect","WorkspaceAspect","LoggerAspect","TypescriptAspect","LinterAspect","TesterAspect","addRuntime"],"sources":["validator.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { TypescriptMain } from '@teambit/typescript';\nimport { TypescriptAspect } from '@teambit/typescript';\nimport type { LinterMain } from '@teambit/linter';\nimport { LinterAspect } from '@teambit/linter';\nimport type { TesterMain } from '@teambit/tester';\nimport { TesterAspect } from '@teambit/tester';\nimport type { Component } from '@teambit/component';\nimport chalk from 'chalk';\nimport { ValidatorAspect } from './validator.aspect';\nimport { ValidateCmd } from './validate.cmd';\n\nexport type ValidationResult = {\n code: number;\n message: string;\n skippedAll?: boolean;\n};\n\nexport class ValidatorMain {\n static runtime = MainRuntime;\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect, TypescriptAspect, LinterAspect, TesterAspect];\n\n constructor(\n private workspace: Workspace,\n private typescript: TypescriptMain,\n private linter: LinterMain,\n private tester: TesterMain,\n private logger: Logger\n ) {}\n\n async validate(\n components: Component[],\n continueOnError = false,\n skipTasks: string[] = []\n ): Promise<ValidationResult> {\n const steps: { label: string; run: () => Promise<ValidationResult> }[] = [];\n\n if (!skipTasks.includes('check-types')) {\n steps.push({ label: 'Type Checking', run: () => this.checkTypes(components) });\n }\n if (!skipTasks.includes('lint')) {\n steps.push({ label: 'Linting', run: () => this.lint(components) });\n }\n if (!skipTasks.includes('test')) {\n steps.push({ label: 'Testing', run: () => this.test(components) });\n }\n\n if (steps.length === 0) {\n return { code: 0, message: 'all tasks were skipped', skippedAll: true };\n }\n\n const total = steps.length;\n const results: ValidationResult[] = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n this.logger.console(chalk.cyan(`${i > 0 ? '\\n' : ''}${i + 1}/${total} ${step.label}...`));\n const result = await step.run();\n this.logger.console(result.message);\n results.push(result);\n if (result.code !== 0 && !continueOnError) return result;\n }\n\n // When continueOnError is true, return the first error found, or success if all passed\n const firstError = results.find((r) => r.code !== 0);\n return firstError || results[results.length - 1];\n }\n\n private async checkTypes(components: Component[]): Promise<ValidationResult> {\n const files = this.typescript.getSupportedFilesForTsserver(components);\n\n await this.typescript.initTsserverClientFromWorkspace(\n { aggregateDiagnosticData: false, printTypeErrors: true },\n files\n );\n\n const tsserver = this.typescript.getTsserverClient();\n if (!tsserver) throw new Error('unable to start tsserver');\n\n await tsserver.getDiagnostic(files);\n const errorCount = tsserver.lastDiagnostics.length;\n tsserver.killTsServer();\n\n return {\n code: errorCount > 0 ? 1 : 0,\n message: errorCount > 0 ? `found errors in ${errorCount} files` : 'no type errors found',\n };\n }\n\n private async lint(components: Component[]): Promise<ValidationResult> {\n const linterResults = await this.linter.lint(components, {});\n\n let totalErrors = 0;\n let totalWarnings = 0;\n const dirtyComponents: string[] = [];\n\n linterResults.results.forEach((res) => {\n if (res.data) {\n const componentErrors = (res.data.totalErrorCount || 0) + (res.data.totalFatalErrorCount || 0);\n totalErrors += componentErrors;\n totalWarnings += res.data.totalWarningCount || 0;\n\n // Show detailed output for components with errors\n res.data.results.forEach((compResult) => {\n const hasErrors = compResult.totalErrorCount > 0 || (compResult.totalFatalErrorCount || 0) > 0;\n if (hasErrors && compResult.output) {\n const compTitle = chalk.bold.cyan(compResult.component.id.toString({ ignoreVersion: true }));\n dirtyComponents.push(`${compTitle}\\n${compResult.output}`);\n }\n });\n }\n });\n\n let message = '';\n if (dirtyComponents.length > 0) {\n message = dirtyComponents.join('\\n\\n') + '\\n\\n';\n }\n message +=\n totalErrors > 0\n ? `found ${totalErrors} error(s) and ${totalWarnings} warning(s)`\n : totalWarnings > 0\n ? `found ${totalWarnings} warning(s), no errors`\n : 'no linting issues found';\n\n return {\n code: totalErrors > 0 ? 1 : 0,\n message,\n };\n }\n\n private async test(components: Component[]): Promise<ValidationResult> {\n if (components.length === 0) {\n return { code: 0, message: 'no components found to test' };\n }\n\n const tests = await this.tester.test(components, { watch: false, debug: false });\n const hasErrors = tests.hasErrors();\n\n return {\n code: hasErrors ? 1 : 0,\n message: hasErrors ? 'tests failed' : `all tests passed for ${components.length} component(s)`,\n };\n }\n\n static async provider([cli, workspace, loggerAspect, typescript, linter, tester]: [\n CLIMain,\n Workspace,\n LoggerMain,\n TypescriptMain,\n LinterMain,\n TesterMain,\n ]) {\n const logger = loggerAspect.createLogger(ValidatorAspect.id);\n const validator = new ValidatorMain(workspace, typescript, linter, tester, logger);\n cli.register(new ValidateCmd(validator, workspace, logger));\n return validator;\n }\n}\n\nValidatorAspect.addRuntime(ValidatorMain);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_logger","_workspace","_typescript","_linter","_tester","_chalk","_interopRequireDefault","_validator","_validate","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ValidatorMain","constructor","workspace","typescript","linter","tester","logger","validate","components","continueOnError","skipTasks","steps","includes","push","label","run","checkTypes","lint","test","length","code","message","skippedAll","total","results","step","console","chalk","cyan","result","firstError","find","files","getSupportedFilesForTsserver","initTsserverClientFromWorkspace","aggregateDiagnosticData","printTypeErrors","tsserver","getTsserverClient","Error","BATCH_SIZE","getDiagnostic","undefined","err","killTsServer","errMsg","errorCount","lastDiagnostics","linterResults","totalErrors","totalWarnings","dirtyComponents","forEach","res","componentErrors","totalErrorCount","totalFatalErrorCount","totalWarningCount","compResult","hasErrors","output","compTitle","bold","component","id","toString","ignoreVersion","join","tests","watch","debug","provider","cli","loggerAspect","createLogger","ValidatorAspect","validator","register","ValidateCmd","exports","MainRuntime","CLIAspect","WorkspaceAspect","LoggerAspect","TypescriptAspect","LinterAspect","TesterAspect","addRuntime"],"sources":["validator.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { TypescriptMain } from '@teambit/typescript';\nimport { TypescriptAspect } from '@teambit/typescript';\nimport type { LinterMain } from '@teambit/linter';\nimport { LinterAspect } from '@teambit/linter';\nimport type { TesterMain } from '@teambit/tester';\nimport { TesterAspect } from '@teambit/tester';\nimport type { Component } from '@teambit/component';\nimport chalk from 'chalk';\nimport { ValidatorAspect } from './validator.aspect';\nimport { ValidateCmd } from './validate.cmd';\n\nexport type ValidationResult = {\n code: number;\n message: string;\n skippedAll?: boolean;\n};\n\nexport class ValidatorMain {\n static runtime = MainRuntime;\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect, TypescriptAspect, LinterAspect, TesterAspect];\n\n constructor(\n private workspace: Workspace,\n private typescript: TypescriptMain,\n private linter: LinterMain,\n private tester: TesterMain,\n private logger: Logger\n ) {}\n\n async validate(\n components: Component[],\n continueOnError = false,\n skipTasks: string[] = []\n ): Promise<ValidationResult> {\n const steps: { label: string; run: () => Promise<ValidationResult> }[] = [];\n\n if (!skipTasks.includes('check-types')) {\n steps.push({ label: 'Type Checking', run: () => this.checkTypes(components) });\n }\n if (!skipTasks.includes('lint')) {\n steps.push({ label: 'Linting', run: () => this.lint(components) });\n }\n if (!skipTasks.includes('test')) {\n steps.push({ label: 'Testing', run: () => this.test(components) });\n }\n\n if (steps.length === 0) {\n return { code: 0, message: 'all tasks were skipped', skippedAll: true };\n }\n\n const total = steps.length;\n const results: ValidationResult[] = [];\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n this.logger.console(chalk.cyan(`${i > 0 ? '\\n' : ''}${i + 1}/${total} ${step.label}...`));\n const result = await step.run();\n this.logger.console(result.message);\n results.push(result);\n if (result.code !== 0 && !continueOnError) return result;\n }\n\n // When continueOnError is true, return the first error found, or success if all passed\n const firstError = results.find((r) => r.code !== 0);\n return firstError || results[results.length - 1];\n }\n\n private async checkTypes(components: Component[]): Promise<ValidationResult> {\n const files = this.typescript.getSupportedFilesForTsserver(components);\n\n await this.typescript.initTsserverClientFromWorkspace(\n { aggregateDiagnosticData: false, printTypeErrors: true },\n files\n );\n\n const tsserver = this.typescript.getTsserverClient();\n if (!tsserver) throw new Error('unable to start tsserver');\n\n try {\n const BATCH_SIZE = 50;\n await tsserver.getDiagnostic(files, files.length > BATCH_SIZE ? BATCH_SIZE : undefined);\n } catch (err: any) {\n tsserver.killTsServer();\n const errMsg = err instanceof Error ? err.message : String(err);\n return {\n code: 1,\n message: `type checking failed: ${errMsg}`,\n };\n }\n const errorCount = tsserver.lastDiagnostics.length;\n tsserver.killTsServer();\n\n return {\n code: errorCount > 0 ? 1 : 0,\n message: errorCount > 0 ? `found errors in ${errorCount} files` : 'no type errors found',\n };\n }\n\n private async lint(components: Component[]): Promise<ValidationResult> {\n const linterResults = await this.linter.lint(components, {});\n\n let totalErrors = 0;\n let totalWarnings = 0;\n const dirtyComponents: string[] = [];\n\n linterResults.results.forEach((res) => {\n if (res.data) {\n const componentErrors = (res.data.totalErrorCount || 0) + (res.data.totalFatalErrorCount || 0);\n totalErrors += componentErrors;\n totalWarnings += res.data.totalWarningCount || 0;\n\n // Show detailed output for components with errors\n res.data.results.forEach((compResult) => {\n const hasErrors = compResult.totalErrorCount > 0 || (compResult.totalFatalErrorCount || 0) > 0;\n if (hasErrors && compResult.output) {\n const compTitle = chalk.bold.cyan(compResult.component.id.toString({ ignoreVersion: true }));\n dirtyComponents.push(`${compTitle}\\n${compResult.output}`);\n }\n });\n }\n });\n\n let message = '';\n if (dirtyComponents.length > 0) {\n message = dirtyComponents.join('\\n\\n') + '\\n\\n';\n }\n message +=\n totalErrors > 0\n ? `found ${totalErrors} error(s) and ${totalWarnings} warning(s)`\n : totalWarnings > 0\n ? `found ${totalWarnings} warning(s), no errors`\n : 'no linting issues found';\n\n return {\n code: totalErrors > 0 ? 1 : 0,\n message,\n };\n }\n\n private async test(components: Component[]): Promise<ValidationResult> {\n if (components.length === 0) {\n return { code: 0, message: 'no components found to test' };\n }\n\n const tests = await this.tester.test(components, { watch: false, debug: false });\n const hasErrors = tests.hasErrors();\n\n return {\n code: hasErrors ? 1 : 0,\n message: hasErrors ? 'tests failed' : `all tests passed for ${components.length} component(s)`,\n };\n }\n\n static async provider([cli, workspace, loggerAspect, typescript, linter, tester]: [\n CLIMain,\n Workspace,\n LoggerMain,\n TypescriptMain,\n LinterMain,\n TesterMain,\n ]) {\n const logger = loggerAspect.createLogger(ValidatorAspect.id);\n const validator = new ValidatorMain(workspace, typescript, linter, tester, logger);\n cli.register(new ValidateCmd(validator, workspace, logger));\n return validator;\n }\n}\n\nValidatorAspect.addRuntime(ValidatorMain);\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/validator",
3
- "version": "0.0.144",
3
+ "version": "0.0.145",
4
4
  "homepage": "https://bit.cloud/teambit/defender/validator",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.defender",
8
8
  "name": "validator",
9
- "version": "0.0.144"
9
+ "version": "0.0.145"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -14,11 +14,11 @@
14
14
  "@teambit/legacy.constants": "0.0.24",
15
15
  "@teambit/logger": "0.0.1396",
16
16
  "@teambit/harmony": "0.4.7",
17
- "@teambit/workspace": "1.0.909",
18
- "@teambit/component": "1.0.909",
19
- "@teambit/linter": "1.0.909",
20
- "@teambit/tester": "1.0.909",
21
- "@teambit/typescript": "1.0.909"
17
+ "@teambit/workspace": "1.0.910",
18
+ "@teambit/component": "1.0.910",
19
+ "@teambit/linter": "1.0.910",
20
+ "@teambit/tester": "1.0.910",
21
+ "@teambit/typescript": "1.0.910"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@teambit/harmony.envs.core-aspect-env": "0.1.4"