@teambit/api-server 0.0.0-e3232e4066bc729b21f6de5e996e8edd79fcb040 → 0.0.0-e33fc5cfc5b4417b60bb13403577a6fac1dde381

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.
@@ -19,13 +19,42 @@ import type { ScopeMain } from '@teambit/scope';
19
19
  import type { ComponentMain, ComponentMap } from '@teambit/component';
20
20
  import type { SchemaMain } from '@teambit/schema';
21
21
  import type { Logger } from '@teambit/logger';
22
+ type LaneDiffForIDEResult = {
23
+ newCompsFrom: string[];
24
+ newCompsTo: string[];
25
+ compsWithDiff: {
26
+ id: string;
27
+ hasDiff: boolean;
28
+ filesDiff: {
29
+ filePath: string;
30
+ status: string;
31
+ fromContent?: string;
32
+ toContent?: string;
33
+ }[];
34
+ fieldsDiff?: {
35
+ fieldName: string;
36
+ diffOutput: string;
37
+ }[] | null;
38
+ }[];
39
+ compsWithNoChanges: string[];
40
+ toLaneName: string;
41
+ fromLaneName: string;
42
+ failures: {
43
+ id: string;
44
+ msg: string;
45
+ }[];
46
+ };
22
47
  type PathLinux = string;
23
48
  type PathFromLastSnap = {
24
49
  [relativeToWorkspace: PathLinux]: string;
25
50
  };
51
+ type ObjectPathsFromLastSnap = {
52
+ [relativeToWorkspace: PathLinux]: string;
53
+ };
26
54
  type InitSCMEntry = {
27
55
  filesStatus: FilesStatus;
28
56
  pathsFromLastSnap: PathFromLastSnap;
57
+ objectPathsFromLastSnap: ObjectPathsFromLastSnap;
29
58
  compDir: PathLinux;
30
59
  };
31
60
  type DataToInitSCM = {
@@ -141,6 +170,9 @@ export declare class APIForIDE {
141
170
  getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles: CompFiles): Promise<{
142
171
  [relativePath: string]: string;
143
172
  }>;
173
+ getCompFileObjectPathsFromLastSnap(compFiles: CompFiles): {
174
+ [relativePath: string]: string;
175
+ };
144
176
  warmWorkspaceCache(): Promise<void>;
145
177
  clearCache(): Promise<void>;
146
178
  install(options?: {}, packages?: string[]): Promise<ComponentMap<string>>;
@@ -171,11 +203,28 @@ export declare class APIForIDE {
171
203
  }>;
172
204
  private adjustCheckoutResultsToIde;
173
205
  getModifiedByConfig(): Promise<ModifiedByConfig[]>;
174
- getDataToInitSCM(): Promise<DataToInitSCM>;
206
+ getDataToInitSCM(options?: {
207
+ useHashes?: boolean;
208
+ }): Promise<DataToInitSCM>;
175
209
  getFilesStatus(id: string): Promise<FilesStatus>;
176
210
  getCompFilesDirPathFromLastSnapForAllComps(): Promise<{
177
211
  [relativePath: string]: string;
178
212
  }>;
213
+ getLaneHistoryForIDE(laneName?: string): Promise<{
214
+ entries: {
215
+ id: string;
216
+ date: string;
217
+ username: string | undefined;
218
+ email: string | undefined;
219
+ message: string | undefined;
220
+ components: string[];
221
+ deleted: string[] | undefined;
222
+ }[];
223
+ isMain: boolean;
224
+ }>;
225
+ getLaneHistoryDiffForIDE(fromHistoryId: string, toHistoryId: string, laneName?: string): Promise<LaneDiffForIDEResult>;
226
+ getLaneDiffForIDE(): Promise<LaneDiffForIDEResult>;
227
+ private toLaneDiffForIDEResult;
179
228
  getCurrentLaneName(includeScope?: boolean): string;
180
229
  tagOrSnap(message?: string): Promise<import("@teambit/snapping").TagResults | import("@teambit/snapping").SnapResults | null>;
181
230
  tag(message?: string): Promise<string[]>;
@@ -81,6 +81,13 @@ function _componentModules() {
81
81
  };
82
82
  return data;
83
83
  }
84
+ function _lanesModules() {
85
+ const data = require("@teambit/lanes.modules.diff");
86
+ _lanesModules = function () {
87
+ return data;
88
+ };
89
+ return data;
90
+ }
84
91
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
85
92
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
86
93
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -390,6 +397,15 @@ class APIForIDE {
390
397
  }));
391
398
  return results;
392
399
  }
400
+ getCompFileObjectPathsFromLastSnap(compFiles) {
401
+ if (!compFiles.id.hasVersion()) return {}; // it's a new component.
402
+ const repo = this.workspace.scope.legacyScope.objects;
403
+ const results = {};
404
+ for (const modelFile of compFiles.modelFiles) {
405
+ results[(0, _legacy().pathJoinLinux)(compFiles.compDir, modelFile.relativePath)] = repo.objectPath(modelFile.file);
406
+ }
407
+ return results;
408
+ }
393
409
  async warmWorkspaceCache() {
394
410
  await this.workspace.warmCache();
395
411
  }
@@ -520,16 +536,25 @@ class APIForIDE {
520
536
  }));
521
537
  return (0, _lodash().compact)(results);
522
538
  }
523
- async getDataToInitSCM() {
539
+ async getDataToInitSCM(options) {
540
+ const useHashes = options?.useHashes;
541
+ if (useHashes) {
542
+ // clean up old materialized files since hash-based reads don't need them
543
+ const lastSnapDir = _path().default.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR);
544
+ await _fsExtra().default.remove(lastSnapDir);
545
+ }
524
546
  const ids = this.workspace.listIds();
525
547
  const results = {};
526
548
  await (0, _pMap().default)(ids, async id => {
527
549
  const compFiles = await this.workspace.getFilesModification(id);
528
- const pathsFromLastSnap = await this.getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles);
550
+ // only compute object paths when the extension supports direct object reads, otherwise materialize files to disk
551
+ const objectPathsFromLastSnap = useHashes ? this.getCompFileObjectPathsFromLastSnap(compFiles) : {};
552
+ const pathsFromLastSnap = useHashes ? {} : await this.getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles);
529
553
  const idStr = id.toStringWithoutVersion();
530
554
  results[idStr] = {
531
555
  filesStatus: compFiles.getFilesStatus(),
532
556
  pathsFromLastSnap,
557
+ objectPathsFromLastSnap,
533
558
  compDir: compFiles.compDir
534
559
  };
535
560
  }, {
@@ -554,6 +579,81 @@ class APIForIDE {
554
579
  });
555
580
  return results;
556
581
  }
