@teambit/formatter 1.0.142 → 1.0.143

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.
@@ -33,15 +33,19 @@ export declare class FormatCmd implements Command {
33
33
  private workspace;
34
34
  name: string;
35
35
  description: string;
36
+ arguments: {
37
+ name: string;
38
+ description: string;
39
+ }[];
36
40
  group: string;
37
41
  helpUrl: string;
38
42
  options: CommandOptions;
39
43
  constructor(formatter: FormatterMain, componentHost: ComponentFactory, workspace: Workspace);
40
- report([components]: [string[]], formatterOptions: FormatCmdOptions): Promise<{
44
+ report([pattern]: [string], formatterOptions: FormatCmdOptions): Promise<{
41
45
  data: string;
42
46
  code: number;
43
47
  }>;
44
- json([components]: [string[]], formatterCmdOptions: FormatCmdOptions): Promise<JsonFormatResults>;
48
+ json([pattern]: [string], formatterCmdOptions: FormatCmdOptions): Promise<JsonFormatResults>;
45
49
  private getStatusCode;
46
50
  private getIdsToFormat;
47
51
  private getAllComponentsResultOutput;
@@ -11,6 +11,13 @@ function _timer() {
11
11
  };
12
12
  return data;
13
13
  }
14
+ function _constants() {
15
+ const data = require("@teambit/legacy/dist/constants");
16
+ _constants = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
14
21
  function _chalk() {
15
22
  const data = _interopRequireDefault(require("chalk"));
16
23
  _chalk = function () {
@@ -42,19 +49,23 @@ class FormatCmd {
42
49
  this.formatter = formatter;
43
50
  this.componentHost = componentHost;
44
51
  this.workspace = workspace;
45
- _defineProperty(this, "name", 'format [component...]');
52
+ _defineProperty(this, "name", 'format [component-pattern]');
46
53
  _defineProperty(this, "description", 'format components in the development workspace');
54
+ _defineProperty(this, "arguments", [{
55
+ name: 'component-pattern',
56
+ description: _constants().COMPONENT_PATTERN_HELP
57
+ }]);
47
58
  _defineProperty(this, "group", 'development');
48
59
  _defineProperty(this, "helpUrl", 'reference/formatting/formatter-overview');
49
60
  _defineProperty(this, "options", [['c', 'changed', 'format only new and modified components'], ['', 'check', 'will output a human-friendly message and a list of unformatted files, if any'], ['j', 'json', 'return the format results in json format']]);
50
61
  }
51
- async report([components = []], formatterOptions) {
62
+ async report([pattern], formatterOptions) {
52
63
  const {
53
64
  duration,
54
65
  data,
55
66
  code,
56
67
  componentsIdsToFormat
57
- } = await this.json([components], formatterOptions);
68
+ } = await this.json([pattern], formatterOptions);
58
69
  const title = _chalk().default.bold(`formatting total of ${_chalk().default.cyan(componentsIdsToFormat.length.toString())} component(s) in workspace '${_chalk().default.cyan(this.componentHost.name)}`);
59
70
  const componentsOutputs = this.getAllComponentsResultOutput(data.results, {
60
71
  check: formatterOptions.check
@@ -68,10 +79,10 @@ class FormatCmd {
68
79
  code
69
80
  };
70
81
  }
71
- async json([components = []], formatterCmdOptions) {
82
+ async json([pattern], formatterCmdOptions) {
72
83
  const timer = _timer().Timer.create();
73
84
  timer.start();
74
- const componentsIds = await this.getIdsToFormat(components, formatterCmdOptions.changed);
85
+ const componentsIds = await this.getIdsToFormat(pattern, formatterCmdOptions.changed);
75
86
  const componentsToFormat = await this.workspace.getMany(componentsIds);
76
87
  const opts = {};
77
88
  const formatterResults = formatterCmdOptions.check ? await this.formatter.check(componentsToFormat, opts) : await this.formatter.format(componentsToFormat, opts);
@@ -91,9 +102,9 @@ class FormatCmd {
91
102
  if (hasIssues) return 1;
92
103
  return 0;
93
104
  }
94
- async getIdsToFormat(components, changed = false) {
95
- if (components.length) {
96
- return this.workspace.resolveMultipleComponentIds(components);
105
+ async getIdsToFormat(pattern, changed = false) {
106
+ if (pattern) {
107
+ return this.workspace.idsByPattern(pattern);
97
108
  }
98
109
  if (changed) {
99
110
  return this.workspace.getNewAndModifiedIds();
@@ -1 +1 @@
1
- {"version":3,"names":["_timer","data","require","_chalk","_interopRequireDefault","_lodash","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","FormatCmd","constructor","formatter","componentHost","workspace","report","components","formatterOptions","duration","code","componentsIdsToFormat","json","title","chalk","bold","cyan","length","toString","name","componentsOutputs","getAllComponentsResultOutput","results","check","seconds","summery","formatterCmdOptions","timer","Timer","create","start","componentsIds","getIdsToFormat","changed","componentsToFormat","getMany","opts","formatterResults","format","jsonFormatterResults","toJsonFormatResults","timerResponse","stop","statusCode","getStatusCode","map","comp","id","hasIssues","some","file","resolveMultipleComponentIds","getNewAndModifiedIds","listIds","componentsResult","context","allResults","getOneComponentResultOutput","join","componentResult","componentId","ignoreVersion","filesWithIssues","filter","fileResult","green","subTitle","red","files","getOneComponentFileResultOutput","filePath","exports","newResults","res","resultsWithoutComponent","result","component","compact","flatten","errors"],"sources":["format.cmd.ts"],"sourcesContent":["import { TimerResponse, Timer } from '@teambit/legacy/dist/toolbox/timer';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentFactory, ComponentID } from '@teambit/component';\nimport chalk from 'chalk';\nimport { EnvsExecutionResult } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { compact, flatten } from 'lodash';\nimport { FormatterMain } from './formatter.main.runtime';\nimport { ComponentFormatResult, FormatResults, FileFormatResult } from './formatter';\nimport { FormatterOptions } from './formatter-context';\n\nexport type FormatCmdOptions = {\n changed?: boolean;\n json?: boolean;\n check?: boolean;\n};\n\ntype OutputContext = {\n check?: boolean;\n};\n\n/**\n * A type for result with componentId instead of the entire component, as when output to console, we don't want to print all the component\n */\nexport type JsonComponentFormatResult = Omit<ComponentFormatResult, 'component'> & {\n componentId: ComponentID;\n};\n\nexport type JsonFormatDataResults = Omit<FormatResults, 'results'> & { results: JsonComponentFormatResult[] };\n/**\n * A type for result with componentId instead of the entire component, as when output to console, we don't want to print all the component\n */\nexport type JsonFormatResults = {\n duration: TimerResponse;\n data: JsonFormatDataResults;\n code: number;\n componentsIdsToFormat: string[];\n};\n\nexport class FormatCmd implements Command {\n name = 'format [component...]';\n description = 'format components in the development workspace';\n group = 'development';\n helpUrl = 'reference/formatting/formatter-overview';\n options = [\n ['c', 'changed', 'format only new and modified components'],\n ['', 'check', 'will output a human-friendly message and a list of unformatted files, if any'],\n ['j', 'json', 'return the format results in json format'],\n ] as CommandOptions;\n\n constructor(\n private formatter: FormatterMain,\n private componentHost: ComponentFactory,\n private workspace: Workspace\n ) {}\n\n async report([components = []]: [string[]], formatterOptions: FormatCmdOptions) {\n const { duration, data, code, componentsIdsToFormat } = await this.json([components], formatterOptions);\n\n const title = chalk.bold(\n `formatting total of ${chalk.cyan(\n componentsIdsToFormat.length.toString()\n )} component(s) in workspace '${chalk.cyan(this.componentHost.name)}`\n );\n\n const componentsOutputs = this.getAllComponentsResultOutput(data.results, { check: formatterOptions.check });\n\n const { seconds } = duration;\n const summery = `formatted ${chalk.cyan(componentsIdsToFormat.length.toString())} components in ${chalk.cyan(\n seconds.toString()\n )}.`;\n\n return {\n data: `${title}\\n\\n${componentsOutputs}\\n\\n${summery}`,\n code,\n };\n }\n\n async json([components = []]: [string[]], formatterCmdOptions: FormatCmdOptions): Promise<JsonFormatResults> {\n const timer = Timer.create();\n timer.start();\n const componentsIds = await this.getIdsToFormat(components, formatterCmdOptions.changed);\n const componentsToFormat = await this.workspace.getMany(componentsIds);\n const opts: FormatterOptions = {};\n const formatterResults = formatterCmdOptions.check\n ? await this.formatter.check(componentsToFormat, opts)\n : await this.formatter.format(componentsToFormat, opts);\n const jsonFormatterResults = toJsonFormatResults(formatterResults);\n const timerResponse = timer.stop();\n const statusCode = this.getStatusCode(jsonFormatterResults, formatterCmdOptions.check);\n\n return {\n duration: timerResponse,\n data: jsonFormatterResults,\n code: statusCode,\n componentsIdsToFormat: componentsToFormat.map((comp) => comp.id.toString()),\n };\n }\n\n private getStatusCode(results: JsonFormatDataResults, check = false): number {\n if (!check) return 0;\n const hasIssues = results.results.some((comp) => comp.results.some((file) => file.hasIssues));\n if (hasIssues) return 1;\n return 0;\n }\n\n private async getIdsToFormat(components: string[], changed = false): Promise<ComponentID[]> {\n if (components.length) {\n return this.workspace.resolveMultipleComponentIds(components);\n }\n if (changed) {\n return this.workspace.getNewAndModifiedIds();\n }\n return this.componentHost.listIds();\n }\n\n private getAllComponentsResultOutput(componentsResult: JsonComponentFormatResult[], context: OutputContext) {\n const allResults = componentsResult.map((comp) => this.getOneComponentResultOutput(comp, context));\n return allResults.join('\\n\\n');\n }\n\n private getOneComponentResultOutput(componentResult: JsonComponentFormatResult, context: OutputContext) {\n const title = chalk.bold.cyan(componentResult.componentId.toString({ ignoreVersion: true }));\n const filesWithIssues = componentResult.results.filter((fileResult) => fileResult.hasIssues);\n if (!filesWithIssues || !filesWithIssues.length) {\n return `${title}\\n${chalk.green('no issues found')}`;\n }\n let subTitle = chalk.green('the following files have been re-formatted:');\n if (context.check) {\n subTitle = chalk.red('issues found in the following files:');\n }\n const files = filesWithIssues.map(this.getOneComponentFileResultOutput);\n return `${title}\\n${subTitle}\\n${files.join('\\n')}`;\n }\n\n private getOneComponentFileResultOutput(fileResult: FileFormatResult) {\n return fileResult.filePath;\n }\n}\n\nfunction toJsonFormatResults(results: EnvsExecutionResult<FormatResults>): JsonFormatDataResults {\n const newResults = results.results.map((res) => {\n const resultsWithoutComponent = res.data?.results.map((result) => {\n return {\n componentId: result.component.id,\n results: result.results,\n };\n });\n return compact(resultsWithoutComponent);\n });\n return {\n results: compact(flatten(newResults)),\n errors: results?.errors,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_timer","data","require","_constants","_chalk","_interopRequireDefault","_lodash","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","FormatCmd","constructor","formatter","componentHost","workspace","name","description","COMPONENT_PATTERN_HELP","report","pattern","formatterOptions","duration","code","componentsIdsToFormat","json","title","chalk","bold","cyan","length","toString","componentsOutputs","getAllComponentsResultOutput","results","check","seconds","summery","formatterCmdOptions","timer","Timer","create","start","componentsIds","getIdsToFormat","changed","componentsToFormat","getMany","opts","formatterResults","format","jsonFormatterResults","toJsonFormatResults","timerResponse","stop","statusCode","getStatusCode","map","comp","id","hasIssues","some","file","idsByPattern","getNewAndModifiedIds","listIds","componentsResult","context","allResults","getOneComponentResultOutput","join","componentResult","componentId","ignoreVersion","filesWithIssues","filter","fileResult","green","subTitle","red","files","getOneComponentFileResultOutput","filePath","exports","newResults","res","resultsWithoutComponent","result","component","compact","flatten","errors"],"sources":["format.cmd.ts"],"sourcesContent":["import { TimerResponse, Timer } from '@teambit/legacy/dist/toolbox/timer';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentFactory, ComponentID } from '@teambit/component';\nimport chalk from 'chalk';\nimport { EnvsExecutionResult } from '@teambit/envs';\nimport { Workspace } from '@teambit/workspace';\nimport { compact, flatten } from 'lodash';\nimport { FormatterMain } from './formatter.main.runtime';\nimport { ComponentFormatResult, FormatResults, FileFormatResult } from './formatter';\nimport { FormatterOptions } from './formatter-context';\n\nexport type FormatCmdOptions = {\n changed?: boolean;\n json?: boolean;\n check?: boolean;\n};\n\ntype OutputContext = {\n check?: boolean;\n};\n\n/**\n * A type for result with componentId instead of the entire component, as when output to console, we don't want to print all the component\n */\nexport type JsonComponentFormatResult = Omit<ComponentFormatResult, 'component'> & {\n componentId: ComponentID;\n};\n\nexport type JsonFormatDataResults = Omit<FormatResults, 'results'> & { results: JsonComponentFormatResult[] };\n/**\n * A type for result with componentId instead of the entire component, as when output to console, we don't want to print all the component\n */\nexport type JsonFormatResults = {\n duration: TimerResponse;\n data: JsonFormatDataResults;\n code: number;\n componentsIdsToFormat: string[];\n};\n\nexport class FormatCmd implements Command {\n name = 'format [component-pattern]';\n description = 'format components in the development workspace';\n arguments = [{ name: 'component-pattern', description: COMPONENT_PATTERN_HELP }];\n group = 'development';\n helpUrl = 'reference/formatting/formatter-overview';\n options = [\n ['c', 'changed', 'format only new and modified components'],\n ['', 'check', 'will output a human-friendly message and a list of unformatted files, if any'],\n ['j', 'json', 'return the format results in json format'],\n ] as CommandOptions;\n\n constructor(\n private formatter: FormatterMain,\n private componentHost: ComponentFactory,\n private workspace: Workspace\n ) {}\n\n async report([pattern]: [string], formatterOptions: FormatCmdOptions) {\n const { duration, data, code, componentsIdsToFormat } = await this.json([pattern], formatterOptions);\n\n const title = chalk.bold(\n `formatting total of ${chalk.cyan(\n componentsIdsToFormat.length.toString()\n )} component(s) in workspace '${chalk.cyan(this.componentHost.name)}`\n );\n\n const componentsOutputs = this.getAllComponentsResultOutput(data.results, { check: formatterOptions.check });\n\n const { seconds } = duration;\n const summery = `formatted ${chalk.cyan(componentsIdsToFormat.length.toString())} components in ${chalk.cyan(\n seconds.toString()\n )}.`;\n\n return {\n data: `${title}\\n\\n${componentsOutputs}\\n\\n${summery}`,\n code,\n };\n }\n\n async json([pattern]: [string], formatterCmdOptions: FormatCmdOptions): Promise<JsonFormatResults> {\n const timer = Timer.create();\n timer.start();\n const componentsIds = await this.getIdsToFormat(pattern, formatterCmdOptions.changed);\n const componentsToFormat = await this.workspace.getMany(componentsIds);\n const opts: FormatterOptions = {};\n const formatterResults = formatterCmdOptions.check\n ? await this.formatter.check(componentsToFormat, opts)\n : await this.formatter.format(componentsToFormat, opts);\n const jsonFormatterResults = toJsonFormatResults(formatterResults);\n const timerResponse = timer.stop();\n const statusCode = this.getStatusCode(jsonFormatterResults, formatterCmdOptions.check);\n\n return {\n duration: timerResponse,\n data: jsonFormatterResults,\n code: statusCode,\n componentsIdsToFormat: componentsToFormat.map((comp) => comp.id.toString()),\n };\n }\n\n private getStatusCode(results: JsonFormatDataResults, check = false): number {\n if (!check) return 0;\n const hasIssues = results.results.some((comp) => comp.results.some((file) => file.hasIssues));\n if (hasIssues) return 1;\n return 0;\n }\n\n private async getIdsToFormat(pattern: string, changed = false): Promise<ComponentID[]> {\n if (pattern) {\n return this.workspace.idsByPattern(pattern);\n }\n if (changed) {\n return this.workspace.getNewAndModifiedIds();\n }\n return this.componentHost.listIds();\n }\n\n private getAllComponentsResultOutput(componentsResult: JsonComponentFormatResult[], context: OutputContext) {\n const allResults = componentsResult.map((comp) => this.getOneComponentResultOutput(comp, context));\n return allResults.join('\\n\\n');\n }\n\n private getOneComponentResultOutput(componentResult: JsonComponentFormatResult, context: OutputContext) {\n const title = chalk.bold.cyan(componentResult.componentId.toString({ ignoreVersion: true }));\n const filesWithIssues = componentResult.results.filter((fileResult) => fileResult.hasIssues);\n if (!filesWithIssues || !filesWithIssues.length) {\n return `${title}\\n${chalk.green('no issues found')}`;\n }\n let subTitle = chalk.green('the following files have been re-formatted:');\n if (context.check) {\n subTitle = chalk.red('issues found in the following files:');\n }\n const files = filesWithIssues.map(this.getOneComponentFileResultOutput);\n return `${title}\\n${subTitle}\\n${files.join('\\n')}`;\n }\n\n private getOneComponentFileResultOutput(fileResult: FileFormatResult) {\n return fileResult.filePath;\n }\n}\n\nfunction toJsonFormatResults(results: EnvsExecutionResult<FormatResults>): JsonFormatDataResults {\n const newResults = results.results.map((res) => {\n const resultsWithoutComponent = res.data?.results.map((result) => {\n return {\n componentId: result.component.id,\n results: result.results,\n };\n });\n return compact(resultsWithoutComponent);\n });\n return {\n results: compact(flatten(newResults)),\n errors: results?.errors,\n };\n}\n"],"mappings":"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"}
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export declare const Logo: () => JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { EnvService, ExecutionContext, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
2
3
  import { Formatter, FormatResults } from './formatter';
3
4
  import { FormatterOptions } from './formatter-context';
@@ -21,6 +22,6 @@ export declare class FormatterService implements EnvService<FormatResults> {
21
22
  config: any;
22
23
  version: any;
23
24
  displayName: any;
24
- };
25
+ } | undefined;
25
26
  }
26
27
  export {};
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_formatter@1.0.142/dist/formatter.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_formatter@1.0.142/dist/formatter.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_formatter@1.0.143/dist/formatter.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.defender_formatter@1.0.143/dist/formatter.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/formatter",
3
- "version": "1.0.142",
3
+ "version": "1.0.143",
4
4
  "homepage": "https://bit.cloud/teambit/defender/formatter",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.defender",
8
8
  "name": "formatter",
9
- "version": "1.0.142"
9
+ "version": "1.0.143"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -15,24 +15,23 @@
15
15
  "cli-highlight": "2.1.9",
16
16
  "ink": "3.2.0",
17
17
  "@teambit/harmony": "0.4.6",
18
- "@teambit/cli": "0.0.848",
19
- "@teambit/component": "1.0.142",
20
- "@teambit/envs": "1.0.142",
21
- "@teambit/workspace": "1.0.142",
22
- "@teambit/builder": "1.0.142",
23
- "@teambit/logger": "0.0.941"
18
+ "@teambit/cli": "0.0.849",
19
+ "@teambit/component": "1.0.143",
20
+ "@teambit/envs": "1.0.143",
21
+ "@teambit/workspace": "1.0.143",
22
+ "@teambit/builder": "1.0.143",
23
+ "@teambit/logger": "0.0.942"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/lodash": "4.14.165",
27
27
  "@types/mocha": "9.1.0",
28
- "@types/jest": "^29.2.2",
29
- "@types/testing-library__jest-dom": "^5.9.5",
28
+ "chai": "4.3.0",
30
29
  "@teambit/defender.content.formatter-overview": "1.96.1",
31
- "@teambit/harmony.envs.core-aspect-env": "0.0.19"
30
+ "@teambit/harmony.envs.core-aspect-env": "0.0.24"
32
31
  },
33
32
  "peerDependencies": {
34
33
  "react": "^17.0.0 || ^18.0.0",
35
- "@types/react": "17.0.8",
34
+ "@types/react": "^17.0.73",
36
35
  "@teambit/legacy": "1.0.624"
37
36
  },
38
37
  "license": "Apache-2.0",
@@ -47,7 +46,8 @@
47
46
  "default": "./dist/index.js"
48
47
  },
49
48
  "./dist/*": "./dist/*",
50
- "./artifacts/*": "./artifacts/*"
49
+ "./artifacts/*": "./artifacts/*",
50
+ "./*": "./*.ts"
51
51
  },
52
52
  "private": false,
53
53
  "engines": {
package/tsconfig.json CHANGED
@@ -17,7 +17,10 @@
17
17
  "resolveJsonModule": true,
18
18
  "allowJs": true,
19
19
  "outDir": "dist",
20
- "emitDeclarationOnly": true
20
+ "emitDeclarationOnly": true,
21
+ "strict": true,
22
+ "strictPropertyInitialization": false,
23
+ "noImplicitAny": false
21
24
  },
22
25
  "exclude": [
23
26
  "artifacts",