@teambit/component-log 1.0.449 → 1.0.450

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/blame-cmd.js CHANGED
@@ -4,6 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BlameCmd = void 0;
7
+ function _chalk() {
8
+ const data = _interopRequireDefault(require("chalk"));
9
+ _chalk = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
7
14
  function _logCmd() {
8
15
  const data = require("./log-cmd");
9
16
  _logCmd = function () {
@@ -11,6 +18,7 @@ function _logCmd() {
11
18
  };
12
19
  return data;
13
20
  }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
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; }
15
23
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
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); }
@@ -31,6 +39,7 @@ class BlameCmd {
31
39
  includeMessage = false
32
40
  }) {
33
41
  const results = await this.componentLog.blame(filePath);
42
+ if (!results.length) return _chalk().default.yellow('no results found');
34
43
  const table = (0, _logCmd().getEmptyTableWithoutStyle)();
35
44
  results.forEach(({
36
45
  hash,
@@ -1 +1 @@
1
- {"version":3,"names":["_logCmd","data","require","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BlameCmd","constructor","componentLog","name","description","report","filePath","includeMessage","results","blame","table","getEmptyTableWithoutStyle","forEach","hash","tag","username","date","message","lineNumber","lineContent","shortHash","substring","shortMessage","split","push","toString","exports"],"sources":["blame-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentLogMain } from './component-log.main.runtime';\nimport { getEmptyTableWithoutStyle } from './log-cmd';\n\nexport class BlameCmd implements Command {\n name = 'blame <filepath>';\n description = 'EXPERIMENTAL. per line, show who and when was the last to modify it';\n group = 'info';\n alias = '';\n options = [['m', 'include-message', 'show the commit message']] as CommandOptions;\n arguments = [{ name: 'filepath', description: 'file path relative to the workspace' }];\n\n constructor(private componentLog: ComponentLogMain) {}\n\n async report([filePath]: [string], { includeMessage = false }: { includeMessage?: boolean }) {\n const results = await this.componentLog.blame(filePath);\n const table = getEmptyTableWithoutStyle();\n results.forEach(({ hash, tag, username, date, message, lineNumber, lineContent }) => {\n const shortHash = hash.substring(0, 9);\n const shortMessage = includeMessage ? message.split('\\n')[0] : '';\n table.push([shortHash, tag || '', username, date, shortMessage, `${lineNumber})`, lineContent]);\n });\n return table.toString();\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAAE,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAE/C,MAAMgB,QAAQ,CAAoB;EAQvCC,WAAWA,CAASC,YAA8B,EAAE;IAAA,KAAhCA,YAA8B,GAA9BA,YAA8B;IAAArB,eAAA,eAP3C,kBAAkB;IAAAA,eAAA,sBACX,qEAAqE;IAAAA,eAAA,gBAC3E,MAAM;IAAAA,eAAA,gBACN,EAAE;IAAAA,eAAA,kBACA,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;IAAAA,eAAA,oBACnD,CAAC;MAAEsB,IAAI,EAAE,UAAU;MAAEC,WAAW,EAAE;IAAsC,CAAC,CAAC;EAEjC;EAErD,MAAMC,MAAMA,CAAC,CAACC,QAAQ,CAAW,EAAE;IAAEC,cAAc,GAAG;EAAoC,CAAC,EAAE;IAC3F,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACN,YAAY,CAACO,KAAK,CAACH,QAAQ,CAAC;IACvD,MAAMI,KAAK,GAAG,IAAAC,mCAAyB,EAAC,CAAC;IACzCH,OAAO,CAACI,OAAO,CAAC,CAAC;MAAEC,IAAI;MAAEC,GAAG;MAAEC,QAAQ;MAAEC,IAAI;MAAEC,OAAO;MAAEC,UAAU;MAAEC;IAAY,CAAC,KAAK;MACnF,MAAMC,SAAS,GAAGP,IAAI,CAACQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;MACtC,MAAMC,YAAY,GAAGf,cAAc,GAAGU,OAAO,CAACM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;MACjEb,KAAK,CAACc,IAAI,CAAC,CAACJ,SAAS,EAAEN,GAAG,IAAI,EAAE,EAAEC,QAAQ,EAAEC,IAAI,EAAEM,YAAY,EAAE,GAAGJ,UAAU,GAAG,EAAEC,WAAW,CAAC,CAAC;IACjG,CAAC,CAAC;IACF,OAAOT,KAAK,CAACe,QAAQ,CAAC,CAAC;EACzB;AACF;AAACC,OAAA,CAAA1B,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_logCmd","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","BlameCmd","constructor","componentLog","name","description","report","filePath","includeMessage","results","blame","length","chalk","yellow","table","getEmptyTableWithoutStyle","forEach","hash","tag","username","date","message","lineNumber","lineContent","shortHash","substring","shortMessage","split","push","toString","exports"],"sources":["blame-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { ComponentLogMain } from './component-log.main.runtime';\nimport { getEmptyTableWithoutStyle } from './log-cmd';\n\nexport class BlameCmd implements Command {\n name = 'blame <filepath>';\n description = 'EXPERIMENTAL. per line, show who and when was the last to modify it';\n group = 'info';\n alias = '';\n options = [['m', 'include-message', 'show the commit message']] as CommandOptions;\n arguments = [{ name: 'filepath', description: 'file path relative to the workspace' }];\n\n constructor(private componentLog: ComponentLogMain) {}\n\n async report([filePath]: [string], { includeMessage = false }: { includeMessage?: boolean }) {\n const results = await this.componentLog.blame(filePath);\n if (!results.length) return chalk.yellow('no results found');\n const table = getEmptyTableWithoutStyle();\n results.forEach(({ hash, tag, username, date, message, lineNumber, lineContent }) => {\n const shortHash = hash.substring(0, 9);\n const shortMessage = includeMessage ? message.split('\\n')[0] : '';\n table.push([shortHash, tag || '', username, date, shortMessage, `${lineNumber})`, lineContent]);\n });\n return table.toString();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { CLIMain } from '@teambit/cli';
2
2
  import { LegacyComponentLog as ComponentLog } from '@teambit/legacy-component-log';
3
3
  import { Workspace } from '@teambit/workspace';
4
- import { PathOsBasedAbsolute } from '@teambit/toolbox.path.path';
4
+ import { PathOsBased, PathOsBasedAbsolute } from '@teambit/toolbox.path.path';
5
5
  export type FileLog = {
6
6
  hash: string;
7
7
  tag?: string;
@@ -12,6 +12,8 @@ export type FileLog = {
12
12
  fileHash: string;
13
13
  parentFileHash?: string;
14
14
  fileDiff?: string;
15
+ hidden?: boolean;
16
+ parentHashes?: string[];
15
17
  };
16
18
  export type BlameLineInfo = {
17
19
  lineNumber: number;
@@ -24,6 +26,12 @@ export type BlameLineInfo = {
24
26
  hash: string;
25
27
  tag?: string;
26
28
  };
29
+ export type LogOpts = {
30
+ isRemote?: boolean;
31
+ shortHash?: boolean;
32
+ shortMessage?: boolean;
33
+ showHidden?: boolean;
34
+ };
27
35
  export type FileHashDiffFromParent = {
28
36
  filePath: string;
29
37
  hash?: string;
@@ -35,11 +43,11 @@ export declare class ComponentLogMain {
35
43
  /**
36
44
  * get component log sorted by the timestamp in ascending order (from the earliest to the latest)
37
45
  */
38
- getLogs(id: string, isRemote?: boolean, shortHash?: boolean, shortMessage?: boolean): Promise<ComponentLog[]>;
39
- getLogsWithParents(id: string, fullHash?: boolean, fullMessage?: boolean): Promise<string[]>;
46
+ getLogs(id: string, options?: LogOpts): Promise<ComponentLog[]>;
47
+ getLogsWithParents(id: string, options: LogOpts): Promise<string[]>;
40
48
  getChangedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]>;
41
49
  getFileHistoryHashes(filePath: PathOsBasedAbsolute): Promise<FileLog[]>;
42
- blame(filePath: string): Promise<BlameLineInfo[]>;
50
+ blame(filePath: PathOsBased): Promise<BlameLineInfo[]>;
43
51
  getFileLog(filePath: string): Promise<FileLog[]>;
44
52
  private stringifyLogInfoOneLine;
45
53
  static slots: never[];
@@ -149,7 +149,12 @@ class ComponentLogMain {
149
149
  /**
150
150
  * get component log sorted by the timestamp in ascending order (from the earliest to the latest)
151
151
  */
152
- async getLogs(id, isRemote, shortHash = false, shortMessage = false) {
152
+ async getLogs(id, options = {}) {
153
+ const {
154
+ isRemote = false,
155
+ shortHash = false,
156
+ shortMessage = false
157
+ } = options;
153
158
  if (isRemote) {
154
159
  const consumer = this.workspace?.consumer;
155
160
  const bitId = _componentId().ComponentID.fromString(id);
@@ -163,10 +168,10 @@ class ComponentLogMain {
163
168
  log.date = log.date ? (0, _moment().default)(new Date(parseInt(log.date))).format('YYYY-MM-DD HH:mm:ss') : undefined;
164
169
  log.message = shortMessage ? log.message.split('\n')[0] : log.message;
165
170
  });
166
- return logs;
171
+ return options.showHidden ? logs : logs.filter(l => !l.hidden);
167
172
  }
168
- async getLogsWithParents(id, fullHash = false, fullMessage = false) {
169
- const logs = await this.getLogs(id, false, !fullHash, !fullMessage);
173
+ async getLogsWithParents(id, options) {
174
+ const logs = await this.getLogs(id, options);
170
175
  const graph = (0, _snapGraph().buildSnapGraph)(logs);
171
176
  const sorted = graph.toposort();
172
177
  return sorted.map(node => this.stringifyLogInfoOneLine(node.attr));
@@ -213,7 +218,9 @@ class ComponentLogMain {
213
218
  return [];
214
219
  }
215
220
  const rootDir = workspace.componentDir(componentId, undefined);
216
- const logs = await this.getLogs(componentId.toString());
221
+ const logs = await this.getLogs(componentId.toString(), {
222
+ showHidden: true
223
+ });
217
224
  const filePathAsLinux = (0, _toolboxPath().pathNormalizeToLinux)(filePath);
218
225
  const filePathRelativeInComponent = filePathAsLinux.replace(`${rootDir}/`, '');
219
226
  const modelComp = await workspace.scope.getBitObjectModelComponent(componentId);
@@ -246,20 +253,34 @@ class ComponentLogMain {
246
253
  date: logItem.date || '<N/A>',
247
254
  message: logItem.message,
248
255
  fileHash,
249
- parentFileHash: getParentFileHash()
256
+ parentFileHash: getParentFileHash(),
257
+ hidden: logItem.hidden,
258
+ parentHashes: versionObj?.parents.map(p => p.toString())
250
259
  });
251
260
  }, {
252
261
  concurrency: 100
253
262
  });
254
263
 
255
264
  // remove entries that their fileHash is the same as their parent.
256
- return results.filter(r => r.fileHash !== r.parentFileHash);
265
+ // however, if their parent is hidden, because they're going to be removed, use their parents.
266
+ results.forEach(result => {
267
+ const parents = result.parentHashes || [];
268
+ if (parents.length !== 1) return;
269
+ const onlyParent = parents[0];
270
+ const parentResult = results.find(r => r.hash === onlyParent);
271
+ if (parentResult && parentResult.hidden) {
272
+ result.parentFileHash = parentResult.parentFileHash;
273
+ }
274
+ });
275
+ return results.filter(r => !r.hidden).filter(r => r.fileHash !== r.parentFileHash);
257
276
  }
258
277
  async blame(filePath) {
259
278
  const workspace = this.workspace;
260
279
  if (!workspace) throw new (_workspace().OutsideWorkspaceError)();
261
280
  const absPath = _path().default.isAbsolute(filePath) ? filePath : workspace.consumer.toAbsolutePath(filePath);
262
281
  const reversedLogs = await this.getFileHistoryHashes(absPath);
282
+ if (!reversedLogs.length) return [];
283
+ // reverse order so it'll be from newer to older
263
284
  const logs = reversedLogs.reverse();
264
285
  const getFileContent = async hash => {
265
286
  const source = await workspace.scope.legacyScope.objects.load(_objects().Ref.from(hash), true);
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_componentId","_path","_interopRequireDefault","_moment","_pMap","_workspace","_lodash","_pMapSeries","_toolboxPath","_objects","_legacy","_chalk","_getRemoteByName","_diff","_componentLog","_logCmd","_snapGraph","_logFileCmd","_blameCmd","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ComponentLogMain","constructor","workspace","getLogs","id","isRemote","shortHash","shortMessage","consumer","bitId","ComponentID","fromString","remote","getRemoteByName","scope","log","OutsideWorkspaceError","componentId","resolveComponentId","logs","undefined","forEach","date","moment","Date","parseInt","format","message","split","getLogsWithParents","fullHash","fullMessage","graph","buildSnapGraph","sorted","toposort","map","node","stringifyLogInfoOneLine","attr","getChangedFilesFromParent","modelComp","getBitObjectModelComponent","versionObj","getBitObjectVersion","version","firstParent","parents","parentObj","toString","compDir","componentDir","ignoreVersion","results","compact","files","file","parentFile","find","f","relativePath","isEqual","filePath","path","join","hash","parentHash","filesOnParentOnly","filter","length","push","getFileHistoryHashes","getComponentIdByPath","rootDir","filePathAsLinux","pathNormalizeToLinux","filePathRelativeInComponent","replace","pMap","logItem","fileInComp","fileHash","getFileHashFromParent","parent","parentFileInComp","fileHashesFromParent","Promise","all","getParentFileHash","includes","tag","username","email","parentFileHash","concurrency","blame","absPath","isAbsolute","toAbsolutePath","reversedLogs","reverse","getFileContent","source","legacyScope","objects","load","Ref","from","contents","currentLog","currentContentStr","currentContentLines","blameArray","lineContent","index","lineNumber","populateBlameArray","unblamedLineIndices","Set","_","pMapSeries","size","currentHash","parentContentStr","diff","diffLines","removedLines","addedLines","currentLineNum","part","lines","pop","added","has","delete","removed","line","keys","lineNum","previousLineContent","oldestLog","lineIdx","getFileLog","Error","relative","lastFile","component","get","changeVersion","filesystem","lastResult","lastHash","toSourceAsLinuxEOL","getFilesDiff","fileDiff","diffOutput","logInfo","chalk","yellow","provider","cli","componentLog","register","LogCmd","LogFileCmd","BlameCmd","exports","CLIAspect","WorkspaceAspect","MainRuntime","ComponentLogAspect","addRuntime"],"sources":["component-log.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport { LegacyComponentLog as ComponentLog } from '@teambit/legacy-component-log';\nimport path from 'path';\nimport moment from 'moment';\nimport pMap from 'p-map';\nimport { WorkspaceAspect, OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport { Source, Version } from '@teambit/legacy/dist/scope/models';\nimport { pathNormalizeToLinux, PathOsBasedAbsolute } from '@teambit/toolbox.path.path';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport { getFilesDiff } from '@teambit/legacy.component-diff';\nimport chalk from 'chalk';\nimport getRemoteByName from '@teambit/legacy/dist/remotes/get-remote-by-name';\nimport { diffLines } from 'diff';\nimport { ComponentLogAspect } from './component-log.aspect';\nimport LogCmd from './log-cmd';\nimport { buildSnapGraph } from './snap-graph';\nimport { LogFileCmd } from './log-file-cmd';\nimport { BlameCmd } from './blame-cmd';\n\nexport type FileLog = {\n hash: string;\n tag?: string;\n username?: string;\n email?: string;\n date: string;\n message: string;\n fileHash: string;\n parentFileHash?: string;\n fileDiff?: string;\n};\n\nexport type BlameLineInfo = {\n lineNumber: number;\n lineContent: string;\n previousLineContent?: string;\n username: string;\n email?: string;\n date: string;\n message: string;\n hash: string;\n tag?: string;\n};\n\nexport type FileHashDiffFromParent = {\n filePath: string; // path OS absolute\n hash?: string; // if undefined, the file was deleted in this snap\n parentHash?: string; // if undefined, the file was added in this snap\n};\n\nexport class ComponentLogMain {\n constructor(private workspace: Workspace | undefined) {}\n\n /**\n * get component log sorted by the timestamp in ascending order (from the earliest to the latest)\n */\n async getLogs(id: string, isRemote?: boolean, shortHash = false, shortMessage = false): Promise<ComponentLog[]> {\n if (isRemote) {\n const consumer = this.workspace?.consumer;\n const bitId = ComponentID.fromString(id);\n const remote = await getRemoteByName(bitId.scope as string, consumer);\n return remote.log(bitId);\n }\n if (!this.workspace) throw new OutsideWorkspaceError();\n const componentId = await this.workspace.resolveComponentId(id);\n const logs = await this.workspace.scope.getLogs(componentId, shortHash, undefined, true);\n logs.forEach((log) => {\n log.date = log.date ? moment(new Date(parseInt(log.date))).format('YYYY-MM-DD HH:mm:ss') : undefined;\n log.message = shortMessage ? log.message.split('\\n')[0] : log.message;\n });\n return logs;\n }\n\n async getLogsWithParents(id: string, fullHash = false, fullMessage = false) {\n const logs = await this.getLogs(id, false, !fullHash, !fullMessage);\n const graph = buildSnapGraph(logs);\n const sorted = graph.toposort();\n return sorted.map((node) => this.stringifyLogInfoOneLine(node.attr));\n }\n\n async getChangedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.resolveComponentId(id);\n const modelComp = await workspace.scope.getBitObjectModelComponent(componentId, true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const versionObj = (await workspace.scope.getBitObjectVersion(modelComp!, componentId.version!, true)) as Version;\n const firstParent = versionObj.parents[0];\n const parentObj = firstParent\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ((await workspace.scope.getBitObjectVersion(modelComp!, firstParent.toString(), true)) as Version)\n : null;\n const compDir = workspace.componentDir(componentId, { ignoreVersion: true });\n const results: FileHashDiffFromParent[] = compact(\n versionObj.files.map((file) => {\n const parentFile = parentObj?.files.find((f) => f.relativePath === file.relativePath);\n if (parentFile?.file.isEqual(file.file)) return null;\n return {\n filePath: path.join(compDir, file.relativePath),\n hash: file.file.toString(),\n parentHash: parentFile?.file.toString(),\n };\n })\n );\n const filesOnParentOnly = (parentObj?.files || []).filter(\n (parentFile) => !versionObj.files.find((file) => file.relativePath === parentFile.relativePath)\n );\n if (filesOnParentOnly.length) {\n results.push(\n ...filesOnParentOnly.map((file) => ({\n filePath: file.relativePath,\n hash: undefined,\n parentHash: file.file.toString(),\n }))\n );\n }\n\n return results;\n }\n\n async getFileHistoryHashes(filePath: PathOsBasedAbsolute): Promise<FileLog[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.getComponentIdByPath(filePath);\n if (!componentId) {\n // filePath could be from the component dir but the file is not part of the bit-component (such as component.json)\n return [];\n }\n\n const rootDir = workspace.componentDir(componentId, undefined);\n\n const logs = await this.getLogs(componentId.toString());\n\n const filePathAsLinux = pathNormalizeToLinux(filePath);\n const filePathRelativeInComponent = filePathAsLinux.replace(`${rootDir}/`, '');\n\n const modelComp = await workspace.scope.getBitObjectModelComponent(componentId);\n if (!modelComp) return []; // probably a new component\n const results: FileLog[] = [];\n await pMap(\n logs,\n async (logItem) => {\n const versionObj = await workspace.scope.getBitObjectVersion(modelComp, logItem.hash, true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const fileInComp = versionObj!.files.find((f) => f.relativePath === filePathRelativeInComponent);\n if (!fileInComp) return;\n const fileHash = fileInComp.file.toString();\n const getFileHashFromParent = async (parent: Ref) => {\n const parentObj = parent\n ? await workspace.scope.getBitObjectVersion(modelComp, parent.toString(), true)\n : undefined;\n\n const parentFileInComp = parentObj\n ? parentObj.files.find((f) => f.relativePath === filePathRelativeInComponent)\n : undefined;\n\n return parentFileInComp?.file.toString();\n };\n const fileHashesFromParent = versionObj ? await Promise.all(versionObj.parents.map(getFileHashFromParent)) : [];\n\n const getParentFileHash = () => {\n if (fileHashesFromParent.length === 0) return undefined;\n if (fileHashesFromParent.length === 1) return fileHashesFromParent[0];\n // if one parent has it, it means that this merge-snap didn't change the file.\n if (fileHashesFromParent.includes(fileHash)) return fileHash;\n return fileHashesFromParent[0];\n };\n\n results.push({\n hash: logItem.hash,\n tag: logItem.tag,\n username: logItem.username,\n email: logItem.email,\n date: logItem.date || '<N/A>',\n message: logItem.message,\n fileHash,\n parentFileHash: getParentFileHash(),\n });\n },\n { concurrency: 100 }\n );\n\n // remove entries that their fileHash is the same as their parent.\n return results.filter((r) => r.fileHash !== r.parentFileHash);\n }\n\n async blame(filePath: string): Promise<BlameLineInfo[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const absPath = path.isAbsolute(filePath) ? filePath : workspace.consumer.toAbsolutePath(filePath);\n const reversedLogs = await this.getFileHistoryHashes(absPath);\n const logs = reversedLogs.reverse();\n\n const getFileContent = async (hash: string) => {\n const source = (await workspace.scope.legacyScope.objects.load(Ref.from(hash), true)) as Source;\n return source.contents.toString();\n };\n\n // Initialize the blame array with the current file content\n const currentLog = logs[0];\n let currentContentStr = await getFileContent(currentLog.fileHash);\n const currentContentLines = currentContentStr.split('\\n');\n const blameArray: Partial<BlameLineInfo>[] = currentContentLines.map((lineContent, index) => ({\n lineNumber: index + 1,\n lineContent,\n }));\n const populateBlameArray = (lineNumber: number, log: FileLog) => {\n blameArray[lineNumber].username = log.username;\n blameArray[lineNumber].email = log.email;\n blameArray[lineNumber].date = log.date;\n blameArray[lineNumber].message = log.message;\n blameArray[lineNumber].hash = log.hash;\n blameArray[lineNumber].tag = log.tag;\n };\n\n // Keep track of unassigned lines\n const unblamedLineIndices = new Set(blameArray.map((_, index) => index));\n\n await pMapSeries(logs, async (logItem) => {\n if (unblamedLineIndices.size === 0) return; // All lines have been assigned\n\n const currentHash = logItem.fileHash;\n const parentHash = logItem.parentFileHash;\n\n // Skip if there is no parent to compare with\n if (!parentHash) return;\n\n currentContentStr = await getFileContent(currentHash);\n const parentContentStr = await getFileContent(parentHash);\n\n const diff = diffLines(parentContentStr, currentContentStr);\n\n const removedLines: Record<number, string> = {};\n const addedLines: number[] = [];\n\n let currentLineNum = 0;\n\n diff.forEach((part) => {\n const lines = part.value.split('\\n');\n // Remove the last empty line if the string ends with a newline\n if (lines[lines.length - 1] === '') lines.pop();\n\n if (part.added) {\n // Lines added in the current version\n lines.forEach(() => {\n if (unblamedLineIndices.has(currentLineNum)) {\n populateBlameArray(currentLineNum, logItem);\n addedLines.push(currentLineNum);\n unblamedLineIndices.delete(currentLineNum);\n }\n currentLineNum++;\n });\n } else if (part.removed) {\n lines.forEach((line, index) => {\n removedLines[currentLineNum + index] = line;\n });\n // Lines removed from parent version; do not advance currentLineNum\n // Since these lines are not in the current version, we ignore them\n } else {\n // Unchanged lines\n currentLineNum += lines.length;\n }\n });\n Object.keys(removedLines).forEach((lineNum) => {\n if (addedLines.includes(parseInt(lineNum))) {\n blameArray[parseInt(lineNum)].previousLineContent = removedLines[parseInt(lineNum)];\n }\n });\n });\n\n // Assign the oldest log info to any remaining unblamed lines\n const oldestLog = logs[logs.length - 1];\n unblamedLineIndices.forEach((lineIdx) => {\n populateBlameArray(lineIdx, oldestLog);\n });\n\n return blameArray as BlameLineInfo[];\n }\n\n async getFileLog(filePath: string) {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.getComponentIdByPath(filePath);\n if (!componentId) throw new Error(`unable to find component for file ${filePath}`);\n\n const rootDir = workspace.componentDir(componentId, undefined, { relative: true });\n\n const logs = await this.getLogs(componentId.toString());\n\n const filePathAsLinux = pathNormalizeToLinux(filePath);\n const filePathRelativeInComponent = filePathAsLinux.replace(`${rootDir}/`, '');\n\n const results: FileLog[] = [];\n let lastFile;\n await pMapSeries(logs, async (logItem) => {\n const component = await workspace.get(componentId.changeVersion(logItem.tag || logItem.hash));\n const fileInComp = component.filesystem.files.find((f) => f.relative === filePathRelativeInComponent);\n const lastResult = results[results.length - 1];\n const lastHash = lastResult?.fileHash;\n let fileHash: string;\n if (!fileInComp) {\n if (!lastHash) return;\n fileHash = '<REMOVED>';\n } else {\n fileHash = fileInComp.toSourceAsLinuxEOL().hash().toString();\n }\n if (fileHash === lastHash) return;\n\n let diff;\n if (lastFile && fileInComp) {\n diff = await getFilesDiff([lastFile], [fileInComp], logItem.hash, lastResult.hash, undefined);\n }\n\n lastFile = fileInComp;\n\n results.push({\n hash: logItem.hash,\n tag: logItem.tag,\n username: logItem.username,\n email: logItem.email,\n date: logItem.date || '<N/A>',\n message: logItem.message,\n fileDiff: diff?.length ? diff[0].diffOutput : undefined,\n fileHash,\n });\n });\n return results;\n }\n\n private stringifyLogInfoOneLine(logInfo: ComponentLogInfo) {\n const parents = logInfo.parents.length ? `Parent(s): ${logInfo.parents.join(', ')}` : '<N/A>';\n return `${chalk.yellow(logInfo.hash)} ${logInfo.username || ''} ${logInfo.date || ''} ${\n logInfo.message\n }, ${parents}`;\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace]: [CLIMain, Workspace]) {\n const componentLog = new ComponentLogMain(workspace);\n cli.register(new LogCmd(componentLog), new LogFileCmd(componentLog), new BlameCmd(componentLog));\n return componentLog;\n }\n}\n\nComponentLogAspect.addRuntime(ComponentLogMain);\n\nexport type ComponentLogInfo = {\n hash: string;\n message: string;\n onLane?: boolean;\n parents: string[];\n username?: string;\n email?: string;\n date?: string;\n tag?: string;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_componentId","_path","_interopRequireDefault","_moment","_pMap","_workspace","_lodash","_pMapSeries","_toolboxPath","_objects","_legacy","_chalk","_getRemoteByName","_diff","_componentLog","_logCmd","_snapGraph","_logFileCmd","_blameCmd","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ComponentLogMain","constructor","workspace","getLogs","id","options","isRemote","shortHash","shortMessage","consumer","bitId","ComponentID","fromString","remote","getRemoteByName","scope","log","OutsideWorkspaceError","componentId","resolveComponentId","logs","undefined","forEach","date","moment","Date","parseInt","format","message","split","showHidden","filter","l","hidden","getLogsWithParents","graph","buildSnapGraph","sorted","toposort","map","node","stringifyLogInfoOneLine","attr","getChangedFilesFromParent","modelComp","getBitObjectModelComponent","versionObj","getBitObjectVersion","version","firstParent","parents","parentObj","toString","compDir","componentDir","ignoreVersion","results","compact","files","file","parentFile","find","f","relativePath","isEqual","filePath","path","join","hash","parentHash","filesOnParentOnly","length","push","getFileHistoryHashes","getComponentIdByPath","rootDir","filePathAsLinux","pathNormalizeToLinux","filePathRelativeInComponent","replace","pMap","logItem","fileInComp","fileHash","getFileHashFromParent","parent","parentFileInComp","fileHashesFromParent","Promise","all","getParentFileHash","includes","tag","username","email","parentFileHash","parentHashes","p","concurrency","result","onlyParent","parentResult","blame","absPath","isAbsolute","toAbsolutePath","reversedLogs","reverse","getFileContent","source","legacyScope","objects","load","Ref","from","contents","currentLog","currentContentStr","currentContentLines","blameArray","lineContent","index","lineNumber","populateBlameArray","unblamedLineIndices","Set","_","pMapSeries","size","currentHash","parentContentStr","diff","diffLines","removedLines","addedLines","currentLineNum","part","lines","pop","added","has","delete","removed","line","keys","lineNum","previousLineContent","oldestLog","lineIdx","getFileLog","Error","relative","lastFile","component","get","changeVersion","filesystem","lastResult","lastHash","toSourceAsLinuxEOL","getFilesDiff","fileDiff","diffOutput","logInfo","chalk","yellow","provider","cli","componentLog","register","LogCmd","LogFileCmd","BlameCmd","exports","CLIAspect","WorkspaceAspect","MainRuntime","ComponentLogAspect","addRuntime"],"sources":["component-log.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport { LegacyComponentLog as ComponentLog } from '@teambit/legacy-component-log';\nimport path from 'path';\nimport moment from 'moment';\nimport pMap from 'p-map';\nimport { WorkspaceAspect, OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport { Source, Version } from '@teambit/legacy/dist/scope/models';\nimport { pathNormalizeToLinux, PathOsBased, PathOsBasedAbsolute } from '@teambit/toolbox.path.path';\nimport { Ref } from '@teambit/legacy/dist/scope/objects';\nimport { getFilesDiff } from '@teambit/legacy.component-diff';\nimport chalk from 'chalk';\nimport getRemoteByName from '@teambit/legacy/dist/remotes/get-remote-by-name';\nimport { diffLines } from 'diff';\nimport { ComponentLogAspect } from './component-log.aspect';\nimport LogCmd from './log-cmd';\nimport { buildSnapGraph } from './snap-graph';\nimport { LogFileCmd } from './log-file-cmd';\nimport { BlameCmd } from './blame-cmd';\n\nexport type FileLog = {\n hash: string;\n tag?: string;\n username?: string;\n email?: string;\n date: string;\n message: string;\n fileHash: string;\n parentFileHash?: string;\n fileDiff?: string;\n hidden?: boolean;\n parentHashes?: string[];\n};\n\nexport type BlameLineInfo = {\n lineNumber: number;\n lineContent: string;\n previousLineContent?: string;\n username: string;\n email?: string;\n date: string;\n message: string;\n hash: string;\n tag?: string;\n};\n\nexport type LogOpts = {\n isRemote?: boolean;\n shortHash?: boolean;\n shortMessage?: boolean;\n showHidden?: boolean;\n};\n\nexport type FileHashDiffFromParent = {\n filePath: string; // path OS absolute\n hash?: string; // if undefined, the file was deleted in this snap\n parentHash?: string; // if undefined, the file was added in this snap\n};\n\nexport class ComponentLogMain {\n constructor(private workspace: Workspace | undefined) {}\n\n /**\n * get component log sorted by the timestamp in ascending order (from the earliest to the latest)\n */\n async getLogs(id: string, options: LogOpts = {}): Promise<ComponentLog[]> {\n const { isRemote = false, shortHash = false, shortMessage = false } = options;\n if (isRemote) {\n const consumer = this.workspace?.consumer;\n const bitId = ComponentID.fromString(id);\n const remote = await getRemoteByName(bitId.scope as string, consumer);\n return remote.log(bitId);\n }\n if (!this.workspace) throw new OutsideWorkspaceError();\n const componentId = await this.workspace.resolveComponentId(id);\n const logs = await this.workspace.scope.getLogs(componentId, shortHash, undefined, true);\n logs.forEach((log) => {\n log.date = log.date ? moment(new Date(parseInt(log.date))).format('YYYY-MM-DD HH:mm:ss') : undefined;\n log.message = shortMessage ? log.message.split('\\n')[0] : log.message;\n });\n return options.showHidden ? logs : logs.filter((l) => !l.hidden);\n }\n\n async getLogsWithParents(id: string, options: LogOpts) {\n const logs = await this.getLogs(id, options);\n const graph = buildSnapGraph(logs);\n const sorted = graph.toposort();\n return sorted.map((node) => this.stringifyLogInfoOneLine(node.attr));\n }\n\n async getChangedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.resolveComponentId(id);\n const modelComp = await workspace.scope.getBitObjectModelComponent(componentId, true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const versionObj = (await workspace.scope.getBitObjectVersion(modelComp!, componentId.version!, true)) as Version;\n const firstParent = versionObj.parents[0];\n const parentObj = firstParent\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ((await workspace.scope.getBitObjectVersion(modelComp!, firstParent.toString(), true)) as Version)\n : null;\n const compDir = workspace.componentDir(componentId, { ignoreVersion: true });\n const results: FileHashDiffFromParent[] = compact(\n versionObj.files.map((file) => {\n const parentFile = parentObj?.files.find((f) => f.relativePath === file.relativePath);\n if (parentFile?.file.isEqual(file.file)) return null;\n return {\n filePath: path.join(compDir, file.relativePath),\n hash: file.file.toString(),\n parentHash: parentFile?.file.toString(),\n };\n })\n );\n const filesOnParentOnly = (parentObj?.files || []).filter(\n (parentFile) => !versionObj.files.find((file) => file.relativePath === parentFile.relativePath)\n );\n if (filesOnParentOnly.length) {\n results.push(\n ...filesOnParentOnly.map((file) => ({\n filePath: file.relativePath,\n hash: undefined,\n parentHash: file.file.toString(),\n }))\n );\n }\n\n return results;\n }\n\n async getFileHistoryHashes(filePath: PathOsBasedAbsolute): Promise<FileLog[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.getComponentIdByPath(filePath);\n if (!componentId) {\n // filePath could be from the component dir but the file is not part of the bit-component (such as component.json)\n return [];\n }\n\n const rootDir = workspace.componentDir(componentId, undefined);\n\n const logs = await this.getLogs(componentId.toString(), { showHidden: true });\n\n const filePathAsLinux = pathNormalizeToLinux(filePath);\n const filePathRelativeInComponent = filePathAsLinux.replace(`${rootDir}/`, '');\n\n const modelComp = await workspace.scope.getBitObjectModelComponent(componentId);\n if (!modelComp) return []; // probably a new component\n const results: FileLog[] = [];\n await pMap(\n logs,\n async (logItem) => {\n const versionObj = await workspace.scope.getBitObjectVersion(modelComp, logItem.hash, true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const fileInComp = versionObj!.files.find((f) => f.relativePath === filePathRelativeInComponent);\n if (!fileInComp) return;\n const fileHash = fileInComp.file.toString();\n const getFileHashFromParent = async (parent: Ref) => {\n const parentObj = parent\n ? await workspace.scope.getBitObjectVersion(modelComp, parent.toString(), true)\n : undefined;\n\n const parentFileInComp = parentObj\n ? parentObj.files.find((f) => f.relativePath === filePathRelativeInComponent)\n : undefined;\n\n return parentFileInComp?.file.toString();\n };\n const fileHashesFromParent = versionObj ? await Promise.all(versionObj.parents.map(getFileHashFromParent)) : [];\n\n const getParentFileHash = () => {\n if (fileHashesFromParent.length === 0) return undefined;\n if (fileHashesFromParent.length === 1) return fileHashesFromParent[0];\n // if one parent has it, it means that this merge-snap didn't change the file.\n if (fileHashesFromParent.includes(fileHash)) return fileHash;\n return fileHashesFromParent[0];\n };\n\n results.push({\n hash: logItem.hash,\n tag: logItem.tag,\n username: logItem.username,\n email: logItem.email,\n date: logItem.date || '<N/A>',\n message: logItem.message,\n fileHash,\n parentFileHash: getParentFileHash(),\n hidden: logItem.hidden,\n parentHashes: versionObj?.parents.map((p) => p.toString()),\n });\n },\n { concurrency: 100 }\n );\n\n // remove entries that their fileHash is the same as their parent.\n // however, if their parent is hidden, because they're going to be removed, use their parents.\n results.forEach((result) => {\n const parents = result.parentHashes || [];\n if (parents.length !== 1) return;\n const onlyParent = parents[0];\n const parentResult = results.find((r) => r.hash === onlyParent);\n if (parentResult && parentResult.hidden) {\n result.parentFileHash = parentResult.parentFileHash;\n }\n });\n return results.filter((r) => !r.hidden).filter((r) => r.fileHash !== r.parentFileHash);\n }\n\n async blame(filePath: PathOsBased): Promise<BlameLineInfo[]> {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const absPath = path.isAbsolute(filePath) ? filePath : workspace.consumer.toAbsolutePath(filePath);\n const reversedLogs = await this.getFileHistoryHashes(absPath);\n if (!reversedLogs.length) return [];\n // reverse order so it'll be from newer to older\n const logs = reversedLogs.reverse();\n\n const getFileContent = async (hash: string) => {\n const source = (await workspace.scope.legacyScope.objects.load(Ref.from(hash), true)) as Source;\n return source.contents.toString();\n };\n\n // Initialize the blame array with the current file content\n const currentLog = logs[0];\n let currentContentStr = await getFileContent(currentLog.fileHash);\n const currentContentLines = currentContentStr.split('\\n');\n const blameArray: Partial<BlameLineInfo>[] = currentContentLines.map((lineContent, index) => ({\n lineNumber: index + 1,\n lineContent,\n }));\n const populateBlameArray = (lineNumber: number, log: FileLog) => {\n blameArray[lineNumber].username = log.username;\n blameArray[lineNumber].email = log.email;\n blameArray[lineNumber].date = log.date;\n blameArray[lineNumber].message = log.message;\n blameArray[lineNumber].hash = log.hash;\n blameArray[lineNumber].tag = log.tag;\n };\n\n // Keep track of unassigned lines\n const unblamedLineIndices = new Set(blameArray.map((_, index) => index));\n\n await pMapSeries(logs, async (logItem) => {\n if (unblamedLineIndices.size === 0) return; // All lines have been assigned\n\n const currentHash = logItem.fileHash;\n const parentHash = logItem.parentFileHash;\n\n // Skip if there is no parent to compare with\n if (!parentHash) return;\n\n currentContentStr = await getFileContent(currentHash);\n const parentContentStr = await getFileContent(parentHash);\n\n const diff = diffLines(parentContentStr, currentContentStr);\n\n const removedLines: Record<number, string> = {};\n const addedLines: number[] = [];\n\n let currentLineNum = 0;\n\n diff.forEach((part) => {\n const lines = part.value.split('\\n');\n // Remove the last empty line if the string ends with a newline\n if (lines[lines.length - 1] === '') lines.pop();\n\n if (part.added) {\n // Lines added in the current version\n lines.forEach(() => {\n if (unblamedLineIndices.has(currentLineNum)) {\n populateBlameArray(currentLineNum, logItem);\n addedLines.push(currentLineNum);\n unblamedLineIndices.delete(currentLineNum);\n }\n currentLineNum++;\n });\n } else if (part.removed) {\n lines.forEach((line, index) => {\n removedLines[currentLineNum + index] = line;\n });\n // Lines removed from parent version; do not advance currentLineNum\n // Since these lines are not in the current version, we ignore them\n } else {\n // Unchanged lines\n currentLineNum += lines.length;\n }\n });\n Object.keys(removedLines).forEach((lineNum) => {\n if (addedLines.includes(parseInt(lineNum))) {\n blameArray[parseInt(lineNum)].previousLineContent = removedLines[parseInt(lineNum)];\n }\n });\n });\n\n // Assign the oldest log info to any remaining unblamed lines\n const oldestLog = logs[logs.length - 1];\n unblamedLineIndices.forEach((lineIdx) => {\n populateBlameArray(lineIdx, oldestLog);\n });\n\n return blameArray as BlameLineInfo[];\n }\n\n async getFileLog(filePath: string) {\n const workspace = this.workspace;\n if (!workspace) throw new OutsideWorkspaceError();\n const componentId = await workspace.getComponentIdByPath(filePath);\n if (!componentId) throw new Error(`unable to find component for file ${filePath}`);\n\n const rootDir = workspace.componentDir(componentId, undefined, { relative: true });\n\n const logs = await this.getLogs(componentId.toString());\n\n const filePathAsLinux = pathNormalizeToLinux(filePath);\n const filePathRelativeInComponent = filePathAsLinux.replace(`${rootDir}/`, '');\n\n const results: FileLog[] = [];\n let lastFile;\n await pMapSeries(logs, async (logItem) => {\n const component = await workspace.get(componentId.changeVersion(logItem.tag || logItem.hash));\n const fileInComp = component.filesystem.files.find((f) => f.relative === filePathRelativeInComponent);\n const lastResult = results[results.length - 1];\n const lastHash = lastResult?.fileHash;\n let fileHash: string;\n if (!fileInComp) {\n if (!lastHash) return;\n fileHash = '<REMOVED>';\n } else {\n fileHash = fileInComp.toSourceAsLinuxEOL().hash().toString();\n }\n if (fileHash === lastHash) return;\n\n let diff;\n if (lastFile && fileInComp) {\n diff = await getFilesDiff([lastFile], [fileInComp], logItem.hash, lastResult.hash, undefined);\n }\n\n lastFile = fileInComp;\n\n results.push({\n hash: logItem.hash,\n tag: logItem.tag,\n username: logItem.username,\n email: logItem.email,\n date: logItem.date || '<N/A>',\n message: logItem.message,\n fileDiff: diff?.length ? diff[0].diffOutput : undefined,\n fileHash,\n });\n });\n return results;\n }\n\n private stringifyLogInfoOneLine(logInfo: ComponentLogInfo) {\n const parents = logInfo.parents.length ? `Parent(s): ${logInfo.parents.join(', ')}` : '<N/A>';\n return `${chalk.yellow(logInfo.hash)} ${logInfo.username || ''} ${logInfo.date || ''} ${\n logInfo.message\n }, ${parents}`;\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace]: [CLIMain, Workspace]) {\n const componentLog = new ComponentLogMain(workspace);\n cli.register(new LogCmd(componentLog), new LogFileCmd(componentLog), new BlameCmd(componentLog));\n return componentLog;\n }\n}\n\nComponentLogAspect.addRuntime(ComponentLogMain);\n\nexport type ComponentLogInfo = {\n hash: string;\n message: string;\n onLane?: boolean;\n parents: string[];\n username?: string;\n email?: string;\n date?: string;\n tag?: string;\n};\n"],"mappings":"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","ignoreList":[]}
package/dist/log-cmd.d.ts CHANGED
@@ -2,6 +2,14 @@ import Table from 'cli-table';
2
2
  import { Command, CommandOptions } from '@teambit/cli';
3
3
  import { LegacyComponentLog } from '@teambit/legacy-component-log';
4
4
  import { ComponentLogMain } from './component-log.main.runtime';
5
+ type LogFlags = {
6
+ remote?: boolean;
7
+ parents?: boolean;
8
+ oneLine?: boolean;
9
+ fullHash?: boolean;
10
+ fullMessage?: boolean;
11
+ showHidden?: boolean;
12
+ };
5
13
  export default class LogCmd implements Command {
6
14
  private componentLog;
7
15
  name: string;
@@ -18,17 +26,8 @@ export default class LogCmd implements Command {
18
26
  description: string;
19
27
  }[];
20
28
  constructor(componentLog: ComponentLogMain);
21
- report([id]: [string], { remote, parents, oneLine, fullHash, fullMessage, }: {
22
- remote: boolean;
23
- parents: boolean;
24
- oneLine?: boolean;
25
- fullHash?: boolean;
26
- fullMessage?: boolean;
27
- }): Promise<string>;
28
- json([id]: [string], { remote, parents }: {
29
- remote: boolean;
30
- parents: boolean;
31
- }): Promise<string[] | LegacyComponentLog[]>;
29
+ report([id]: [string], { remote, parents, oneLine, fullHash, fullMessage, showHidden }: LogFlags): Promise<string>;
30
+ json([id]: [string], { remote, parents, oneLine, fullHash, fullMessage, showHidden }: LogFlags): Promise<string[] | LegacyComponentLog[]>;
32
31
  }
33
32
  export declare function paintAuthor(email: string | null | undefined, username: string | null | undefined): string;
34
33
  /**
@@ -39,3 +38,4 @@ export declare function getEmptyTableWithoutStyle(): Table<string[] | {
39
38
  } | {
40
39
  [x: string]: string[];
41
40
  }>;
41
+ export {};
package/dist/log-cmd.js CHANGED
@@ -33,7 +33,7 @@ class LogCmd {
33
33
  _defineProperty(this, "extendedDescription", void 0);
34
34
  _defineProperty(this, "group", 'info');
35
35
  _defineProperty(this, "alias", '');
36
- _defineProperty(this, "options", [['r', 'remote', 'show log of a remote component'], ['', 'parents', 'show parents and lanes data'], ['o', 'one-line', 'show each log entry in one line'], ['f', 'full-hash', 'show full hash of the snap (default to the first 9 characters for --one-line/--parents flags)'], ['m', 'full-message', 'show full message of the snap (default to the first line for --one-line/--parents flags)'], ['j', 'json', 'json format']]);
36
+ _defineProperty(this, "options", [['r', 'remote', 'show log of a remote component'], ['', 'parents', 'show parents and lanes data'], ['o', 'one-line', 'show each log entry in one line'], ['f', 'full-hash', 'show full hash of the snap (default to the first 9 characters for --one-line/--parents flags)'], ['m', 'full-message', 'show full message of the snap (default to the first line for --one-line/--parents flags)'], ['', 'show-hidden', 'show hidden snaps (snaps are marked as hidden typically when the following tag has the same files/config)'], ['j', 'json', 'json format']]);
37
37
  _defineProperty(this, "remoteOp", true);
38
38
  // should support log against remote
39
39
  _defineProperty(this, "skipWorkspace", true);
@@ -47,17 +47,24 @@ class LogCmd {
47
47
  parents = false,
48
48
  oneLine = false,
49
49
  fullHash = false,
50
- fullMessage
50
+ fullMessage,
51
+ showHidden
51
52
  }) {
52
53
  if (!parents && !oneLine) {
53
54
  fullHash = true;
54
55
  fullMessage = true;
55
56
  }
57
+ const logOpts = {
58
+ isRemote: remote,
59
+ shortHash: !fullHash,
60
+ shortMessage: !fullMessage,
61
+ showHidden
62
+ };
56
63
  if (parents) {
57
- const logs = await this.componentLog.getLogsWithParents(id, fullHash, fullMessage);
64
+ const logs = await this.componentLog.getLogsWithParents(id, logOpts);
58
65
  return logs.join('\n');
59
66
  }
60
- const logs = await this.componentLog.getLogs(id, remote, !fullHash, !fullMessage);
67
+ const logs = await this.componentLog.getLogs(id, logOpts);
61
68
  if (oneLine) {
62
69
  return logOneLine(logs.reverse());
63
70
  }
@@ -66,12 +73,26 @@ class LogCmd {
66
73
  }
67
74
  async json([id], {
68
75
  remote = false,
69
- parents = false
76
+ parents = false,
77
+ oneLine = false,
78
+ fullHash = false,
79
+ fullMessage,
80
+ showHidden
70
81
  }) {
82
+ if (!parents && !oneLine) {
83
+ fullHash = true;
84
+ fullMessage = true;
85
+ }
86
+ const logOpts = {
87
+ isRemote: remote,
88
+ shortHash: !fullHash,
89
+ shortMessage: !fullMessage,
90
+ showHidden
91
+ };
71
92
  if (parents) {
72
- return this.componentLog.getLogsWithParents(id);
93
+ return this.componentLog.getLogsWithParents(id, logOpts);
73
94
  }
74
- return this.componentLog.getLogs(id, remote);
95
+ return this.componentLog.getLogs(id, logOpts);
75
96
  }
76
97
  }
77
98
  exports.default = LogCmd;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_cliTable","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LogCmd","constructor","componentLog","name","description","report","id","remote","parents","oneLine","fullHash","fullMessage","logs","getLogsWithParents","join","getLogs","logOneLine","reverse","map","paintLog","json","exports","paintAuthor","email","username","c","white","log","message","date","tag","hash","deleted","deprecated","deletedStr","red","deprecatedStr","yellow","title","getEmptyTableWithoutStyle","Table","chars","top","bottom","left","mid","right","middle","style","table","push","toString"],"sources":["log-cmd.ts"],"sourcesContent":["import c from 'chalk';\nimport Table from 'cli-table';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { ComponentLogMain } from './component-log.main.runtime';\n\nexport default class LogCmd implements Command {\n name = 'log <id>';\n description = 'show components(s) version history';\n helpUrl = 'reference/components/navigating-history';\n extendedDescription: string;\n group = 'info';\n alias = '';\n options = [\n ['r', 'remote', 'show log of a remote component'],\n ['', 'parents', 'show parents and lanes data'],\n ['o', 'one-line', 'show each log entry in one line'],\n ['f', 'full-hash', 'show full hash of the snap (default to the first 9 characters for --one-line/--parents flags)'],\n ['m', 'full-message', 'show full message of the snap (default to the first line for --one-line/--parents flags)'],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true; // should support log against remote\n skipWorkspace = true;\n arguments = [{ name: 'id', description: 'component-id or component-name' }];\n\n constructor(private componentLog: ComponentLogMain) {}\n\n async report(\n [id]: [string],\n {\n remote = false,\n parents = false,\n oneLine = false,\n fullHash = false,\n fullMessage,\n }: { remote: boolean; parents: boolean; oneLine?: boolean; fullHash?: boolean; fullMessage?: boolean }\n ) {\n if (!parents && !oneLine) {\n fullHash = true;\n fullMessage = true;\n }\n if (parents) {\n const logs = await this.componentLog.getLogsWithParents(id, fullHash, fullMessage);\n return logs.join('\\n');\n }\n const logs = await this.componentLog.getLogs(id, remote, !fullHash, !fullMessage);\n if (oneLine) {\n return logOneLine(logs.reverse());\n }\n // reverse to show from the latest to earliest\n return logs.reverse().map(paintLog).join('\\n');\n }\n\n async json([id]: [string], { remote = false, parents = false }: { remote: boolean; parents: boolean }) {\n if (parents) {\n return this.componentLog.getLogsWithParents(id);\n }\n return this.componentLog.getLogs(id, remote);\n }\n}\n\nexport function paintAuthor(email: string | null | undefined, username: string | null | undefined) {\n if (email && username) {\n return c.white(`author: ${username} <${email}>\\n`);\n }\n if (email && !username) {\n return c.white(`author: <${email}>\\n`);\n }\n if (!email && username) {\n return c.white(`author: ${username}\\n`);\n }\n\n return '';\n}\n\nfunction paintLog(log: LegacyComponentLog): string {\n const { message, date, tag, hash, username, email, deleted, deprecated } = log;\n const deletedStr = deleted ? c.red(' [deleted]') : '';\n const deprecatedStr = !deleted && deprecated ? c.yellow(' [deprecated]') : '';\n const title = tag ? `tag ${tag} (${hash})${deletedStr}${deprecatedStr}\\n` : `snap ${hash}\\n`;\n return (\n c.yellow(title) +\n paintAuthor(email, username) +\n (date ? c.white(`date: ${date}\\n`) : '') +\n (message ? c.white(`\\n ${message}\\n`) : '')\n );\n}\n\n/**\n * table with no style and no borders, just to align the columns.\n */\nexport function getEmptyTableWithoutStyle() {\n return new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n middle: ' ',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n });\n}\n\nfunction logOneLine(logs: LegacyComponentLog[]) {\n const table = getEmptyTableWithoutStyle();\n\n logs.map(({ hash, tag, username, date, message }) =>\n table.push([hash, tag || '', username || '', date || '', message || ''])\n );\n\n return table.toString();\n}\n"],"mappings":";;;;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAKf,MAAMgB,MAAM,CAAoB;EAmB7CC,WAAWA,CAASC,YAA8B,EAAE;IAAA,KAAhCA,YAA8B,GAA9BA,YAA8B;IAAApB,eAAA,eAlB3C,UAAU;IAAAA,eAAA,sBACH,oCAAoC;IAAAA,eAAA,kBACxC,yCAAyC;IAAAA,eAAA;IAAAA,eAAA,gBAE3C,MAAM;IAAAA,eAAA,gBACN,EAAE;IAAAA,eAAA,kBACA,CACR,CAAC,GAAG,EAAE,QAAQ,EAAE,gCAAgC,CAAC,EACjD,CAAC,EAAE,EAAE,SAAS,EAAE,6BAA6B,CAAC,EAC9C,CAAC,GAAG,EAAE,UAAU,EAAE,iCAAiC,CAAC,EACpD,CAAC,GAAG,EAAE,WAAW,EAAE,+FAA+F,CAAC,EACnH,CAAC,GAAG,EAAE,cAAc,EAAE,0FAA0F,CAAC,EACjH,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAC7B;IAAAA,eAAA,mBACU,IAAI;IAAE;IAAAA,eAAA,wBACD,IAAI;IAAAA,eAAA,oBACR,CAAC;MAAEqB,IAAI,EAAE,IAAI;MAAEC,WAAW,EAAE;IAAiC,CAAC,CAAC;EAEtB;EAErD,MAAMC,MAAMA,CACV,CAACC,EAAE,CAAW,EACd;IACEC,MAAM,GAAG,KAAK;IACdC,OAAO,GAAG,KAAK;IACfC,OAAO,GAAG,KAAK;IACfC,QAAQ,GAAG,KAAK;IAChBC;EACmG,CAAC,EACtG;IACA,IAAI,CAACH,OAAO,IAAI,CAACC,OAAO,EAAE;MACxBC,QAAQ,GAAG,IAAI;MACfC,WAAW,GAAG,IAAI;IACpB;IACA,IAAIH,OAAO,EAAE;MACX,MAAMI,IAAI,GAAG,MAAM,IAAI,CAACV,YAAY,CAACW,kBAAkB,CAACP,EAAE,EAAEI,QAAQ,EAAEC,WAAW,CAAC;MAClF,OAAOC,IAAI,CAACE,IAAI,CAAC,IAAI,CAAC;IACxB;IACA,MAAMF,IAAI,GAAG,MAAM,IAAI,CAACV,YAAY,CAACa,OAAO,CAACT,EAAE,EAAEC,MAAM,EAAE,CAACG,QAAQ,EAAE,CAACC,WAAW,CAAC;IACjF,IAAIF,OAAO,EAAE;MACX,OAAOO,UAAU,CAACJ,IAAI,CAACK,OAAO,CAAC,CAAC,CAAC;IACnC;IACA;IACA,OAAOL,IAAI,CAACK,OAAO,CAAC,CAAC,CAACC,GAAG,CAACC,QAAQ,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;EAChD;EAEA,MAAMM,IAAIA,CAAC,CAACd,EAAE,CAAW,EAAE;IAAEC,MAAM,GAAG,KAAK;IAAEC,OAAO,GAAG;EAA6C,CAAC,EAAE;IACrG,IAAIA,OAAO,EAAE;MACX,OAAO,IAAI,CAACN,YAAY,CAACW,kBAAkB,CAACP,EAAE,CAAC;IACjD;IACA,OAAO,IAAI,CAACJ,YAAY,CAACa,OAAO,CAACT,EAAE,EAAEC,MAAM,CAAC;EAC9C;AACF;AAACc,OAAA,CAAAxC,OAAA,GAAAmB,MAAA;AAEM,SAASsB,WAAWA,CAACC,KAAgC,EAAEC,QAAmC,EAAE;EACjG,IAAID,KAAK,IAAIC,QAAQ,EAAE;IACrB,OAAOC,gBAAC,CAACC,KAAK,CAAC,WAAWF,QAAQ,KAAKD,KAAK,KAAK,CAAC;EACpD;EACA,IAAIA,KAAK,IAAI,CAACC,QAAQ,EAAE;IACtB,OAAOC,gBAAC,CAACC,KAAK,CAAC,YAAYH,KAAK,KAAK,CAAC;EACxC;EACA,IAAI,CAACA,KAAK,IAAIC,QAAQ,EAAE;IACtB,OAAOC,gBAAC,CAACC,KAAK,CAAC,WAAWF,QAAQ,IAAI,CAAC;EACzC;EAEA,OAAO,EAAE;AACX;AAEA,SAASL,QAAQA,CAACQ,GAAuB,EAAU;EACjD,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC,GAAG;IAAEC,IAAI;IAAEP,QAAQ;IAAED,KAAK;IAAES,OAAO;IAAEC;EAAW,CAAC,GAAGN,GAAG;EAC9E,MAAMO,UAAU,GAAGF,OAAO,GAAGP,gBAAC,CAACU,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;EACrD,MAAMC,aAAa,GAAG,CAACJ,OAAO,IAAIC,UAAU,GAAGR,gBAAC,CAACY,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE;EAC7E,MAAMC,KAAK,GAAGR,GAAG,GAAG,OAAOA,GAAG,KAAKC,IAAI,IAAIG,UAAU,GAAGE,aAAa,IAAI,GAAG,QAAQL,IAAI,IAAI;EAC5F,OACEN,gBAAC,CAACY,MAAM,CAACC,KAAK,CAAC,GACfhB,WAAW,CAACC,KAAK,EAAEC,QAAQ,CAAC,IAC3BK,IAAI,GAAGJ,gBAAC,CAACC,KAAK,CAAC,SAASG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IACvCD,OAAO,GAAGH,gBAAC,CAACC,KAAK,CAAC,WAAWE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AAEpD;;AAEA;AACA;AACA;AACO,SAASW,yBAAyBA,CAAA,EAAG;EAC1C,OAAO,KAAIC,mBAAK,EAAC;IACfC,KAAK,EAAE;MACLC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACb,UAAU,EAAE,EAAE;MACd,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE,EAAE;MACV,YAAY,EAAE,EAAE;MAChB,aAAa,EAAE,EAAE;MACjB,cAAc,EAAE,EAAE;MAClBC,IAAI,EAAE,EAAE;MACR,UAAU,EAAE,EAAE;MACdC,GAAG,EAAE,EAAE;MACP,SAAS,EAAE,EAAE;MACbC,KAAK,EAAE,EAAE;MACT,WAAW,EAAE,EAAE;MACfC,MAAM,EAAE;IACV,CAAC;IACDC,KAAK,EAAE;MAAE,cAAc,EAAE,CAAC;MAAE,eAAe,EAAE;IAAE;EACjD,CAAC,CAAC;AACJ;AAEA,SAAShC,UAAUA,CAACJ,IAA0B,EAAE;EAC9C,MAAMqC,KAAK,GAAGV,yBAAyB,CAAC,CAAC;EAEzC3B,IAAI,CAACM,GAAG,CAAC,CAAC;IAAEa,IAAI;IAAED,GAAG;IAAEN,QAAQ;IAAEK,IAAI;IAAED;EAAQ,CAAC,KAC9CqB,KAAK,CAACC,IAAI,CAAC,CAACnB,IAAI,EAAED,GAAG,IAAI,EAAE,EAAEN,QAAQ,IAAI,EAAE,EAAEK,IAAI,IAAI,EAAE,EAAED,OAAO,IAAI,EAAE,CAAC,CACzE,CAAC;EAED,OAAOqB,KAAK,CAACE,QAAQ,CAAC,CAAC;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_cliTable","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LogCmd","constructor","componentLog","name","description","report","id","remote","parents","oneLine","fullHash","fullMessage","showHidden","logOpts","isRemote","shortHash","shortMessage","logs","getLogsWithParents","join","getLogs","logOneLine","reverse","map","paintLog","json","exports","paintAuthor","email","username","c","white","log","message","date","tag","hash","deleted","deprecated","deletedStr","red","deprecatedStr","yellow","title","getEmptyTableWithoutStyle","Table","chars","top","bottom","left","mid","right","middle","style","table","push","toString"],"sources":["log-cmd.ts"],"sourcesContent":["import c from 'chalk';\nimport Table from 'cli-table';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { ComponentLogMain, LogOpts } from './component-log.main.runtime';\n\ntype LogFlags = {\n remote?: boolean;\n parents?: boolean;\n oneLine?: boolean;\n fullHash?: boolean;\n fullMessage?: boolean;\n showHidden?: boolean;\n};\nexport default class LogCmd implements Command {\n name = 'log <id>';\n description = 'show components(s) version history';\n helpUrl = 'reference/components/navigating-history';\n extendedDescription: string;\n group = 'info';\n alias = '';\n options = [\n ['r', 'remote', 'show log of a remote component'],\n ['', 'parents', 'show parents and lanes data'],\n ['o', 'one-line', 'show each log entry in one line'],\n ['f', 'full-hash', 'show full hash of the snap (default to the first 9 characters for --one-line/--parents flags)'],\n ['m', 'full-message', 'show full message of the snap (default to the first line for --one-line/--parents flags)'],\n [\n '',\n 'show-hidden',\n 'show hidden snaps (snaps are marked as hidden typically when the following tag has the same files/config)',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true; // should support log against remote\n skipWorkspace = true;\n arguments = [{ name: 'id', description: 'component-id or component-name' }];\n\n constructor(private componentLog: ComponentLogMain) {}\n\n async report(\n [id]: [string],\n { remote = false, parents = false, oneLine = false, fullHash = false, fullMessage, showHidden }: LogFlags\n ) {\n if (!parents && !oneLine) {\n fullHash = true;\n fullMessage = true;\n }\n const logOpts: LogOpts = { isRemote: remote, shortHash: !fullHash, shortMessage: !fullMessage, showHidden };\n if (parents) {\n const logs = await this.componentLog.getLogsWithParents(id, logOpts);\n return logs.join('\\n');\n }\n const logs = await this.componentLog.getLogs(id, logOpts);\n if (oneLine) {\n return logOneLine(logs.reverse());\n }\n // reverse to show from the latest to earliest\n return logs.reverse().map(paintLog).join('\\n');\n }\n\n async json(\n [id]: [string],\n { remote = false, parents = false, oneLine = false, fullHash = false, fullMessage, showHidden }: LogFlags\n ) {\n if (!parents && !oneLine) {\n fullHash = true;\n fullMessage = true;\n }\n const logOpts: LogOpts = { isRemote: remote, shortHash: !fullHash, shortMessage: !fullMessage, showHidden };\n if (parents) {\n return this.componentLog.getLogsWithParents(id, logOpts);\n }\n return this.componentLog.getLogs(id, logOpts);\n }\n}\n\nexport function paintAuthor(email: string | null | undefined, username: string | null | undefined) {\n if (email && username) {\n return c.white(`author: ${username} <${email}>\\n`);\n }\n if (email && !username) {\n return c.white(`author: <${email}>\\n`);\n }\n if (!email && username) {\n return c.white(`author: ${username}\\n`);\n }\n\n return '';\n}\n\nfunction paintLog(log: LegacyComponentLog): string {\n const { message, date, tag, hash, username, email, deleted, deprecated } = log;\n const deletedStr = deleted ? c.red(' [deleted]') : '';\n const deprecatedStr = !deleted && deprecated ? c.yellow(' [deprecated]') : '';\n const title = tag ? `tag ${tag} (${hash})${deletedStr}${deprecatedStr}\\n` : `snap ${hash}\\n`;\n return (\n c.yellow(title) +\n paintAuthor(email, username) +\n (date ? c.white(`date: ${date}\\n`) : '') +\n (message ? c.white(`\\n ${message}\\n`) : '')\n );\n}\n\n/**\n * table with no style and no borders, just to align the columns.\n */\nexport function getEmptyTableWithoutStyle() {\n return new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n middle: ' ',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n });\n}\n\nfunction logOneLine(logs: LegacyComponentLog[]) {\n const table = getEmptyTableWithoutStyle();\n\n logs.map(({ hash, tag, username, date, message }) =>\n table.push([hash, tag || '', username || '', date || '', message || ''])\n );\n\n return table.toString();\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component-log@1.0.449/dist/component-log.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component-log@1.0.449/dist/component-log.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component-log@1.0.450/dist/component-log.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component-log@1.0.450/dist/component-log.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/component-log",
3
- "version": "1.0.449",
3
+ "version": "1.0.450",
4
4
  "homepage": "https://bit.cloud/teambit/component/component-log",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "component-log",
9
- "version": "1.0.449"
9
+ "version": "1.0.450"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -19,11 +19,11 @@
19
19
  "@teambit/harmony": "0.4.6",
20
20
  "@teambit/component-id": "1.2.2",
21
21
  "@teambit/graph.cleargraph": "0.0.11",
22
- "@teambit/cli": "0.0.1026",
23
- "@teambit/legacy-component-log": "0.0.403",
24
- "@teambit/legacy.component-diff": "0.0.42",
22
+ "@teambit/cli": "0.0.1027",
23
+ "@teambit/legacy-component-log": "0.0.404",
24
+ "@teambit/legacy.component-diff": "0.0.43",
25
25
  "@teambit/toolbox.path.path": "0.0.4",
26
- "@teambit/workspace": "1.0.449"
26
+ "@teambit/workspace": "1.0.450"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/diff": "^5.2.3",