582
+ async getLaneHistoryForIDE(laneName) {
583
+ const laneId = laneName ? await this.lanes.parseLaneId(laneName) : this.workspace.getCurrentLaneId();
584
+ if (laneId.isDefault()) {
585
+ return {
586
+ entries: [],
587
+ isMain: true
588
+ };
589
+ }
590
+ await this.lanes.importLaneHistory(laneId);
591
+ const laneHistory = await this.lanes.getLaneHistory(laneId);
592
+ const historyIds = laneHistory.getHistoryIds();
593
+ const history = laneHistory.getHistory();
594
+ const entries = historyIds.map(id => {
595
+ const item = history[id];
596
+ return {
597
+ id,
598
+ date: item.log.date,
599
+ username: item.log.username,
600
+ email: item.log.email,
601
+ message: item.log.message,
602
+ components: item.components,
603
+ deleted: item.deleted
604
+ };
605
+ });
606
+ return {
607
+ entries,
608
+ isMain: false
609
+ };
610
+ }
611
+ async getLaneHistoryDiffForIDE(fromHistoryId, toHistoryId, laneName) {
612
+ const laneId = laneName ? await this.lanes.parseLaneId(laneName) : this.workspace.getCurrentLaneId();
613
+ if (laneId.isDefault()) {
614
+ throw new Error('lane history diff is not available on main');
615
+ }
616
+ await this.lanes.importLaneHistory(laneId);
617
+ const laneHistory = await this.lanes.getLaneHistory(laneId);
618
+ const laneObj = await this.lanes.loadLane(laneId);
619
+ if (!laneObj) throw new Error(`unable to find lane "${laneId.toString()}"`);
620
+ const diffGenerator = new (_lanesModules().LaneDiffGenerator)(this.workspace, this.scope, this.componentCompare);
621
+ const diffResults = await diffGenerator.generateDiffHistory(laneObj, laneHistory, fromHistoryId, toHistoryId);
622
+ return this.toLaneDiffForIDEResult(diffResults);
623
+ }
624
+ async getLaneDiffForIDE() {
625
+ const currentLaneId = this.workspace.getCurrentLaneId();
626
+ if (currentLaneId.isDefault()) {
627
+ throw new Error('lane diff is not available on main');
628
+ }
629
+ const diffGenerator = new (_lanesModules().LaneDiffGenerator)(this.workspace, this.scope, this.componentCompare);
630
+ const diffResults = await diffGenerator.generate([]);
631
+ return this.toLaneDiffForIDEResult(diffResults);
632
+ }
633
+ toLaneDiffForIDEResult(diffResults) {
634
+ return {
635
+ newCompsFrom: diffResults.newCompsFrom,
636
+ newCompsTo: diffResults.newCompsTo,
637
+ compsWithDiff: diffResults.compsWithDiff.map(d => ({
638
+ id: d.id.toString(),
639
+ hasDiff: d.hasDiff,
640
+ filesDiff: (d.filesDiff || []).map(f => ({
641
+ filePath: f.filePath,
642
+ status: f.status,
643
+ fromContent: f.status === 'UNCHANGED' ? undefined : f.fromContent,
644
+ toContent: f.status === 'UNCHANGED' ? undefined : f.toContent
645
+ })),
646
+ fieldsDiff: d.fieldsDiff
647
+ })),
648
+ compsWithNoChanges: diffResults.compsWithNoChanges,
649
+ toLaneName: diffResults.toLaneName,
650
+ fromLaneName: diffResults.fromLaneName,
651
+ failures: diffResults.failures.map(f => ({
652
+ id: f.id.toString(),
653
+ msg: f.msg
654
+ }))
655
+ };
656
+ }
557
657
  getCurrentLaneName(includeScope = false) {
558
658
  const currentLaneId = this.workspace.getCurrentLaneId();
559
659
  if (!includeScope) return currentLaneId.name;
@@ -1 +1 @@
1
- {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_filenamify","_legacy","_pMap","_legacy2","_lodash","_laneId","_nodeFetch","_scope","_componentModules","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FILES_HISTORY_DIR","ENV_ICONS_DIR","LAST_SNAP_DIR","CMD_HISTORY","APIForIDE","constructor","workspace","snapping","lanes","installer","exporter","checkout","componentLog","componentCompare","generator","remove","config","application","deprecation","envs","graph","scope","component","schema","logger","logStartCmdHistory","op","str","writeToCmdHistory","logFinishCmdHistory","code","endStr","getProcessPid","process","pid","fs","appendFile","path","join","Date","toISOString","listIdsWithPaths","ids","listIds","reduce","acc","id","toStringWithoutVersion","componentDir","getMainFilePath","compId","resolveComponentId","comp","get","state","_consumer","mainFile","getWorkspaceHistory","current","bitMap","getPath","bitmapHistoryDir","consumer","getBitmapHistoryDir","historyPaths","readdir","historyMetadata","getParsedBitmapHistoryMetadata","history","map","historyPath","fileName","basename","fileId","replace","reason","historySorted","sort","a","b","fileIdToTimestamp","getConfigHistory","workspaceConfig","Error","configHistoryDir","getBackupHistoryDir","getParsedHistoryMetadata","getBackupMetadataFilePath","importLane","laneName","skipDependencyInstallation","results","switchLanes","components","c","toString","getCurrentLaneObject","currentLane","getCurrentLane","undefined","head","name","log","isNew","forkedFrom","listLanes","getLanes","showDefaultLane","createLane","includes","LANE_REMOTE_DELIMITER","laneId","LaneId","parse","getCompsMetadata","comps","list","apps","listAppsIdsAndNames","pMap","deprecationInfo","getDeprecationInfo","foundApp","find","app","env","getEnv","isDeprecated","isDeprecate","appName","icon","concurrency","allIcons","uniq","compact","iconsMap","getEnvIconsMapFetchIfMissing","localIconPath","getEnvIconsFullPath","getExistingEnvIcons","existingEnvIcons","envIconsDir","ensureDir","existingIcons","icons","Promise","all","iconFileName","filenamify","replacement","fullIconPath","res","fetch","err","message","svgText","text","outputFile","getCompFiles","dirAbs","filesRelative","filesystem","files","file","relative","getGraphIdsAsSVG","opts","visualGraph","getVisualGraphIds","svg","getAsSVGString","getWorkspaceDependencies","allDeps","getAllDedupedDirectDependencies","allDepsObj","dep","currentRange","getCompFilesDirPathFromLastSnap","hasVersion","compDir","ignoreVersion","filePathsRootDir","modelComponent","getBitObjectModelComponent","versionObject","getBitObjectVersion","version","sourceFiles","modelFilesToSourceFiles","legacyScope","objects","filePath","contents","pathJoinLinux","catObject","hash","object","getRawObject","JSON","stringify","content","logFile","getFileHistoryHashes","blame","changedFilesFromParent","getChangedFilesFromParent","getConfigForDiff","getConfigForDiffById","setDefaultScope","scopeName","getDefaultScope","defaultScope","getCompFilesDirPathFromLastSnapUsingCompFiles","compFiles","getHeadFiles","warmWorkspaceCache","warmCache","clearCache","clearAllComponentsCache","install","options","packages","optimizeReportForNonTerminal","dedupe","updateExisting","import","export","componentsIds","removedIds","exportedLanes","rippleJobUrls","l","rippleJobs","checkoutHead","skipNpmInstall","adjustCheckoutResultsToIde","importObjectsIfOutdatedAgainstBitmap","getTemplates","templates","listTemplates","getPromptOptionsForTemplate","templateName","template","getTemplateWithId","promptOptions","createComponent","idIncludeScope","promptResults","nameSplit","split","generateComponentTemplate","removeComponent","componentsPattern","force","serializedResults","localResult","serialize","deleteComponents","deleteComps","deprecateComponent","newId","range","deprecateByCLIValues","undeprecateComponent","unDeprecateByCLIValues","switchLane","output","failedComponents","skipped","f","unchangedLegitimately","failed","succeed","getModifiedByConfig","modifiedComps","modified","autoTagIds","listAutoTagPendingComponentIds","autoTagComps","getMany","locallyDeletedIds","locallyDeletedComps","allComps","allIds","wsComp","getConfigForDiffByCompObject","scopeComp","hasSameDeps","dependencies","hasSameAspects","aspects","result","getDataToInitSCM","getFilesModification","pathsFromLastSnap","idStr","filesStatus","getFilesStatus","componentId","getCompFilesDirPathFromLastSnapForAllComps","compResults","getCurrentLaneName","includeScope","currentLaneId","getCurrentLaneId","isDefault","tagOrSnap","params","build","isOnMain","tag","snap","taggedComponents","snappedComponents","getCompDetails","includeSchema","debug","existsLocally","hasId","getComp","ComponentNotFound","fragments","getShowFragments","titlesToInclude","showResults","fragment","json","title","deps","getDependencies","pkg","getPackageName","pkgWithVer","compIdStr","type","lifecycle","source","getSchema","getSchemaFromRemote","publicAPI","toStringPerType","error","docsAspectFiles","Array","isArray","docs","relativePath","compositionsAspectFiles","usageExamples","fileContent","url","ComponentUrl","toUrl","includeVersion","packageName","componentLocation","isInstalledAsPackage","lockFilePath","pathExists","lockFileContent","readFile","warn","exports","dateStr","year","month","day","hours","minutes","seconds","date","getTime"],"sources":["api-for-ide.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport filenamify from 'filenamify';\nimport type { CompFiles, Workspace, FilesStatus } from '@teambit/workspace';\nimport type { PathOsBasedAbsolute, PathOsBasedRelative } from '@teambit/legacy.utils';\nimport { pathJoinLinux } from '@teambit/legacy.utils';\nimport pMap from 'p-map';\nimport type { SnappingMain } from '@teambit/snapping';\nimport type { LanesMain } from '@teambit/lanes';\nimport type { InstallMain } from '@teambit/install';\nimport type { ExportMain } from '@teambit/export';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport type { ApplyVersionResults } from '@teambit/component.modules.merge-helper';\nimport type { ComponentLogMain, FileHashDiffFromParent } from '@teambit/component-log';\nimport type { LaneLog } from '@teambit/objects';\nimport type { ComponentCompareMain } from '@teambit/component-compare';\nimport type {\n GenerateResult,\n GeneratorMain,\n PromptOption,\n PromptResults,\n TemplateDescriptor,\n} from '@teambit/generator';\nimport { getParsedHistoryMetadata } from '@teambit/legacy.consumer';\nimport type { RemovedObjects } from '@teambit/legacy.scope';\nimport type { RemoveMain } from '@teambit/remove';\nimport { compact, uniq } from 'lodash';\nimport type { ConfigMain } from '@teambit/config';\nimport { LANE_REMOTE_DELIMITER, LaneId } from '@teambit/lane-id';\nimport type { ApplicationMain } from '@teambit/application';\nimport type { DeprecationMain } from '@teambit/deprecation';\nimport type { EnvsMain } from '@teambit/envs';\nimport fetch from 'node-fetch';\nimport type { GraphMain } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ComponentNotFound } from '@teambit/scope';\nimport type { ComponentMain, ComponentMap } from '@teambit/component';\nimport type { SchemaMain } from '@teambit/schema';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport type { Logger } from '@teambit/logger';\n\nconst FILES_HISTORY_DIR = 'files-history';\nconst ENV_ICONS_DIR = 'env-icons';\nconst LAST_SNAP_DIR = 'last-snap';\nconst CMD_HISTORY = 'command-history-ide';\n\ntype PathLinux = string; // problematic to get it from @teambit/legacy/dist/utils/path.\n\ntype PathFromLastSnap = { [relativeToWorkspace: PathLinux]: string };\n\ntype InitSCMEntry = {\n filesStatus: FilesStatus;\n pathsFromLastSnap: PathFromLastSnap;\n compDir: PathLinux;\n};\n\ntype DataToInitSCM = { [compId: string]: InitSCMEntry };\n\ntype LaneObj = {\n name: string;\n scope: string;\n id: string;\n log: LaneLog;\n components: Array<{ id: string; head: string }>;\n isNew: boolean;\n forkedFrom?: string;\n};\n\ntype ModifiedByConfig = {\n id: string;\n version: string;\n dependencies?: { workspace: string[]; scope: string[] };\n aspects?: { workspace: Record<string, any>; scope: Record<string, any> };\n};\n\ntype WorkspaceHistory = {\n current: PathOsBasedAbsolute;\n history: Array<{ path: PathOsBasedAbsolute; fileId: string; reason?: string }>;\n};\n\ntype CompMetadata = {\n id: string;\n isDeprecated: boolean;\n appName?: string; // in case it's an app\n env: {\n id: string;\n name?: string;\n icon: string;\n localIconPath?: string;\n };\n};\n\nexport class APIForIDE {\n private existingEnvIcons: string[] | undefined;\n constructor(\n private workspace: Workspace,\n private snapping: SnappingMain,\n private lanes: LanesMain,\n private installer: InstallMain,\n private exporter: ExportMain,\n private checkout: CheckoutMain,\n private componentLog: ComponentLogMain,\n private componentCompare: ComponentCompareMain,\n private generator: GeneratorMain,\n private remove: RemoveMain,\n private config: ConfigMain,\n private application: ApplicationMain,\n private deprecation: DeprecationMain,\n private envs: EnvsMain,\n private graph: GraphMain,\n private scope: ScopeMain,\n private component: ComponentMain,\n private schema: SchemaMain,\n private logger: Logger\n ) {}\n\n async logStartCmdHistory(op: string) {\n const str = `${op}, started`;\n await this.writeToCmdHistory(str);\n }\n\n async logFinishCmdHistory(op: string, code: number) {\n const endStr = code === 0 ? 'succeeded' : 'failed';\n const str = `${op}, ${endStr}`;\n await this.writeToCmdHistory(str);\n }\n\n getProcessPid() {\n return process.pid;\n }\n\n private async writeToCmdHistory(str: string) {\n await fs.appendFile(path.join(this.workspace.scope.path, CMD_HISTORY), `${new Date().toISOString()} ${str}\\n`);\n }\n\n async listIdsWithPaths() {\n const ids = this.workspace.listIds();\n return ids.reduce((acc, id) => {\n acc[id.toStringWithoutVersion()] = this.workspace.componentDir(id);\n return acc;\n }, {});\n }\n\n async getMainFilePath(id: string): Promise<PathOsBasedAbsolute> {\n const compId = await this.workspace.resolveComponentId(id);\n const comp = await this.workspace.get(compId);\n return path.join(this.workspace.componentDir(compId), comp.state._consumer.mainFile);\n }\n\n async getWorkspaceHistory(): Promise<WorkspaceHistory> {\n const current = this.workspace.bitMap.getPath();\n const bitmapHistoryDir = this.workspace.consumer.getBitmapHistoryDir();\n const historyPaths = await fs.readdir(bitmapHistoryDir);\n const historyMetadata = await this.workspace.consumer.getParsedBitmapHistoryMetadata();\n const history = historyPaths.map((historyPath) => {\n const fileName = path.basename(historyPath);\n const fileId = fileName.replace('.bitmap-', '');\n const reason = historyMetadata[fileId];\n return { path: path.join(bitmapHistoryDir, fileName), fileId, reason };\n });\n const historySorted = history.sort((a, b) => fileIdToTimestamp(b.fileId) - fileIdToTimestamp(a.fileId));\n\n return { current, history: historySorted };\n }\n\n async getConfigHistory(): Promise<WorkspaceHistory> {\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error('getConfigHistory(), workspace config is missing');\n const current = workspaceConfig.path;\n const configHistoryDir = workspaceConfig.getBackupHistoryDir();\n const historyPaths = await fs.readdir(configHistoryDir);\n const historyMetadata = await getParsedHistoryMetadata(workspaceConfig.getBackupMetadataFilePath());\n const history = historyPaths.map((historyPath) => {\n const fileName = path.basename(historyPath);\n const fileId = fileName;\n const reason = historyMetadata[fileId];\n return { path: path.join(configHistoryDir, fileName), fileId, reason };\n });\n const historySorted = history.sort((a, b) => fileIdToTimestamp(b.fileId) - fileIdToTimestamp(a.fileId));\n\n return { current, history: historySorted };\n }\n\n async importLane(\n laneName: string,\n { skipDependencyInstallation }: { skipDependencyInstallation?: boolean }\n ): Promise<string[]> {\n const results = await this.lanes.switchLanes(laneName, {\n skipDependencyInstallation,\n });\n return (results.components || []).map((c) => c.id.toString());\n }\n\n async getCurrentLaneObject(): Promise<LaneObj | undefined> {\n const currentLane = await this.lanes.getCurrentLane();\n if (!currentLane) return undefined;\n const components = currentLane.components.map((c) => {\n return {\n id: c.id.toStringWithoutVersion(),\n head: c.head.toString(),\n };\n });\n return {\n name: currentLane.name,\n scope: currentLane.scope,\n id: currentLane.id(),\n log: currentLane.log,\n components,\n isNew: currentLane.isNew,\n forkedFrom: currentLane.forkedFrom?.toString(),\n };\n }\n\n async listLanes() {\n return this.lanes.getLanes({ showDefaultLane: true });\n }\n\n async createLane(name: string) {\n if (name.includes(LANE_REMOTE_DELIMITER)) {\n const laneId = LaneId.parse(name);\n return this.lanes.createLane(laneId.name, { scope: laneId.scope });\n }\n return this.lanes.createLane(name);\n }\n\n async getCompsMetadata(): Promise<CompMetadata[]> {\n const comps = await this.workspace.list();\n const apps = await this.application.listAppsIdsAndNames();\n const results: CompMetadata[] = await pMap(\n comps,\n async (comp) => {\n const id = comp.id;\n const deprecationInfo = await this.deprecation.getDeprecationInfo(comp);\n const foundApp = apps.find((app) => app.id === id.toString());\n const env = this.envs.getEnv(comp);\n return {\n id: id.toStringWithoutVersion(),\n isDeprecated: deprecationInfo.isDeprecate,\n appName: foundApp?.name,\n env: {\n id: env.id,\n name: env.name,\n icon: env.icon,\n },\n };\n },\n { concurrency: 30 }\n );\n const allIcons = uniq(compact(results.map((r) => r.env.icon)));\n const iconsMap = await this.getEnvIconsMapFetchIfMissing(allIcons);\n results.forEach((r) => {\n r.env.localIconPath = iconsMap[r.env.icon];\n });\n return results;\n }\n\n private getEnvIconsFullPath() {\n return path.join(this.workspace.scope.path, ENV_ICONS_DIR);\n }\n\n private async getExistingEnvIcons(): Promise<string[]> {\n if (!this.existingEnvIcons) {\n const envIconsDir = this.getEnvIconsFullPath();\n await fs.ensureDir(envIconsDir);\n const existingIcons = await fs.readdir(envIconsDir);\n this.existingEnvIcons = existingIcons;\n }\n return this.existingEnvIcons;\n }\n\n private async getEnvIconsMapFetchIfMissing(icons: string[]): Promise<{ [iconHttpUrl: string]: string }> {\n const existingIcons = await this.getExistingEnvIcons();\n const iconsMap: Record<string, string> = {};\n await Promise.all(\n icons.map(async (icon) => {\n const iconFileName = filenamify(icon, { replacement: '-' });\n const fullIconPath = path.join(this.workspace.scope.path, ENV_ICONS_DIR, iconFileName);\n if (existingIcons.includes(iconFileName)) {\n iconsMap[icon] = fullIconPath;\n return;\n }\n let res;\n // download the icon from the url and save it locally.\n try {\n res = await fetch(icon);\n } catch (err: any) {\n throw new Error(`failed to get the icon from ${icon}, error: ${err.message}`);\n }\n const svgText = await res.text();\n await fs.outputFile(fullIconPath, svgText);\n iconsMap[icon] = fullIconPath;\n this.existingEnvIcons?.push(iconFileName);\n })\n );\n return iconsMap;\n }\n\n async getCompFiles(id: string): Promise<{ dirAbs: string; filesRelative: PathOsBasedRelative[] }> {\n const compId = await this.workspace.resolveComponentId(id);\n const comp = await this.workspace.get(compId);\n const dirAbs = this.workspace.componentDir(comp.id);\n const filesRelative = comp.state.filesystem.files.map((file) => file.relative);\n return { dirAbs, filesRelative };\n }\n\n async getGraphIdsAsSVG(id?: string, opts: { includeLocalOnly?: boolean } = {}): Promise<string> {\n const compId = id ? await this.workspace.resolveComponentId(id) : undefined;\n const visualGraph = await this.graph.getVisualGraphIds(compId ? [compId] : undefined, opts);\n const svg = await visualGraph.getAsSVGString();\n if (!svg) throw new Error('failed to render the graph');\n return svg;\n }\n\n async getWorkspaceDependencies(): Promise<{ [pkgName: string]: string }> {\n const allDeps = await this.workspace.getAllDedupedDirectDependencies();\n const allDepsObj = {};\n for (const dep of allDeps) {\n allDepsObj[dep.name] = dep.currentRange;\n }\n\n return allDepsObj;\n }\n\n async getCompFilesDirPathFromLastSnap(id: string): Promise<{ [relativePath: string]: string }> {\n const compId = await this.workspace.resolveComponentId(id);\n if (!compId.hasVersion()) return {}; // it's a new component.\n const compDir = this.workspace.componentDir(compId, { ignoreVersion: true }, { relative: true });\n // const dirName = filenamify(compId.toString(), { replacement: '_' });\n const filePathsRootDir = path.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR, compDir);\n await fs.remove(filePathsRootDir); // in case it has old data\n await fs.ensureDir(filePathsRootDir);\n\n const modelComponent = await this.workspace.scope.getBitObjectModelComponent(compId);\n if (!modelComponent) {\n throw new Error(`unable to find ${compId.toString()} in the local scope, please run \"bit import\"`);\n }\n const versionObject = await this.workspace.scope.getBitObjectVersion(modelComponent, compId.version as string);\n if (!versionObject)\n throw new Error(`unable to find the Version object of ${compId.toString()}, please run \"bit import\"`);\n const sourceFiles = await versionObject.modelFilesToSourceFiles(this.workspace.scope.legacyScope.objects);\n const results: { [relativePath: string]: string } = {};\n await Promise.all(\n sourceFiles.map(async (file) => {\n const filePath = path.join(filePathsRootDir, file.relative);\n await fs.outputFile(filePath, file.contents);\n results[pathJoinLinux(compDir, file.relative)] = filePath;\n })\n );\n return results;\n }\n\n async catObject(hash: string) {\n const object = await this.workspace.scope.legacyScope.getRawObject(hash);\n return JSON.stringify(object.content.toString());\n }\n\n async logFile(filePath: string) {\n const results = await this.componentLog.getFileHistoryHashes(filePath);\n return results;\n }\n\n async blame(filePath: string) {\n const results = await this.componentLog.blame(filePath);\n return results;\n }\n\n async changedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]> {\n const results = await this.componentLog.getChangedFilesFromParent(id);\n return results;\n }\n\n async getConfigForDiff(id: string) {\n const results = await this.componentCompare.getConfigForDiffById(id);\n return results;\n }\n\n async setDefaultScope(scopeName: string) {\n await this.workspace.setDefaultScope(scopeName);\n return scopeName;\n }\n\n getDefaultScope() {\n return this.workspace.defaultScope;\n }\n\n async getCompFilesDirPathFromLastSnapUsingCompFiles(\n compFiles: CompFiles\n ): Promise<{ [relativePath: string]: string }> {\n const compId = compFiles.id;\n if (!compId.hasVersion()) return {}; // it's a new component.\n const compDir = compFiles.compDir;\n const filePathsRootDir = path.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR, compDir);\n await fs.remove(filePathsRootDir); // in case it has old data\n\n const sourceFiles = await compFiles.getHeadFiles();\n\n const results: { [relativePath: string]: string } = {};\n await Promise.all(\n sourceFiles.map(async (file) => {\n const filePath = path.join(filePathsRootDir, file.relative);\n await fs.outputFile(filePath, file.contents);\n results[pathJoinLinux(compDir, file.relative)] = filePath;\n })\n );\n return results;\n }\n\n async warmWorkspaceCache() {\n await this.workspace.warmCache();\n }\n async clearCache() {\n await this.workspace.clearCache();\n this.workspace.clearAllComponentsCache();\n }\n\n async install(options = {}, packages?: string[]): Promise<ComponentMap<string>> {\n const opts = {\n optimizeReportForNonTerminal: true,\n dedupe: true,\n updateExisting: false,\n import: false,\n ...options,\n };\n\n return this.installer.install(packages, opts);\n }\n\n async export() {\n const { componentsIds, removedIds, exportedLanes, rippleJobUrls } = await this.exporter.export();\n return {\n componentsIds: componentsIds.map((c) => c.toString()),\n removedIds: removedIds.map((c) => c.toString()),\n exportedLanes: exportedLanes.map((l) => l.id()),\n rippleJobs: rippleJobUrls, // for backward compatibility. bit-extension until 1.1.52 expects rippleJobs.\n rippleJobUrls,\n };\n }\n\n async checkoutHead() {\n const results = await this.checkout.checkout({\n head: true,\n skipNpmInstall: true,\n ids: await this.workspace.listIds(),\n });\n return this.adjustCheckoutResultsToIde(results);\n }\n\n async importObjectsIfOutdatedAgainstBitmap(): Promise<void> {\n return this.workspace.importObjectsIfOutdatedAgainstBitmap();\n }\n\n async getTemplates(): Promise<TemplateDescriptor[]> {\n const templates = await this.generator.listTemplates();\n return templates;\n }\n\n async getPromptOptionsForTemplate(templateName: string): Promise<PromptOption[] | undefined> {\n const template = await this.generator.getTemplateWithId(templateName);\n return template.template.promptOptions?.();\n }\n\n async createComponent(\n templateName: string,\n idIncludeScope: string,\n promptResults?: PromptResults\n ): Promise<GenerateResult[]> {\n if (!idIncludeScope.includes('/')) {\n throw new Error('id should include the scope name');\n }\n const [scope, ...nameSplit] = idIncludeScope.split('/');\n return this.generator.generateComponentTemplate(\n [nameSplit.join('/')],\n templateName,\n { scope },\n { optimizeReportForNonTerminal: true },\n promptResults\n );\n }\n\n async removeComponent(componentsPattern: string) {\n const results = await this.remove.remove({\n componentsPattern,\n force: true,\n });\n const serializedResults = (results.localResult as RemovedObjects).serialize();\n return serializedResults;\n }\n\n async deleteComponents(componentsPattern: string, opts): Promise<string[]> {\n const results = await this.remove.deleteComps(componentsPattern, opts);\n const serializedResults = results.map((c) => c.id.toString());\n return serializedResults;\n }\n\n async deprecateComponent(id: string, newId?: string, range?: string): Promise<boolean> {\n return this.deprecation.deprecateByCLIValues(id, newId, range);\n }\n async undeprecateComponent(id: string): Promise<boolean> {\n return this.deprecation.unDeprecateByCLIValues(id);\n }\n\n async switchLane(name: string) {\n const results = await this.lanes.switchLanes(name, { skipDependencyInstallation: true });\n return this.adjustCheckoutResultsToIde(results);\n }\n\n private adjustCheckoutResultsToIde(output: ApplyVersionResults) {\n const { components, failedComponents } = output;\n const skipped = failedComponents?.filter((f) => f.unchangedLegitimately).map((f) => f.id.toString());\n const failed = failedComponents?.filter((f) => !f.unchangedLegitimately).map((f) => f.id.toString());\n return {\n succeed: components?.map((c) => c.id.toString()),\n skipped,\n failed,\n };\n }\n\n async getModifiedByConfig(): Promise<ModifiedByConfig[]> {\n const modifiedComps = await this.workspace.modified();\n const autoTagIds = await this.workspace.listAutoTagPendingComponentIds();\n const autoTagComps = await this.workspace.getMany(autoTagIds);\n const locallyDeletedIds = await this.workspace.locallyDeletedIds();\n const locallyDeletedComps = await this.workspace.getMany(locallyDeletedIds);\n const allComps = [...modifiedComps, ...autoTagComps, ...locallyDeletedComps];\n const allIds = allComps.map((c) => c.id);\n const results = await Promise.all(\n allComps.map(async (comp) => {\n const wsComp = await this.componentCompare.getConfigForDiffByCompObject(comp, allIds);\n const scopeComp = await this.componentCompare.getConfigForDiffById(comp.id.toString());\n const hasSameDeps = JSON.stringify(wsComp.dependencies) === JSON.stringify(scopeComp.dependencies);\n const hasSameAspects = JSON.stringify(wsComp.aspects) === JSON.stringify(scopeComp.aspects);\n if (hasSameDeps && hasSameAspects) return null;\n const result: ModifiedByConfig = {\n id: comp.id.toStringWithoutVersion(),\n version: comp.id.version as string,\n };\n if (!hasSameDeps) result.dependencies = { workspace: wsComp.dependencies, scope: scopeComp.dependencies || [] };\n if (!hasSameAspects) result.aspects = { workspace: wsComp.aspects, scope: scopeComp.aspects || {} };\n return result;\n })\n );\n\n return compact(results);\n }\n\n async getDataToInitSCM(): Promise<DataToInitSCM> {\n const ids = this.workspace.listIds();\n const results: DataToInitSCM = {};\n await pMap(\n ids,\n async (id) => {\n const compFiles = await this.workspace.getFilesModification(id);\n const pathsFromLastSnap = await this.getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles);\n const idStr = id.toStringWithoutVersion();\n results[idStr] = {\n filesStatus: compFiles.getFilesStatus(),\n pathsFromLastSnap,\n compDir: compFiles.compDir,\n };\n },\n { concurrency: 30 }\n );\n\n return results;\n }\n\n async getFilesStatus(id: string): Promise<FilesStatus> {\n const componentId = await this.workspace.resolveComponentId(id);\n const compFiles = await this.workspace.getFilesModification(componentId);\n return compFiles.getFilesStatus();\n }\n\n async getCompFilesDirPathFromLastSnapForAllComps(): Promise<{ [relativePath: string]: string }> {\n const ids = this.workspace.listIds();\n let results = {};\n await pMap(\n ids,\n async (id) => {\n const idStr = id.toStringWithoutVersion();\n const compResults = await this.getCompFilesDirPathFromLastSnap(idStr);\n results = { ...results, ...compResults };\n },\n { concurrency: 30 }\n );\n return results;\n }\n\n getCurrentLaneName(includeScope = false): string {\n const currentLaneId = this.workspace.getCurrentLaneId();\n if (!includeScope) return currentLaneId.name;\n if (currentLaneId.isDefault()) return currentLaneId.name;\n return currentLaneId.toString();\n }\n\n async tagOrSnap(message = '') {\n const params = { message, build: false };\n return this.workspace.isOnMain() ? this.snapping.tag(params) : this.snapping.snap(params);\n }\n\n async tag(message = ''): Promise<string[]> {\n const params = { message, build: false };\n const results = await this.snapping.tag(params);\n return (results?.taggedComponents || []).map((c) => c.id.toString());\n }\n\n async snap(message = ''): Promise<string[]> {\n const params = { message, build: false };\n const results = await this.snapping.snap(params);\n return (results?.snappedComponents || []).map((c) => c.id.toString());\n }\n\n async getCompDetails(id: string, includeSchema = false) {\n this.logger.debug(`getCompDetails(${id}, ${includeSchema})`);\n const compId = await this.workspace.resolveComponentId(id);\n const existsLocally = this.workspace.hasId(compId);\n const getComp = async () => {\n if (existsLocally) {\n return this.workspace.get(compId);\n }\n const comp = await this.scope.get(compId);\n if (comp) return comp;\n throw new ComponentNotFound(compId);\n };\n const comp = await getComp();\n\n const fragments = this.component.getShowFragments();\n const titlesToInclude = ['id', 'env', 'package name', 'files', 'dev files', 'deprecated'];\n const showResults: Record<string, any> = {};\n await Promise.all(\n fragments.map(async (fragment) => {\n const result = fragment.json ? await fragment.json(comp) : undefined;\n if (!result || !titlesToInclude.includes(result.title)) return;\n if (result.title === 'deprecated' && !result.json.isDeprecate) return; // skip if not deprecated\n showResults[result.title] = result.json;\n })\n );\n\n const deps = comp.getDependencies();\n showResults.dependencies = deps.map((dep) => {\n const pkg = dep.getPackageName?.() || dep.id;\n const pkgWithVer = `${pkg}@${dep.version}`;\n const compIdStr = dep.type === 'component' ? `, component-id: ${dep.id}` : '';\n return `${pkgWithVer} (lifecycle: ${dep.lifecycle}, type: ${dep.type}, source: ${dep.source}${compIdStr})`;\n });\n\n if (includeSchema) {\n try {\n const schema = existsLocally\n ? await this.schema.getSchema(comp)\n : await this.schema.getSchemaFromRemote(comp.id.toString());\n showResults.publicAPI = schema.toStringPerType();\n } catch (error) {\n // If schema fails, add error info instead of crashing\n showResults.publicAPI = `Error fetching schema: ${(error as Error).message}`;\n }\n }\n\n // Add docs content if available from teambit.docs/docs aspect\n try {\n const docsAspectFiles = showResults['dev files']?.[`teambit.docs/docs`];\n if (docsAspectFiles && Array.isArray(docsAspectFiles) && docsAspectFiles.length > 0) {\n showResults.docs = {};\n docsAspectFiles.forEach((relativePath: string) => {\n const file = comp.filesystem.files.find((f) => f.relative === relativePath);\n if (file) {\n showResults.docs[relativePath] = file.contents.toString();\n }\n });\n }\n } catch (error) {\n // If docs extraction fails, add error info but don't crash\n showResults.docs = `Error fetching docs: ${(error as Error).message}`;\n }\n\n // Add usage examples from teambit.compositions/compositions aspect\n try {\n const compositionsAspectFiles = showResults['dev files']?.[`teambit.compositions/compositions`];\n if (compositionsAspectFiles && Array.isArray(compositionsAspectFiles) && compositionsAspectFiles.length > 0) {\n showResults.usageExamples = {};\n compositionsAspectFiles.forEach((relativePath: string) => {\n const file = comp.filesystem.files.find((f) => f.relative === relativePath);\n if (file) {\n const fileContent = file.contents.toString();\n showResults.usageExamples[relativePath] = fileContent;\n }\n });\n }\n } catch (error) {\n // If composition extraction fails, add error info but don't crash\n showResults.usageExamples = `Error fetching usage examples: ${(error as Error).message}`;\n }\n\n showResults.url = ComponentUrl.toUrl(compId, { includeVersion: false });\n\n // Add component location status\n // Check if component exists as a package by looking it up in the pnpm lock file\n const packageName = comp.getPackageName();\n let componentLocation: string;\n\n if (existsLocally) {\n const compDir = this.workspace.componentDir(compId, { ignoreVersion: true }, { relative: true });\n componentLocation = `exists locally in the workspace at '${compDir}'`;\n } else {\n let isInstalledAsPackage = false;\n\n try {\n const lockFilePath = path.join(this.workspace.path, 'node_modules', '.pnpm', 'lock.yaml');\n if (await fs.pathExists(lockFilePath)) {\n const lockFileContent = await fs.readFile(lockFilePath, 'utf8');\n // Check if the package name exists in the lock file\n isInstalledAsPackage = lockFileContent.includes(packageName);\n }\n } catch (error) {\n this.logger.warn(`Error checking package existence for ${packageName}: ${(error as Error).message}`);\n // If error occurs during package check, default to false\n isInstalledAsPackage = false;\n }\n\n componentLocation = isInstalledAsPackage ? 'installed as a package' : 'a remote component';\n }\n\n showResults.componentLocation = componentLocation;\n\n return showResults;\n }\n}\n\nfunction fileIdToTimestamp(dateStr: string): number {\n const [year, month, day, hours, minutes, seconds] = dateStr.split('-');\n const date = new Date(Number(year), Number(month) - 1, Number(day), Number(hours), Number(minutes), Number(seconds));\n return date.getTime();\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_filenamify","_legacy","_pMap","_legacy2","_lodash","_laneId","_nodeFetch","_scope","_componentModules","_lanesModules","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FILES_HISTORY_DIR","ENV_ICONS_DIR","LAST_SNAP_DIR","CMD_HISTORY","APIForIDE","constructor","workspace","snapping","lanes","installer","exporter","checkout","componentLog","componentCompare","generator","remove","config","application","deprecation","envs","graph","scope","component","schema","logger","logStartCmdHistory","op","str","writeToCmdHistory","logFinishCmdHistory","code","endStr","getProcessPid","process","pid","fs","appendFile","path","join","Date","toISOString","listIdsWithPaths","ids","listIds","reduce","acc","id","toStringWithoutVersion","componentDir","getMainFilePath","compId","resolveComponentId","comp","get","state","_consumer","mainFile","getWorkspaceHistory","current","bitMap","getPath","bitmapHistoryDir","consumer","getBitmapHistoryDir","historyPaths","readdir","historyMetadata","getParsedBitmapHistoryMetadata","history","map","historyPath","fileName","basename","fileId","replace","reason","historySorted","sort","a","b","fileIdToTimestamp","getConfigHistory","workspaceConfig","Error","configHistoryDir","getBackupHistoryDir","getParsedHistoryMetadata","getBackupMetadataFilePath","importLane","laneName","skipDependencyInstallation","results","switchLanes","components","c","toString","getCurrentLaneObject","currentLane","getCurrentLane","undefined","head","name","log","isNew","forkedFrom","listLanes","getLanes","showDefaultLane","createLane","includes","LANE_REMOTE_DELIMITER","laneId","LaneId","parse","getCompsMetadata","comps","list","apps","listAppsIdsAndNames","pMap","deprecationInfo","getDeprecationInfo","foundApp","find","app","env","getEnv","isDeprecated","isDeprecate","appName","icon","concurrency","allIcons","uniq","compact","iconsMap","getEnvIconsMapFetchIfMissing","localIconPath","getEnvIconsFullPath","getExistingEnvIcons","existingEnvIcons","envIconsDir","ensureDir","existingIcons","icons","Promise","all","iconFileName","filenamify","replacement","fullIconPath","res","fetch","err","message","svgText","text","outputFile","getCompFiles","dirAbs","filesRelative","filesystem","files","file","relative","getGraphIdsAsSVG","opts","visualGraph","getVisualGraphIds","svg","getAsSVGString","getWorkspaceDependencies","allDeps","getAllDedupedDirectDependencies","allDepsObj","dep","currentRange","getCompFilesDirPathFromLastSnap","hasVersion","compDir","ignoreVersion","filePathsRootDir","modelComponent","getBitObjectModelComponent","versionObject","getBitObjectVersion","version","sourceFiles","modelFilesToSourceFiles","legacyScope","objects","filePath","contents","pathJoinLinux","catObject","hash","object","getRawObject","JSON","stringify","content","logFile","getFileHistoryHashes","blame","changedFilesFromParent","getChangedFilesFromParent","getConfigForDiff","getConfigForDiffById","setDefaultScope","scopeName","getDefaultScope","defaultScope","getCompFilesDirPathFromLastSnapUsingCompFiles","compFiles","getHeadFiles","getCompFileObjectPathsFromLastSnap","repo","modelFile","modelFiles","relativePath","objectPath","warmWorkspaceCache","warmCache","clearCache","clearAllComponentsCache","install","options","packages","optimizeReportForNonTerminal","dedupe","updateExisting","import","export","componentsIds","removedIds","exportedLanes","rippleJobUrls","l","rippleJobs","checkoutHead","skipNpmInstall","adjustCheckoutResultsToIde","importObjectsIfOutdatedAgainstBitmap","getTemplates","templates","listTemplates","getPromptOptionsForTemplate","templateName","template","getTemplateWithId","promptOptions","createComponent","idIncludeScope","promptResults","nameSplit","split","generateComponentTemplate","removeComponent","componentsPattern","force","serializedResults","localResult","serialize","deleteComponents","deleteComps","deprecateComponent","newId","range","deprecateByCLIValues","undeprecateComponent","unDeprecateByCLIValues","switchLane","output","failedComponents","skipped","f","unchangedLegitimately","failed","succeed","getModifiedByConfig","modifiedComps","modified","autoTagIds","listAutoTagPendingComponentIds","autoTagComps","getMany","locallyDeletedIds","locallyDeletedComps","allComps","allIds","wsComp","getConfigForDiffByCompObject","scopeComp","hasSameDeps","dependencies","hasSameAspects","aspects","result","getDataToInitSCM","useHashes","lastSnapDir","getFilesModification","objectPathsFromLastSnap","pathsFromLastSnap","idStr","filesStatus","getFilesStatus","componentId","getCompFilesDirPathFromLastSnapForAllComps","compResults","getLaneHistoryForIDE","parseLaneId","getCurrentLaneId","isDefault","entries","isMain","importLaneHistory","laneHistory","getLaneHistory","historyIds","getHistoryIds","getHistory","item","date","username","email","deleted","getLaneHistoryDiffForIDE","fromHistoryId","toHistoryId","laneObj","loadLane","diffGenerator","LaneDiffGenerator","diffResults","generateDiffHistory","toLaneDiffForIDEResult","getLaneDiffForIDE","currentLaneId","generate","newCompsFrom","newCompsTo","compsWithDiff","d","hasDiff","filesDiff","status","fromContent","toContent","fieldsDiff","compsWithNoChanges","toLaneName","fromLaneName","failures","msg","getCurrentLaneName","includeScope","tagOrSnap","params","build","isOnMain","tag","snap","taggedComponents","snappedComponents","getCompDetails","includeSchema","debug","existsLocally","hasId","getComp","ComponentNotFound","fragments","getShowFragments","titlesToInclude","showResults","fragment","json","title","deps","getDependencies","pkg","getPackageName","pkgWithVer","compIdStr","type","lifecycle","source","getSchema","getSchemaFromRemote","publicAPI","toStringPerType","error","docsAspectFiles","Array","isArray","docs","compositionsAspectFiles","usageExamples","fileContent","url","ComponentUrl","toUrl","includeVersion","packageName","componentLocation","isInstalledAsPackage","lockFilePath","pathExists","lockFileContent","readFile","warn","exports","dateStr","year","month","day","hours","minutes","seconds","getTime"],"sources":["api-for-ide.ts"],"sourcesContent":["import path from 'path';\nimport fs from 'fs-extra';\nimport filenamify from 'filenamify';\nimport type { CompFiles, Workspace, FilesStatus } from '@teambit/workspace';\nimport type { PathOsBasedAbsolute, PathOsBasedRelative } from '@teambit/legacy.utils';\nimport { pathJoinLinux } from '@teambit/legacy.utils';\nimport pMap from 'p-map';\nimport type { SnappingMain } from '@teambit/snapping';\nimport type { LanesMain } from '@teambit/lanes';\nimport type { InstallMain } from '@teambit/install';\nimport type { ExportMain } from '@teambit/export';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport type { ApplyVersionResults } from '@teambit/component.modules.merge-helper';\nimport type { ComponentLogMain, FileHashDiffFromParent } from '@teambit/component-log';\nimport type { LaneLog } from '@teambit/objects';\nimport type { ComponentCompareMain } from '@teambit/component-compare';\nimport type {\n GenerateResult,\n GeneratorMain,\n PromptOption,\n PromptResults,\n TemplateDescriptor,\n} from '@teambit/generator';\nimport { getParsedHistoryMetadata } from '@teambit/legacy.consumer';\nimport type { RemovedObjects } from '@teambit/legacy.scope';\nimport type { RemoveMain } from '@teambit/remove';\nimport { compact, uniq } from 'lodash';\nimport type { ConfigMain } from '@teambit/config';\nimport { LANE_REMOTE_DELIMITER, LaneId } from '@teambit/lane-id';\nimport type { ApplicationMain } from '@teambit/application';\nimport type { DeprecationMain } from '@teambit/deprecation';\nimport type { EnvsMain } from '@teambit/envs';\nimport fetch from 'node-fetch';\nimport type { GraphMain } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ComponentNotFound } from '@teambit/scope';\nimport type { ComponentMain, ComponentMap } from '@teambit/component';\nimport type { SchemaMain } from '@teambit/schema';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport type { Logger } from '@teambit/logger';\nimport { LaneDiffGenerator } from '@teambit/lanes.modules.diff';\nimport type { LaneDiffResults } from '@teambit/lanes.modules.diff';\n\nconst FILES_HISTORY_DIR = 'files-history';\nconst ENV_ICONS_DIR = 'env-icons';\nconst LAST_SNAP_DIR = 'last-snap';\nconst CMD_HISTORY = 'command-history-ide';\n\ntype LaneDiffForIDEResult = {\n newCompsFrom: string[];\n newCompsTo: string[];\n compsWithDiff: {\n id: string;\n hasDiff: boolean;\n filesDiff: { filePath: string; status: string; fromContent?: string; toContent?: string }[];\n fieldsDiff?: { fieldName: string; diffOutput: string }[] | null;\n }[];\n compsWithNoChanges: string[];\n toLaneName: string;\n fromLaneName: string;\n failures: { id: string; msg: string }[];\n};\n\ntype PathLinux = string; // problematic to get it from @teambit/legacy/dist/utils/path.\n\ntype PathFromLastSnap = { [relativeToWorkspace: PathLinux]: string };\ntype ObjectPathsFromLastSnap = { [relativeToWorkspace: PathLinux]: string };\n\ntype InitSCMEntry = {\n filesStatus: FilesStatus;\n pathsFromLastSnap: PathFromLastSnap;\n objectPathsFromLastSnap: ObjectPathsFromLastSnap;\n compDir: PathLinux;\n};\n\ntype DataToInitSCM = { [compId: string]: InitSCMEntry };\n\ntype LaneObj = {\n name: string;\n scope: string;\n id: string;\n log: LaneLog;\n components: Array<{ id: string; head: string }>;\n isNew: boolean;\n forkedFrom?: string;\n};\n\ntype ModifiedByConfig = {\n id: string;\n version: string;\n dependencies?: { workspace: string[]; scope: string[] };\n aspects?: { workspace: Record<string, any>; scope: Record<string, any> };\n};\n\ntype WorkspaceHistory = {\n current: PathOsBasedAbsolute;\n history: Array<{ path: PathOsBasedAbsolute; fileId: string; reason?: string }>;\n};\n\ntype CompMetadata = {\n id: string;\n isDeprecated: boolean;\n appName?: string; // in case it's an app\n env: {\n id: string;\n name?: string;\n icon: string;\n localIconPath?: string;\n };\n};\n\nexport class APIForIDE {\n private existingEnvIcons: string[] | undefined;\n constructor(\n private workspace: Workspace,\n private snapping: SnappingMain,\n private lanes: LanesMain,\n private installer: InstallMain,\n private exporter: ExportMain,\n private checkout: CheckoutMain,\n private componentLog: ComponentLogMain,\n private componentCompare: ComponentCompareMain,\n private generator: GeneratorMain,\n private remove: RemoveMain,\n private config: ConfigMain,\n private application: ApplicationMain,\n private deprecation: DeprecationMain,\n private envs: EnvsMain,\n private graph: GraphMain,\n private scope: ScopeMain,\n private component: ComponentMain,\n private schema: SchemaMain,\n private logger: Logger\n ) {}\n\n async logStartCmdHistory(op: string) {\n const str = `${op}, started`;\n await this.writeToCmdHistory(str);\n }\n\n async logFinishCmdHistory(op: string, code: number) {\n const endStr = code === 0 ? 'succeeded' : 'failed';\n const str = `${op}, ${endStr}`;\n await this.writeToCmdHistory(str);\n }\n\n getProcessPid() {\n return process.pid;\n }\n\n private async writeToCmdHistory(str: string) {\n await fs.appendFile(path.join(this.workspace.scope.path, CMD_HISTORY), `${new Date().toISOString()} ${str}\\n`);\n }\n\n async listIdsWithPaths() {\n const ids = this.workspace.listIds();\n return ids.reduce((acc, id) => {\n acc[id.toStringWithoutVersion()] = this.workspace.componentDir(id);\n return acc;\n }, {});\n }\n\n async getMainFilePath(id: string): Promise<PathOsBasedAbsolute> {\n const compId = await this.workspace.resolveComponentId(id);\n const comp = await this.workspace.get(compId);\n return path.join(this.workspace.componentDir(compId), comp.state._consumer.mainFile);\n }\n\n async getWorkspaceHistory(): Promise<WorkspaceHistory> {\n const current = this.workspace.bitMap.getPath();\n const bitmapHistoryDir = this.workspace.consumer.getBitmapHistoryDir();\n const historyPaths = await fs.readdir(bitmapHistoryDir);\n const historyMetadata = await this.workspace.consumer.getParsedBitmapHistoryMetadata();\n const history = historyPaths.map((historyPath) => {\n const fileName = path.basename(historyPath);\n const fileId = fileName.replace('.bitmap-', '');\n const reason = historyMetadata[fileId];\n return { path: path.join(bitmapHistoryDir, fileName), fileId, reason };\n });\n const historySorted = history.sort((a, b) => fileIdToTimestamp(b.fileId) - fileIdToTimestamp(a.fileId));\n\n return { current, history: historySorted };\n }\n\n async getConfigHistory(): Promise<WorkspaceHistory> {\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error('getConfigHistory(), workspace config is missing');\n const current = workspaceConfig.path;\n const configHistoryDir = workspaceConfig.getBackupHistoryDir();\n const historyPaths = await fs.readdir(configHistoryDir);\n const historyMetadata = await getParsedHistoryMetadata(workspaceConfig.getBackupMetadataFilePath());\n const history = historyPaths.map((historyPath) => {\n const fileName = path.basename(historyPath);\n const fileId = fileName;\n const reason = historyMetadata[fileId];\n return { path: path.join(configHistoryDir, fileName), fileId, reason };\n });\n const historySorted = history.sort((a, b) => fileIdToTimestamp(b.fileId) - fileIdToTimestamp(a.fileId));\n\n return { current, history: historySorted };\n }\n\n async importLane(\n laneName: string,\n { skipDependencyInstallation }: { skipDependencyInstallation?: boolean }\n ): Promise<string[]> {\n const results = await this.lanes.switchLanes(laneName, {\n skipDependencyInstallation,\n });\n return (results.components || []).map((c) => c.id.toString());\n }\n\n async getCurrentLaneObject(): Promise<LaneObj | undefined> {\n const currentLane = await this.lanes.getCurrentLane();\n if (!currentLane) return undefined;\n const components = currentLane.components.map((c) => {\n return {\n id: c.id.toStringWithoutVersion(),\n head: c.head.toString(),\n };\n });\n return {\n name: currentLane.name,\n scope: currentLane.scope,\n id: currentLane.id(),\n log: currentLane.log,\n components,\n isNew: currentLane.isNew,\n forkedFrom: currentLane.forkedFrom?.toString(),\n };\n }\n\n async listLanes() {\n return this.lanes.getLanes({ showDefaultLane: true });\n }\n\n async createLane(name: string) {\n if (name.includes(LANE_REMOTE_DELIMITER)) {\n const laneId = LaneId.parse(name);\n return this.lanes.createLane(laneId.name, { scope: laneId.scope });\n }\n return this.lanes.createLane(name);\n }\n\n async getCompsMetadata(): Promise<CompMetadata[]> {\n const comps = await this.workspace.list();\n const apps = await this.application.listAppsIdsAndNames();\n const results: CompMetadata[] = await pMap(\n comps,\n async (comp) => {\n const id = comp.id;\n const deprecationInfo = await this.deprecation.getDeprecationInfo(comp);\n const foundApp = apps.find((app) => app.id === id.toString());\n const env = this.envs.getEnv(comp);\n return {\n id: id.toStringWithoutVersion(),\n isDeprecated: deprecationInfo.isDeprecate,\n appName: foundApp?.name,\n env: {\n id: env.id,\n name: env.name,\n icon: env.icon,\n },\n };\n },\n { concurrency: 30 }\n );\n const allIcons = uniq(compact(results.map((r) => r.env.icon)));\n const iconsMap = await this.getEnvIconsMapFetchIfMissing(allIcons);\n results.forEach((r) => {\n r.env.localIconPath = iconsMap[r.env.icon];\n });\n return results;\n }\n\n private getEnvIconsFullPath() {\n return path.join(this.workspace.scope.path, ENV_ICONS_DIR);\n }\n\n private async getExistingEnvIcons(): Promise<string[]> {\n if (!this.existingEnvIcons) {\n const envIconsDir = this.getEnvIconsFullPath();\n await fs.ensureDir(envIconsDir);\n const existingIcons = await fs.readdir(envIconsDir);\n this.existingEnvIcons = existingIcons;\n }\n return this.existingEnvIcons;\n }\n\n private async getEnvIconsMapFetchIfMissing(icons: string[]): Promise<{ [iconHttpUrl: string]: string }> {\n const existingIcons = await this.getExistingEnvIcons();\n const iconsMap: Record<string, string> = {};\n await Promise.all(\n icons.map(async (icon) => {\n const iconFileName = filenamify(icon, { replacement: '-' });\n const fullIconPath = path.join(this.workspace.scope.path, ENV_ICONS_DIR, iconFileName);\n if (existingIcons.includes(iconFileName)) {\n iconsMap[icon] = fullIconPath;\n return;\n }\n let res;\n // download the icon from the url and save it locally.\n try {\n res = await fetch(icon);\n } catch (err: any) {\n throw new Error(`failed to get the icon from ${icon}, error: ${err.message}`);\n }\n const svgText = await res.text();\n await fs.outputFile(fullIconPath, svgText);\n iconsMap[icon] = fullIconPath;\n this.existingEnvIcons?.push(iconFileName);\n })\n );\n return iconsMap;\n }\n\n async getCompFiles(id: string): Promise<{ dirAbs: string; filesRelative: PathOsBasedRelative[] }> {\n const compId = await this.workspace.resolveComponentId(id);\n const comp = await this.workspace.get(compId);\n const dirAbs = this.workspace.componentDir(comp.id);\n const filesRelative = comp.state.filesystem.files.map((file) => file.relative);\n return { dirAbs, filesRelative };\n }\n\n async getGraphIdsAsSVG(id?: string, opts: { includeLocalOnly?: boolean } = {}): Promise<string> {\n const compId = id ? await this.workspace.resolveComponentId(id) : undefined;\n const visualGraph = await this.graph.getVisualGraphIds(compId ? [compId] : undefined, opts);\n const svg = await visualGraph.getAsSVGString();\n if (!svg) throw new Error('failed to render the graph');\n return svg;\n }\n\n async getWorkspaceDependencies(): Promise<{ [pkgName: string]: string }> {\n const allDeps = await this.workspace.getAllDedupedDirectDependencies();\n const allDepsObj = {};\n for (const dep of allDeps) {\n allDepsObj[dep.name] = dep.currentRange;\n }\n\n return allDepsObj;\n }\n\n async getCompFilesDirPathFromLastSnap(id: string): Promise<{ [relativePath: string]: string }> {\n const compId = await this.workspace.resolveComponentId(id);\n if (!compId.hasVersion()) return {}; // it's a new component.\n const compDir = this.workspace.componentDir(compId, { ignoreVersion: true }, { relative: true });\n // const dirName = filenamify(compId.toString(), { replacement: '_' });\n const filePathsRootDir = path.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR, compDir);\n await fs.remove(filePathsRootDir); // in case it has old data\n await fs.ensureDir(filePathsRootDir);\n\n const modelComponent = await this.workspace.scope.getBitObjectModelComponent(compId);\n if (!modelComponent) {\n throw new Error(`unable to find ${compId.toString()} in the local scope, please run \"bit import\"`);\n }\n const versionObject = await this.workspace.scope.getBitObjectVersion(modelComponent, compId.version as string);\n if (!versionObject)\n throw new Error(`unable to find the Version object of ${compId.toString()}, please run \"bit import\"`);\n const sourceFiles = await versionObject.modelFilesToSourceFiles(this.workspace.scope.legacyScope.objects);\n const results: { [relativePath: string]: string } = {};\n await Promise.all(\n sourceFiles.map(async (file) => {\n const filePath = path.join(filePathsRootDir, file.relative);\n await fs.outputFile(filePath, file.contents);\n results[pathJoinLinux(compDir, file.relative)] = filePath;\n })\n );\n return results;\n }\n\n async catObject(hash: string) {\n const object = await this.workspace.scope.legacyScope.getRawObject(hash);\n return JSON.stringify(object.content.toString());\n }\n\n async logFile(filePath: string) {\n const results = await this.componentLog.getFileHistoryHashes(filePath);\n return results;\n }\n\n async blame(filePath: string) {\n const results = await this.componentLog.blame(filePath);\n return results;\n }\n\n async changedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]> {\n const results = await this.componentLog.getChangedFilesFromParent(id);\n return results;\n }\n\n async getConfigForDiff(id: string) {\n const results = await this.componentCompare.getConfigForDiffById(id);\n return results;\n }\n\n async setDefaultScope(scopeName: string) {\n await this.workspace.setDefaultScope(scopeName);\n return scopeName;\n }\n\n getDefaultScope() {\n return this.workspace.defaultScope;\n }\n\n async getCompFilesDirPathFromLastSnapUsingCompFiles(\n compFiles: CompFiles\n ): Promise<{ [relativePath: string]: string }> {\n const compId = compFiles.id;\n if (!compId.hasVersion()) return {}; // it's a new component.\n const compDir = compFiles.compDir;\n const filePathsRootDir = path.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR, compDir);\n await fs.remove(filePathsRootDir); // in case it has old data\n\n const sourceFiles = await compFiles.getHeadFiles();\n\n const results: { [relativePath: string]: string } = {};\n await Promise.all(\n sourceFiles.map(async (file) => {\n const filePath = path.join(filePathsRootDir, file.relative);\n await fs.outputFile(filePath, file.contents);\n results[pathJoinLinux(compDir, file.relative)] = filePath;\n })\n );\n return results;\n }\n\n getCompFileObjectPathsFromLastSnap(compFiles: CompFiles): { [relativePath: string]: string } {\n if (!compFiles.id.hasVersion()) return {}; // it's a new component.\n const repo = this.workspace.scope.legacyScope.objects;\n const results: { [relativePath: string]: string } = {};\n for (const modelFile of compFiles.modelFiles) {\n results[pathJoinLinux(compFiles.compDir, modelFile.relativePath)] = repo.objectPath(modelFile.file);\n }\n return results;\n }\n\n async warmWorkspaceCache() {\n await this.workspace.warmCache();\n }\n async clearCache() {\n await this.workspace.clearCache();\n this.workspace.clearAllComponentsCache();\n }\n\n async install(options = {}, packages?: string[]): Promise<ComponentMap<string>> {\n const opts = {\n optimizeReportForNonTerminal: true,\n dedupe: true,\n updateExisting: false,\n import: false,\n ...options,\n };\n\n return this.installer.install(packages, opts);\n }\n\n async export() {\n const { componentsIds, removedIds, exportedLanes, rippleJobUrls } = await this.exporter.export();\n return {\n componentsIds: componentsIds.map((c) => c.toString()),\n removedIds: removedIds.map((c) => c.toString()),\n exportedLanes: exportedLanes.map((l) => l.id()),\n rippleJobs: rippleJobUrls, // for backward compatibility. bit-extension until 1.1.52 expects rippleJobs.\n rippleJobUrls,\n };\n }\n\n async checkoutHead() {\n const results = await this.checkout.checkout({\n head: true,\n skipNpmInstall: true,\n ids: await this.workspace.listIds(),\n });\n return this.adjustCheckoutResultsToIde(results);\n }\n\n async importObjectsIfOutdatedAgainstBitmap(): Promise<void> {\n return this.workspace.importObjectsIfOutdatedAgainstBitmap();\n }\n\n async getTemplates(): Promise<TemplateDescriptor[]> {\n const templates = await this.generator.listTemplates();\n return templates;\n }\n\n async getPromptOptionsForTemplate(templateName: string): Promise<PromptOption[] | undefined> {\n const template = await this.generator.getTemplateWithId(templateName);\n return template.template.promptOptions?.();\n }\n\n async createComponent(\n templateName: string,\n idIncludeScope: string,\n promptResults?: PromptResults\n ): Promise<GenerateResult[]> {\n if (!idIncludeScope.includes('/')) {\n throw new Error('id should include the scope name');\n }\n const [scope, ...nameSplit] = idIncludeScope.split('/');\n return this.generator.generateComponentTemplate(\n [nameSplit.join('/')],\n templateName,\n { scope },\n { optimizeReportForNonTerminal: true },\n promptResults\n );\n }\n\n async removeComponent(componentsPattern: string) {\n const results = await this.remove.remove({\n componentsPattern,\n force: true,\n });\n const serializedResults = (results.localResult as RemovedObjects).serialize();\n return serializedResults;\n }\n\n async deleteComponents(componentsPattern: string, opts): Promise<string[]> {\n const results = await this.remove.deleteComps(componentsPattern, opts);\n const serializedResults = results.map((c) => c.id.toString());\n return serializedResults;\n }\n\n async deprecateComponent(id: string, newId?: string, range?: string): Promise<boolean> {\n return this.deprecation.deprecateByCLIValues(id, newId, range);\n }\n async undeprecateComponent(id: string): Promise<boolean> {\n return this.deprecation.unDeprecateByCLIValues(id);\n }\n\n async switchLane(name: string) {\n const results = await this.lanes.switchLanes(name, { skipDependencyInstallation: true });\n return this.adjustCheckoutResultsToIde(results);\n }\n\n private adjustCheckoutResultsToIde(output: ApplyVersionResults) {\n const { components, failedComponents } = output;\n const skipped = failedComponents?.filter((f) => f.unchangedLegitimately).map((f) => f.id.toString());\n const failed = failedComponents?.filter((f) => !f.unchangedLegitimately).map((f) => f.id.toString());\n return {\n succeed: components?.map((c) => c.id.toString()),\n skipped,\n failed,\n };\n }\n\n async getModifiedByConfig(): Promise<ModifiedByConfig[]> {\n const modifiedComps = await this.workspace.modified();\n const autoTagIds = await this.workspace.listAutoTagPendingComponentIds();\n const autoTagComps = await this.workspace.getMany(autoTagIds);\n const locallyDeletedIds = await this.workspace.locallyDeletedIds();\n const locallyDeletedComps = await this.workspace.getMany(locallyDeletedIds);\n const allComps = [...modifiedComps, ...autoTagComps, ...locallyDeletedComps];\n const allIds = allComps.map((c) => c.id);\n const results = await Promise.all(\n allComps.map(async (comp) => {\n const wsComp = await this.componentCompare.getConfigForDiffByCompObject(comp, allIds);\n const scopeComp = await this.componentCompare.getConfigForDiffById(comp.id.toString());\n const hasSameDeps = JSON.stringify(wsComp.dependencies) === JSON.stringify(scopeComp.dependencies);\n const hasSameAspects = JSON.stringify(wsComp.aspects) === JSON.stringify(scopeComp.aspects);\n if (hasSameDeps && hasSameAspects) return null;\n const result: ModifiedByConfig = {\n id: comp.id.toStringWithoutVersion(),\n version: comp.id.version as string,\n };\n if (!hasSameDeps) result.dependencies = { workspace: wsComp.dependencies, scope: scopeComp.dependencies || [] };\n if (!hasSameAspects) result.aspects = { workspace: wsComp.aspects, scope: scopeComp.aspects || {} };\n return result;\n })\n );\n\n return compact(results);\n }\n\n async getDataToInitSCM(options?: { useHashes?: boolean }): Promise<DataToInitSCM> {\n const useHashes = options?.useHashes;\n if (useHashes) {\n // clean up old materialized files since hash-based reads don't need them\n const lastSnapDir = path.join(this.workspace.scope.path, FILES_HISTORY_DIR, LAST_SNAP_DIR);\n await fs.remove(lastSnapDir);\n }\n const ids = this.workspace.listIds();\n const results: DataToInitSCM = {};\n await pMap(\n ids,\n async (id) => {\n const compFiles = await this.workspace.getFilesModification(id);\n // only compute object paths when the extension supports direct object reads, otherwise materialize files to disk\n const objectPathsFromLastSnap = useHashes ? this.getCompFileObjectPathsFromLastSnap(compFiles) : {};\n const pathsFromLastSnap = useHashes ? {} : await this.getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles);\n const idStr = id.toStringWithoutVersion();\n results[idStr] = {\n filesStatus: compFiles.getFilesStatus(),\n pathsFromLastSnap,\n objectPathsFromLastSnap,\n compDir: compFiles.compDir,\n };\n },\n { concurrency: 30 }\n );\n\n return results;\n }\n\n async getFilesStatus(id: string): Promise<FilesStatus> {\n const componentId = await this.workspace.resolveComponentId(id);\n const compFiles = await this.workspace.getFilesModification(componentId);\n return compFiles.getFilesStatus();\n }\n\n async getCompFilesDirPathFromLastSnapForAllComps(): Promise<{ [relativePath: string]: string }> {\n const ids = this.workspace.listIds();\n let results = {};\n await pMap(\n ids,\n async (id) => {\n const idStr = id.toStringWithoutVersion();\n const compResults = await this.getCompFilesDirPathFromLastSnap(idStr);\n results = { ...results, ...compResults };\n },\n { concurrency: 30 }\n );\n return results;\n }\n\n async getLaneHistoryForIDE(laneName?: string) {\n const laneId = laneName ? await this.lanes.parseLaneId(laneName) : this.workspace.getCurrentLaneId();\n if (laneId.isDefault()) {\n return { entries: [], isMain: true };\n }\n await this.lanes.importLaneHistory(laneId);\n const laneHistory = await this.lanes.getLaneHistory(laneId);\n const historyIds = laneHistory.getHistoryIds();\n const history = laneHistory.getHistory();\n const entries = historyIds.map((id) => {\n const item = history[id];\n return {\n id,\n date: item.log.date,\n username: item.log.username,\n email: item.log.email,\n message: item.log.message,\n components: item.components,\n deleted: item.deleted,\n };\n });\n return { entries, isMain: false };\n }\n\n async getLaneHistoryDiffForIDE(\n fromHistoryId: string,\n toHistoryId: string,\n laneName?: string\n ): Promise<LaneDiffForIDEResult> {\n const laneId = laneName ? await this.lanes.parseLaneId(laneName) : this.workspace.getCurrentLaneId();\n if (laneId.isDefault()) {\n throw new Error('lane history diff is not available on main');\n }\n await this.lanes.importLaneHistory(laneId);\n const laneHistory = await this.lanes.getLaneHistory(laneId);\n const laneObj = await this.lanes.loadLane(laneId);\n if (!laneObj) throw new Error(`unable to find lane \"${laneId.toString()}\"`);\n const diffGenerator = new LaneDiffGenerator(this.workspace, this.scope, this.componentCompare);\n const diffResults = await diffGenerator.generateDiffHistory(laneObj, laneHistory, fromHistoryId, toHistoryId);\n return this.toLaneDiffForIDEResult(diffResults);\n }\n\n async getLaneDiffForIDE(): Promise<LaneDiffForIDEResult> {\n const currentLaneId = this.workspace.getCurrentLaneId();\n if (currentLaneId.isDefault()) {\n throw new Error('lane diff is not available on main');\n }\n const diffGenerator = new LaneDiffGenerator(this.workspace, this.scope, this.componentCompare);\n const diffResults = await diffGenerator.generate([]);\n return this.toLaneDiffForIDEResult(diffResults);\n }\n\n private toLaneDiffForIDEResult(diffResults: LaneDiffResults): LaneDiffForIDEResult {\n return {\n newCompsFrom: diffResults.newCompsFrom,\n newCompsTo: diffResults.newCompsTo,\n compsWithDiff: diffResults.compsWithDiff.map((d) => ({\n id: d.id.toString(),\n hasDiff: d.hasDiff,\n filesDiff: (d.filesDiff || []).map((f) => ({\n filePath: f.filePath,\n status: f.status,\n fromContent: f.status === 'UNCHANGED' ? undefined : f.fromContent,\n toContent: f.status === 'UNCHANGED' ? undefined : f.toContent,\n })),\n fieldsDiff: d.fieldsDiff,\n })),\n compsWithNoChanges: diffResults.compsWithNoChanges,\n toLaneName: diffResults.toLaneName,\n fromLaneName: diffResults.fromLaneName,\n failures: diffResults.failures.map((f) => ({\n id: f.id.toString(),\n msg: f.msg,\n })),\n };\n }\n\n getCurrentLaneName(includeScope = false): string {\n const currentLaneId = this.workspace.getCurrentLaneId();\n if (!includeScope) return currentLaneId.name;\n if (currentLaneId.isDefault()) return currentLaneId.name;\n return currentLaneId.toString();\n }\n\n async tagOrSnap(message = '') {\n const params = { message, build: false };\n return this.workspace.isOnMain() ? this.snapping.tag(params) : this.snapping.snap(params);\n }\n\n async tag(message = ''): Promise<string[]> {\n const params = { message, build: false };\n const results = await this.snapping.tag(params);\n return (results?.taggedComponents || []).map((c) => c.id.toString());\n }\n\n async snap(message = ''): Promise<string[]> {\n const params = { message, build: false };\n const results = await this.snapping.snap(params);\n return (results?.snappedComponents || []).map((c) => c.id.toString());\n }\n\n async getCompDetails(id: string, includeSchema = false) {\n this.logger.debug(`getCompDetails(${id}, ${includeSchema})`);\n const compId = await this.workspace.resolveComponentId(id);\n const existsLocally = this.workspace.hasId(compId);\n const getComp = async () => {\n if (existsLocally) {\n return this.workspace.get(compId);\n }\n const comp = await this.scope.get(compId);\n if (comp) return comp;\n throw new ComponentNotFound(compId);\n };\n const comp = await getComp();\n\n const fragments = this.component.getShowFragments();\n const titlesToInclude = ['id', 'env', 'package name', 'files', 'dev files', 'deprecated'];\n const showResults: Record<string, any> = {};\n await Promise.all(\n fragments.map(async (fragment) => {\n const result = fragment.json ? await fragment.json(comp) : undefined;\n if (!result || !titlesToInclude.includes(result.title)) return;\n if (result.title === 'deprecated' && !result.json.isDeprecate) return; // skip if not deprecated\n showResults[result.title] = result.json;\n })\n );\n\n const deps = comp.getDependencies();\n showResults.dependencies = deps.map((dep) => {\n const pkg = dep.getPackageName?.() || dep.id;\n const pkgWithVer = `${pkg}@${dep.version}`;\n const compIdStr = dep.type === 'component' ? `, component-id: ${dep.id}` : '';\n return `${pkgWithVer} (lifecycle: ${dep.lifecycle}, type: ${dep.type}, source: ${dep.source}${compIdStr})`;\n });\n\n if (includeSchema) {\n try {\n const schema = existsLocally\n ? await this.schema.getSchema(comp)\n : await this.schema.getSchemaFromRemote(comp.id.toString());\n showResults.publicAPI = schema.toStringPerType();\n } catch (error) {\n // If schema fails, add error info instead of crashing\n showResults.publicAPI = `Error fetching schema: ${(error as Error).message}`;\n }\n }\n\n // Add docs content if available from teambit.docs/docs aspect\n try {\n const docsAspectFiles = showResults['dev files']?.[`teambit.docs/docs`];\n if (docsAspectFiles && Array.isArray(docsAspectFiles) && docsAspectFiles.length > 0) {\n showResults.docs = {};\n docsAspectFiles.forEach((relativePath: string) => {\n const file = comp.filesystem.files.find((f) => f.relative === relativePath);\n if (file) {\n showResults.docs[relativePath] = file.contents.toString();\n }\n });\n }\n } catch (error) {\n // If docs extraction fails, add error info but don't crash\n showResults.docs = `Error fetching docs: ${(error as Error).message}`;\n }\n\n // Add usage examples from teambit.compositions/compositions aspect\n try {\n const compositionsAspectFiles = showResults['dev files']?.[`teambit.compositions/compositions`];\n if (compositionsAspectFiles && Array.isArray(compositionsAspectFiles) && compositionsAspectFiles.length > 0) {\n showResults.usageExamples = {};\n compositionsAspectFiles.forEach((relativePath: string) => {\n const file = comp.filesystem.files.find((f) => f.relative === relativePath);\n if (file) {\n const fileContent = file.contents.toString();\n showResults.usageExamples[relativePath] = fileContent;\n }\n });\n }\n } catch (error) {\n // If composition extraction fails, add error info but don't crash\n showResults.usageExamples = `Error fetching usage examples: ${(error as Error).message}`;\n }\n\n showResults.url = ComponentUrl.toUrl(compId, { includeVersion: false });\n\n // Add component location status\n // Check if component exists as a package by looking it up in the pnpm lock file\n const packageName = comp.getPackageName();\n let componentLocation: string;\n\n if (existsLocally) {\n const compDir = this.workspace.componentDir(compId, { ignoreVersion: true }, { relative: true });\n componentLocation = `exists locally in the workspace at '${compDir}'`;\n } else {\n let isInstalledAsPackage = false;\n\n try {\n const lockFilePath = path.join(this.workspace.path, 'node_modules', '.pnpm', 'lock.yaml');\n if (await fs.pathExists(lockFilePath)) {\n const lockFileContent = await fs.readFile(lockFilePath, 'utf8');\n // Check if the package name exists in the lock file\n isInstalledAsPackage = lockFileContent.includes(packageName);\n }\n } catch (error) {\n this.logger.warn(`Error checking package existence for ${packageName}: ${(error as Error).message}`);\n // If error occurs during package check, default to false\n isInstalledAsPackage = false;\n }\n\n componentLocation = isInstalledAsPackage ? 'installed as a package' : 'a remote component';\n }\n\n showResults.componentLocation = componentLocation;\n\n return showResults;\n }\n}\n\nfunction fileIdToTimestamp(dateStr: string): number {\n const [year, month, day, hours, minutes, seconds] = dateStr.split('-');\n const date = new Date(Number(year), Number(month) - 1, Number(day), Number(hours), Number(minutes), Number(seconds));\n return date.getTime();\n}\n"],"mappings":"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","ignoreList":[]}
@@ -28,12 +28,52 @@ export declare class ApiServerMain {
28
28
  private watcher;
29
29
  private installer;
30
30
  private importer;
31
+ private serverToken?;
31
32
  constructor(workspace: Workspace, logger: Logger, express: ExpressMain, watcher: WatcherMain, installer: InstallMain, importer: ImporterMain);
32
33
  runApiServer(options: {
33
34
  port: number;
34
35
  compile: boolean;
35
36
  }): Promise<unknown>;
36
37
  writeUsedPort(port: number): void;
38
+ /**
39
+ * Generate a fresh per-server bearer token and persist it to a 0600 file.
40
+ * Clients (e.g. the bit-vscode extension) read this file and send the token
41
+ * as `Authorization: Bearer <token>` on every request.
42
+ *
43
+ * Backwards compatibility: clients that don't yet know about this file (older
44
+ * extension versions) won't send the header and will receive 401 with a
45
+ * message pointing them at the upgrade. Old bit-server versions don't write
46
+ * this file, so a new client checking for it gracefully falls back to no
47
+ * auth header — meaning a NEW extension keeps working against an OLD
48
+ * bit-server.
49
+ */
50
+ private writeServerToken;
51
+ private getServerTokenFilePath;
52
+ /**
53
+ * Host-header check: only accept requests targeting a loopback hostname.
54
+ * Defends against DNS-rebinding attacks where a malicious page on
55
+ * `evil.example` flips DNS to 127.0.0.1 — the browser sends `Host:
56
+ * evil.example`, which we reject with 403 here.
57
+ *
58
+ * The server already listens on 127.0.0.1 only, so any request reaching us
59
+ * arrived via loopback. The remaining concern is the *named* origin the
60
+ * browser thinks it's talking to.
61
+ */
62
+ private createHostCheckMiddleware;
63
+ /**
64
+ * Authentication middleware: requires `Authorization: Bearer <serverToken>`
65
+ * on every request except OPTIONS preflight (handled by cors) and the
66
+ * unauthenticated `/api/_health` liveness probe.
67
+ *
68
+ * GET requests can also authenticate via a `?token=...` query parameter,
69
+ * since browser-native WebSocket and EventSource cannot set custom headers
70
+ * from JavaScript. The param is stripped from `req.url` before downstream
71
+ * handling so the proxy and logs never see it.
72
+ *
73
+ * Runs before bodyParser so unauthenticated requests can't trigger
74
+ * large-body parsing.
75
+ */
76
+ private createAuthMiddleware;
37
77
  /**
38
78
  * Monitor the parent process (typically VSCode) and shut down if it dies.
39
79
  *