@teambit/cli 0.0.375 → 0.0.379

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/cli.cmd.ts CHANGED
@@ -31,7 +31,7 @@ export class CliGenerateCmd implements Command {
31
31
 
32
32
  export class CliCmd implements Command {
33
33
  name = 'cli';
34
- description = 'EXPERIMENTAL. enters bit cli program and generate commands list';
34
+ description = 'EXPERIMENTAL. enters bit cli program and generates commands list';
35
35
  alias = '';
36
36
  commands: Command[] = [];
37
37
  loader = false;
@@ -59,7 +59,7 @@ export class CliCmd implements Command {
59
59
  const cmd = line.trim().split(' ');
60
60
  try {
61
61
  await cliParser.parse(cmd);
62
- } catch (err) {
62
+ } catch (err: any) {
63
63
  await handleErrorAndExit(err, cmd[0]);
64
64
  }
65
65
  rl.prompt();
package/command-runner.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { render } from 'ink';
2
2
  import { migrate } from '@teambit/legacy/dist/api/consumer';
3
3
  import logger, { LoggerLevel } from '@teambit/legacy/dist/logger/logger';
4
- import { CLIArgs, Command, Flags } from '@teambit/legacy/dist/cli/command';
4
+ import { CLIArgs, Command, Flags, RenderResult } from '@teambit/legacy/dist/cli/command';
5
5
  import { parseCommandName } from '@teambit/legacy/dist/cli/command-registry';
6
6
  import loader from '@teambit/legacy/dist/cli/loader';
7
7
  import { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';
@@ -32,7 +32,7 @@ export class CommandRunner {
32
32
  if (this.command.report) {
33
33
  return await this.runReportHandler();
34
34
  }
35
- } catch (err) {
35
+ } catch (err: any) {
36
36
  return handleErrorAndExit(err, this.commandName, this.command.internal);
37
37
  }
38
38
 
@@ -80,12 +80,9 @@ export class CommandRunner {
80
80
  if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');
81
81
  const result = await this.command.render(this.args, this.flags);
82
82
  loader.off();
83
- // @ts-ignore
84
- // eslint-disable-next-line no-prototype-builtins
85
- const data = result.data && result.hasOwnProperty('code') ? result.data : result;
86
- // @ts-ignore
87
- // eslint-disable-next-line no-prototype-builtins
88
- const code = result.data && result.hasOwnProperty('code') ? result.code : 0;
83
+
84
+ const { data, code } = toRenderResult(result);
85
+
89
86
  const { waitUntilExit } = render(data);
90
87
  await waitUntilExit();
91
88
  return logger.exitAfterFlush(code, this.commandName);
@@ -134,3 +131,12 @@ export class CommandRunner {
134
131
  return null;
135
132
  }
136
133
  }
134
+
135
+ function toRenderResult(obj: RenderResult | React.ReactElement) {
136
+ return isRenderResult(obj) ? obj : { data: obj, code: 0 };
137
+ }
138
+
139
+ function isRenderResult(obj: RenderResult | any): obj is RenderResult {
140
+ // eslint-disable-next-line no-prototype-builtins
141
+ return typeof obj === 'object' && typeof obj.code === 'number' && obj.hasOwnProperty('data');
142
+ }
package/dist/cli.cmd.js CHANGED
@@ -111,7 +111,7 @@ class CliCmd {
111
111
  constructor(cliMain) {
112
112
  this.cliMain = cliMain;
113
113
  (0, _defineProperty2().default)(this, "name", 'cli');
114
- (0, _defineProperty2().default)(this, "description", 'EXPERIMENTAL. enters bit cli program and generate commands list');
114
+ (0, _defineProperty2().default)(this, "description", 'EXPERIMENTAL. enters bit cli program and generates commands list');
115
115
  (0, _defineProperty2().default)(this, "alias", '');
116
116
  (0, _defineProperty2().default)(this, "commands", []);
117
117
  (0, _defineProperty2().default)(this, "loader", false);
@@ -1 +1 @@
1
- {"version":3,"sources":["cli.cmd.ts"],"names":["CliGenerateCmd","constructor","cliMain","report","args","metadata","GenerateCommandsDoc","commands","generate","CliCmd","logger","isDaemon","rl","readline","createInterface","input","process","stdin","output","stdout","prompt","completer","line","cb","cliParser","CLIParser","groups","Promise","resolve","on","cmd","trim","split","parse","err","lineSplit","values","length","completeCommand","then","consumer","comps","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","filter","c","includes","catch","name","startsWith"],"mappings":"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","sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport readline from 'readline';\nimport { CLIParser } from './cli-parser';\nimport { CLIMain } from './cli.main.runtime';\nimport { GenerateCommandsDoc, GenerateOpts } from './generate-doc-md';\n\nexport class CliGenerateCmd implements Command {\n name = 'generate';\n description = 'EXPERIMENTAL. generate an .md file with all commands details';\n alias = '';\n loader = false;\n group = 'general';\n options = [\n [\n '',\n 'metadata',\n 'metadata/front-matter to place at the top of the .md file, enter as an object e.g. --metadata.id=cli --metadata.title=commands',\n ],\n ] as CommandOptions;\n\n constructor(private cliMain: CLIMain) {}\n\n async report(args, { metadata }: GenerateOpts): Promise<string> {\n return new GenerateCommandsDoc(this.cliMain.commands, { metadata }).generate();\n }\n}\n\nexport class CliCmd implements Command {\n name = 'cli';\n description = 'EXPERIMENTAL. enters bit cli program and generate commands list';\n alias = '';\n commands: Command[] = [];\n loader = false;\n group = 'general';\n options = [] as CommandOptions;\n\n constructor(private cliMain: CLIMain) {}\n\n async report(): Promise<string> {\n logger.isDaemon = true;\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: 'bit > ',\n completer: (line, cb) => completer(line, cb, this.cliMain),\n });\n\n const cliParser = new CLIParser(this.cliMain.commands, this.cliMain.groups);\n\n rl.prompt();\n\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n rl.on('line', async (line) => {\n const cmd = line.trim().split(' ');\n try {\n await cliParser.parse(cmd);\n } catch (err) {\n await handleErrorAndExit(err, cmd[0]);\n }\n rl.prompt();\n }).on('close', () => {\n resolve('Have a great day!');\n });\n });\n }\n}\n\nfunction completer(line: string, cb: Function, cliMain: CLIMain) {\n const lineSplit = line.split(' ');\n let values: string[] = [];\n if (lineSplit.length <= 1) {\n values = completeCommand(line, cliMain);\n cb(null, [values, line]);\n }\n loadConsumerIfExist()\n .then((consumer) => {\n const comps = consumer?.bitmapIdsFromCurrentLane.map((id) => id.toStringWithoutVersion()) || [];\n values = comps.filter((c) => c.includes(lineSplit[1]));\n // eslint-disable-next-line promise/no-callback-in-promise\n cb(null, [values, line]);\n })\n .catch((err) => {\n // eslint-disable-next-line promise/no-callback-in-promise\n cb(err, [[], line]);\n });\n}\n\nfunction completeCommand(line: string, cliMain: CLIMain): string[] {\n const commands = cliMain.commands.filter((cmd) => cmd.name.startsWith(line));\n return commands.map((c) => c.name).map((name) => name.split(' ')[0]);\n}\n"]}
1
+ {"version":3,"sources":["cli.cmd.ts"],"names":["CliGenerateCmd","constructor","cliMain","report","args","metadata","GenerateCommandsDoc","commands","generate","CliCmd","logger","isDaemon","rl","readline","createInterface","input","process","stdin","output","stdout","prompt","completer","line","cb","cliParser","CLIParser","groups","Promise","resolve","on","cmd","trim","split","parse","err","lineSplit","values","length","completeCommand","then","consumer","comps","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","filter","c","includes","catch","name","startsWith"],"mappings":"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","sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport readline from 'readline';\nimport { CLIParser } from './cli-parser';\nimport { CLIMain } from './cli.main.runtime';\nimport { GenerateCommandsDoc, GenerateOpts } from './generate-doc-md';\n\nexport class CliGenerateCmd implements Command {\n name = 'generate';\n description = 'EXPERIMENTAL. generate an .md file with all commands details';\n alias = '';\n loader = false;\n group = 'general';\n options = [\n [\n '',\n 'metadata',\n 'metadata/front-matter to place at the top of the .md file, enter as an object e.g. --metadata.id=cli --metadata.title=commands',\n ],\n ] as CommandOptions;\n\n constructor(private cliMain: CLIMain) {}\n\n async report(args, { metadata }: GenerateOpts): Promise<string> {\n return new GenerateCommandsDoc(this.cliMain.commands, { metadata }).generate();\n }\n}\n\nexport class CliCmd implements Command {\n name = 'cli';\n description = 'EXPERIMENTAL. enters bit cli program and generates commands list';\n alias = '';\n commands: Command[] = [];\n loader = false;\n group = 'general';\n options = [] as CommandOptions;\n\n constructor(private cliMain: CLIMain) {}\n\n async report(): Promise<string> {\n logger.isDaemon = true;\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: 'bit > ',\n completer: (line, cb) => completer(line, cb, this.cliMain),\n });\n\n const cliParser = new CLIParser(this.cliMain.commands, this.cliMain.groups);\n\n rl.prompt();\n\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n rl.on('line', async (line) => {\n const cmd = line.trim().split(' ');\n try {\n await cliParser.parse(cmd);\n } catch (err: any) {\n await handleErrorAndExit(err, cmd[0]);\n }\n rl.prompt();\n }).on('close', () => {\n resolve('Have a great day!');\n });\n });\n }\n}\n\nfunction completer(line: string, cb: Function, cliMain: CLIMain) {\n const lineSplit = line.split(' ');\n let values: string[] = [];\n if (lineSplit.length <= 1) {\n values = completeCommand(line, cliMain);\n cb(null, [values, line]);\n }\n loadConsumerIfExist()\n .then((consumer) => {\n const comps = consumer?.bitmapIdsFromCurrentLane.map((id) => id.toStringWithoutVersion()) || [];\n values = comps.filter((c) => c.includes(lineSplit[1]));\n // eslint-disable-next-line promise/no-callback-in-promise\n cb(null, [values, line]);\n })\n .catch((err) => {\n // eslint-disable-next-line promise/no-callback-in-promise\n cb(err, [[], line]);\n });\n}\n\nfunction completeCommand(line: string, cliMain: CLIMain): string[] {\n const commands = cliMain.commands.filter((cmd) => cmd.name.startsWith(line));\n return commands.map((c) => c.name).map((name) => name.split(' ')[0]);\n}\n"]}
@@ -196,14 +196,12 @@ class CommandRunner {
196
196
  if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');
197
197
  const result = await this.command.render(this.args, this.flags);
198
198
 
199
- _loader().default.off(); // @ts-ignore
200
- // eslint-disable-next-line no-prototype-builtins
201
-
202
-
203
- const data = result.data && result.hasOwnProperty('code') ? result.data : result; // @ts-ignore
204
- // eslint-disable-next-line no-prototype-builtins
199
+ _loader().default.off();
205
200
 
206
- const code = result.data && result.hasOwnProperty('code') ? result.code : 0;
201
+ const {
202
+ data,
203
+ code
204
+ } = toRenderResult(result);
207
205
  const {
208
206
  waitUntilExit
209
207
  } = (0, _ink().render)(data);
@@ -268,4 +266,16 @@ class CommandRunner {
268
266
 
269
267
  exports.CommandRunner = CommandRunner;
270
268
 
269
+ function toRenderResult(obj) {
270
+ return isRenderResult(obj) ? obj : {
271
+ data: obj,
272
+ code: 0
273
+ };
274
+ }
275
+
276
+ function isRenderResult(obj) {
277
+ // eslint-disable-next-line no-prototype-builtins
278
+ return typeof obj === 'object' && typeof obj.code === 'number' && obj.hasOwnProperty('data');
279
+ }
280
+
271
281
  //# sourceMappingURL=command-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["command-runner.ts"],"names":["CommandRunner","constructor","command","args","flags","commandName","name","runCommand","bootstrapCommand","runMigrateIfNeeded","determineConsoleWritingDuringCommand","json","runJsonHandler","shouldRunRender","runRenderHandler","report","runReportHandler","err","internal","Error","Analytics","init","logger","info","token","TOKEN_FLAG_NAME","globalFlags","toString","isTerminal","process","stdout","isTTY","Boolean","render","result","code","data","writeAndExit","JSON","stringify","loader","off","hasOwnProperty","waitUntilExit","exitAfterFlush","exitCode","on","start","shouldWriteToConsole","log","logValue","undefined","switchToConsoleLogger","write","migration","debug"],"mappings":"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","sourcesContent":["import { render } from 'ink';\nimport { migrate } from '@teambit/legacy/dist/api/consumer';\nimport logger, { LoggerLevel } from '@teambit/legacy/dist/logger/logger';\nimport { CLIArgs, Command, Flags } from '@teambit/legacy/dist/cli/command';\nimport { parseCommandName } from '@teambit/legacy/dist/cli/command-registry';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { TOKEN_FLAG_NAME } from '@teambit/legacy/dist/constants';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport { Analytics } from '@teambit/legacy/dist/analytics/analytics';\n\nexport class CommandRunner {\n private commandName: string;\n constructor(private command: Command, private args: CLIArgs, private flags: Flags) {\n this.commandName = parseCommandName(this.command.name);\n }\n\n /**\n * run command using one of the handler, \"json\"/\"report\"/\"render\". once done, exit the process.\n */\n async runCommand() {\n try {\n this.bootstrapCommand();\n await this.runMigrateIfNeeded();\n this.determineConsoleWritingDuringCommand();\n if (this.flags.json) {\n return await this.runJsonHandler();\n }\n if (this.shouldRunRender()) {\n return await this.runRenderHandler();\n }\n if (this.command.report) {\n return await this.runReportHandler();\n }\n } catch (err) {\n return handleErrorAndExit(err, this.commandName, this.command.internal);\n }\n\n throw new Error(`command \"${this.commandName}\" doesn't implement \"render\" nor \"report\" methods`);\n }\n\n private bootstrapCommand() {\n Analytics.init(this.commandName, this.flags, this.args);\n logger.info(`[*] started a new command: \"${this.commandName}\" with the following data:`, {\n args: this.args,\n flags: this.flags,\n });\n const token = this.flags[TOKEN_FLAG_NAME];\n if (token) {\n globalFlags.token = token.toString();\n }\n }\n\n /**\n * when both \"render\" and \"report\" were implemented, check whether it's a terminal.\n * if it's a terminal, use \"render\", if not, use \"report\" because \"report\" is just a string\n */\n private shouldRunRender() {\n const isTerminal = process.stdout.isTTY;\n if (this.command.report && !isTerminal) {\n return false;\n }\n return Boolean(this.command.render);\n }\n\n /**\n * this works for both, Harmony commands and Legacy commands (the legacy-command-adapter\n * implements json() method)\n */\n private async runJsonHandler() {\n if (!this.flags.json) return null;\n if (!this.command.json) throw new Error(`command \"${this.commandName}\" doesn't implement \"json\" method`);\n const result = await this.command.json(this.args, this.flags);\n const code = result.code || 0;\n const data = result.data || result;\n return this.writeAndExit(JSON.stringify(data, null, 2), code);\n }\n\n private async runRenderHandler() {\n if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');\n const result = await this.command.render(this.args, this.flags);\n loader.off();\n // @ts-ignore\n // eslint-disable-next-line no-prototype-builtins\n const data = result.data && result.hasOwnProperty('code') ? result.data : result;\n // @ts-ignore\n // eslint-disable-next-line no-prototype-builtins\n const code = result.data && result.hasOwnProperty('code') ? result.code : 0;\n const { waitUntilExit } = render(data);\n await waitUntilExit();\n return logger.exitAfterFlush(code, this.commandName);\n }\n\n private async runReportHandler() {\n if (!this.command.report) throw new Error('runReportHandler expects command.report to be implemented');\n const result = await this.command.report(this.args, this.flags);\n loader.off();\n const data = typeof result === 'string' ? result : result.data;\n const exitCode = typeof result === 'string' ? 0 : result.code;\n return this.writeAndExit(`${data}\\n`, exitCode);\n }\n\n /**\n * the loader and logger.console write output to the console during the command execution.\n * for internals commands, such as, _put, _fetch, the command.loader = false.\n */\n private determineConsoleWritingDuringCommand() {\n if (this.command.loader && !this.flags.json && !this.flags['get-yargs-completions']) {\n loader.on();\n loader.start(`running command \"${this.commandName}\"...`);\n logger.shouldWriteToConsole = true;\n } else {\n loader.off();\n logger.shouldWriteToConsole = false;\n }\n if (this.flags.log) {\n const logValue = typeof this.flags.log === 'string' ? this.flags.log : undefined;\n logger.switchToConsoleLogger(logValue as LoggerLevel);\n }\n }\n\n private async writeAndExit(data: string, exitCode: number) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return process.stdout.write(data, async () => logger.exitAfterFlush(exitCode, this.commandName));\n }\n\n private async runMigrateIfNeeded(): Promise<any> {\n // @ts-ignore LegacyCommandAdapter has .migration\n if (this.command.migration) {\n logger.debug('Checking if a migration is needed');\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return migrate(null, false);\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["command-runner.ts"],"names":["CommandRunner","constructor","command","args","flags","commandName","name","runCommand","bootstrapCommand","runMigrateIfNeeded","determineConsoleWritingDuringCommand","json","runJsonHandler","shouldRunRender","runRenderHandler","report","runReportHandler","err","internal","Error","Analytics","init","logger","info","token","TOKEN_FLAG_NAME","globalFlags","toString","isTerminal","process","stdout","isTTY","Boolean","render","result","code","data","writeAndExit","JSON","stringify","loader","off","toRenderResult","waitUntilExit","exitAfterFlush","exitCode","on","start","shouldWriteToConsole","log","logValue","undefined","switchToConsoleLogger","write","migration","debug","obj","isRenderResult","hasOwnProperty"],"mappings":"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","sourcesContent":["import { render } from 'ink';\nimport { migrate } from '@teambit/legacy/dist/api/consumer';\nimport logger, { LoggerLevel } from '@teambit/legacy/dist/logger/logger';\nimport { CLIArgs, Command, Flags, RenderResult } from '@teambit/legacy/dist/cli/command';\nimport { parseCommandName } from '@teambit/legacy/dist/cli/command-registry';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { TOKEN_FLAG_NAME } from '@teambit/legacy/dist/constants';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport { Analytics } from '@teambit/legacy/dist/analytics/analytics';\n\nexport class CommandRunner {\n private commandName: string;\n constructor(private command: Command, private args: CLIArgs, private flags: Flags) {\n this.commandName = parseCommandName(this.command.name);\n }\n\n /**\n * run command using one of the handler, \"json\"/\"report\"/\"render\". once done, exit the process.\n */\n async runCommand() {\n try {\n this.bootstrapCommand();\n await this.runMigrateIfNeeded();\n this.determineConsoleWritingDuringCommand();\n if (this.flags.json) {\n return await this.runJsonHandler();\n }\n if (this.shouldRunRender()) {\n return await this.runRenderHandler();\n }\n if (this.command.report) {\n return await this.runReportHandler();\n }\n } catch (err: any) {\n return handleErrorAndExit(err, this.commandName, this.command.internal);\n }\n\n throw new Error(`command \"${this.commandName}\" doesn't implement \"render\" nor \"report\" methods`);\n }\n\n private bootstrapCommand() {\n Analytics.init(this.commandName, this.flags, this.args);\n logger.info(`[*] started a new command: \"${this.commandName}\" with the following data:`, {\n args: this.args,\n flags: this.flags,\n });\n const token = this.flags[TOKEN_FLAG_NAME];\n if (token) {\n globalFlags.token = token.toString();\n }\n }\n\n /**\n * when both \"render\" and \"report\" were implemented, check whether it's a terminal.\n * if it's a terminal, use \"render\", if not, use \"report\" because \"report\" is just a string\n */\n private shouldRunRender() {\n const isTerminal = process.stdout.isTTY;\n if (this.command.report && !isTerminal) {\n return false;\n }\n return Boolean(this.command.render);\n }\n\n /**\n * this works for both, Harmony commands and Legacy commands (the legacy-command-adapter\n * implements json() method)\n */\n private async runJsonHandler() {\n if (!this.flags.json) return null;\n if (!this.command.json) throw new Error(`command \"${this.commandName}\" doesn't implement \"json\" method`);\n const result = await this.command.json(this.args, this.flags);\n const code = result.code || 0;\n const data = result.data || result;\n return this.writeAndExit(JSON.stringify(data, null, 2), code);\n }\n\n private async runRenderHandler() {\n if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');\n const result = await this.command.render(this.args, this.flags);\n loader.off();\n\n const { data, code } = toRenderResult(result);\n\n const { waitUntilExit } = render(data);\n await waitUntilExit();\n return logger.exitAfterFlush(code, this.commandName);\n }\n\n private async runReportHandler() {\n if (!this.command.report) throw new Error('runReportHandler expects command.report to be implemented');\n const result = await this.command.report(this.args, this.flags);\n loader.off();\n const data = typeof result === 'string' ? result : result.data;\n const exitCode = typeof result === 'string' ? 0 : result.code;\n return this.writeAndExit(`${data}\\n`, exitCode);\n }\n\n /**\n * the loader and logger.console write output to the console during the command execution.\n * for internals commands, such as, _put, _fetch, the command.loader = false.\n */\n private determineConsoleWritingDuringCommand() {\n if (this.command.loader && !this.flags.json && !this.flags['get-yargs-completions']) {\n loader.on();\n loader.start(`running command \"${this.commandName}\"...`);\n logger.shouldWriteToConsole = true;\n } else {\n loader.off();\n logger.shouldWriteToConsole = false;\n }\n if (this.flags.log) {\n const logValue = typeof this.flags.log === 'string' ? this.flags.log : undefined;\n logger.switchToConsoleLogger(logValue as LoggerLevel);\n }\n }\n\n private async writeAndExit(data: string, exitCode: number) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return process.stdout.write(data, async () => logger.exitAfterFlush(exitCode, this.commandName));\n }\n\n private async runMigrateIfNeeded(): Promise<any> {\n // @ts-ignore LegacyCommandAdapter has .migration\n if (this.command.migration) {\n logger.debug('Checking if a migration is needed');\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return migrate(null, false);\n }\n return null;\n }\n}\n\nfunction toRenderResult(obj: RenderResult | React.ReactElement) {\n return isRenderResult(obj) ? obj : { data: obj, code: 0 };\n}\n\nfunction isRenderResult(obj: RenderResult | any): obj is RenderResult {\n // eslint-disable-next-line no-prototype-builtins\n return typeof obj === 'object' && typeof obj.code === 'number' && obj.hasOwnProperty('data');\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/cli",
3
- "version": "0.0.375",
3
+ "version": "0.0.379",
4
4
  "homepage": "https://bit.dev/teambit/harmony/cli",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "cli",
9
- "version": "0.0.375"
9
+ "version": "0.0.379"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -18,7 +18,7 @@
18
18
  "pad-right": "0.2.2",
19
19
  "@babel/runtime": "7.12.18",
20
20
  "core-js": "^3.0.0",
21
- "@teambit/bit-error": "0.0.364"
21
+ "@teambit/bit-error": "0.0.365"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/didyoumean": "1.2.0",
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "private": false,
70
70
  "engines": {
71
- "node": ">=12.15.0"
71
+ "node": ">=12.22.0"
72
72
  },
73
73
  "repository": {
74
74
  "type": "git",
package/tsconfig.json CHANGED
@@ -15,9 +15,9 @@
15
15
  "skipLibCheck": true,
16
16
  "moduleResolution": "node",
17
17
  "esModuleInterop": true,
18
+ "outDir": "dist",
18
19
  "composite": true,
19
20
  "emitDeclarationOnly": true,
20
- "outDir": "dist",
21
21
  "experimentalDecorators": true,
22
22
  "emitDecoratorMetadata": true,
23
23
  "allowSyntheticDefaultImports": true,
package/types/asset.d.ts CHANGED
@@ -3,9 +3,13 @@ declare module '*.png' {
3
3
  export = value;
4
4
  }
5
5
  declare module '*.svg' {
6
- const value: any;
7
- export = value;
6
+ import type { FunctionComponent, SVGProps } from 'react';
7
+
8
+ export const ReactComponent: FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>;
9
+ const src: string;
10
+ export default src;
8
11
  }
12
+
9
13
  // @TODO Gilad
10
14
  declare module '*.jpg' {
11
15
  const value: any;
package/types/style.d.ts CHANGED
@@ -21,6 +21,21 @@ declare module '*.less' {
21
21
  export default classes;
22
22
  }
23
23
 
24
+ declare module '*.css' {
25
+ const classes: { readonly [key: string]: string };
26
+ export default classes;
27
+ }
28
+
29
+ declare module '*.sass' {
30
+ const classes: { readonly [key: string]: string };
31
+ export default classes;
32
+ }
33
+
34
+ declare module '*.scss' {
35
+ const classes: { readonly [key: string]: string };
36
+ export default classes;
37
+ }
38
+
24
39
  declare module '*.mdx' {
25
40
  const component: any;
26
41
  export default component;