@teambit/api-server 1.0.371 → 1.0.373
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/artifacts/__bit_junit.xml +1 -1
- package/artifacts/schema.json +1 -1
- package/dist/api-for-ide.d.ts +1 -0
- package/dist/api-for-ide.js +3 -0
- package/dist/api-for-ide.js.map +1 -1
- package/dist/cli-raw.route.js +19 -1
- package/dist/cli-raw.route.js.map +1 -1
- package/package.json +21 -20
- /package/dist/{preview-1722880610382.js → preview-1723000713766.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<testsuites tests="0" failures="0" errors="0" skipped="0">
|
|
3
|
-
<testsuite name="teambit.harmony/api-server@1.0.
|
|
3
|
+
<testsuite name="teambit.harmony/api-server@1.0.373" tests="0" failures="0" errors="0" skipped="0"/>
|
|
4
4
|
</testsuites>
|
package/artifacts/schema.json
CHANGED
package/dist/api-for-ide.d.ts
CHANGED
|
@@ -97,6 +97,7 @@ export declare class APIForIDE {
|
|
|
97
97
|
aspects?: Record<string, any>;
|
|
98
98
|
}>;
|
|
99
99
|
setDefaultScope(scopeName: string): Promise<string>;
|
|
100
|
+
getDefaultScope(): string;
|
|
100
101
|
getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles: CompFiles): Promise<{
|
|
101
102
|
[relativePath: string]: string;
|
|
102
103
|
}>;
|
package/dist/api-for-ide.js
CHANGED
|
@@ -252,6 +252,9 @@ class APIForIDE {
|
|
|
252
252
|
await this.workspace.setDefaultScope(scopeName);
|
|
253
253
|
return scopeName;
|
|
254
254
|
}
|
|
255
|
+
getDefaultScope() {
|
|
256
|
+
return this.workspace.defaultScope;
|
|
257
|
+
}
|
|
255
258
|
async getCompFilesDirPathFromLastSnapUsingCompFiles(compFiles) {
|
|
256
259
|
const compId = compFiles.id;
|
|
257
260
|
if (!compId.hasVersion()) return {}; // it's a new component.
|
package/dist/api-for-ide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","_fsExtra","_legacy","_pMap","_consumer","_lodash","_constants","_laneId","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","LAST_SNAP_DIR","CMD_HISTORY","APIForIDE","constructor","workspace","snapping","lanes","installer","exporter","checkout","componentLog","componentCompare","generator","remove","config","logStartCmdHistory","op","str","writeToCmdHistory","logFinishCmdHistory","code","endStr","fs","appendFile","path","join","scope","Date","toISOString","listIdsWithPaths","ids","listIds","reduce","acc","id","toStringWithoutVersion","componentDir","getMainFilePath","compId","resolveComponentId","comp","get","state","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","getCompFiles","dirAbs","filesRelative","filesystem","files","file","relative","getCompFilesDirPathFromLastSnap","hasVersion","compDir","ignoreVersion","filePathsRootDir","modelComponent","getBitObjectModelComponent","versionObject","getBitObjectVersion","version","sourceFiles","modelFilesToSourceFiles","legacyScope","objects","Promise","all","filePath","outputFile","contents","pathJoinLinux","catObject","hash","object","getRawObject","JSON","stringify","content","logFile","getFileHistoryHashes","changedFilesFromParent","getChangedFilesFromParent","getConfigForDiff","getConfigForDiffById","setDefaultScope","scopeName","getCompFilesDirPathFromLastSnapUsingCompFiles","compFiles","getHeadFiles","warmWorkspaceCache","warmCache","clearCache","clearAllComponentsCache","install","options","opts","optimizeReportForNonTerminal","dedupe","updateExisting","import","export","componentsIds","removedIds","exportedLanes","rippleJobs","rippleJobsFullUrls","job","getCloudDomain","l","checkoutHead","skipNpmInstall","adjustCheckoutResultsToIde","getTemplates","templates","listTemplates","createComponent","templateName","idIncludeScope","nameSplit","split","generateComponentTemplate","removeComponent","componentsPattern","force","serializedResults","localResult","serialize","switchLane","output","failedComponents","skipped","f","unchangedLegitimately","failed","succeed","getModifiedByConfig","modifiedComps","modified","wsComp","getConfigForDiffByCompObject","scopeComp","hasSameDeps","dependencies","hasSameAspects","aspects","result","compact","getDataToInitSCM","pMap","getFilesModification","pathsFromLastSnap","idStr","filesStatus","getFilesStatus","concurrency","componentId","getCompFilesDirPathFromLastSnapForAllComps","compResults","getCurrentLaneName","getCurrentLaneId","tagOrSnap","message","params","build","isOnMain","tag","snap","taggedComponents","snappedComponents","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 { CompFiles, Workspace, FilesStatus } from '@teambit/workspace';\nimport { PathOsBasedAbsolute, PathOsBasedRelative, pathJoinLinux } from '@teambit/legacy.utils';\nimport pMap from 'p-map';\nimport { SnappingMain } from '@teambit/snapping';\nimport { LanesMain } from '@teambit/lanes';\nimport { InstallMain } from '@teambit/install';\nimport { ExportMain } from '@teambit/export';\nimport { CheckoutMain } from '@teambit/checkout';\nimport { ApplyVersionResults } from '@teambit/merging';\nimport { ComponentLogMain, FileHashDiffFromParent } from '@teambit/component-log';\nimport { Log } from '@teambit/legacy/dist/scope/models/lane';\nimport { ComponentCompareMain } from '@teambit/component-compare';\nimport { GeneratorMain } from '@teambit/generator';\nimport { getParsedHistoryMetadata } from '@teambit/legacy/dist/consumer/consumer';\nimport RemovedObjects from '@teambit/legacy/dist/scope/removed-components';\nimport { RemoveMain } from '@teambit/remove';\nimport { compact } from 'lodash';\nimport { getCloudDomain } from '@teambit/legacy/dist/constants';\nimport { ConfigMain } from '@teambit/config';\nimport { LANE_REMOTE_DELIMITER, LaneId } from '@teambit/lane-id';\n\nconst FILES_HISTORY_DIR = 'files-history';\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: Log;\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\nexport class APIForIDE {\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 ) {}\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 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 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 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\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 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 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 = {}) {\n const opts = {\n optimizeReportForNonTerminal: true,\n dedupe: true,\n updateExisting: false,\n import: false,\n ...options,\n };\n\n return this.installer.install(undefined, opts);\n }\n\n async export() {\n const { componentsIds, removedIds, exportedLanes, rippleJobs } = await this.exporter.export();\n const rippleJobsFullUrls = rippleJobs.map((job) => `https://${getCloudDomain()}/ripple-ci/job/${job}`);\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: rippleJobsFullUrls,\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 getTemplates() {\n const templates = await this.generator.listTemplates();\n return templates;\n }\n\n async createComponent(templateName: string, idIncludeScope: string) {\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([nameSplit.join('/')], templateName, { scope });\n }\n\n async removeComponent(id: string) {\n const results = await this.remove.remove({\n componentsPattern: id,\n force: true,\n });\n const serializedResults = (results.localResult as RemovedObjects).serialize();\n return serializedResults;\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 results = await Promise.all(\n modifiedComps.map(async (comp) => {\n const wsComp = await this.componentCompare.getConfigForDiffByCompObject(comp);\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(): string {\n return this.workspace.getCurrentLaneId().name;\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\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","_legacy","_pMap","_consumer","_lodash","_constants","_laneId","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","LAST_SNAP_DIR","CMD_HISTORY","APIForIDE","constructor","workspace","snapping","lanes","installer","exporter","checkout","componentLog","componentCompare","generator","remove","config","logStartCmdHistory","op","str","writeToCmdHistory","logFinishCmdHistory","code","endStr","fs","appendFile","path","join","scope","Date","toISOString","listIdsWithPaths","ids","listIds","reduce","acc","id","toStringWithoutVersion","componentDir","getMainFilePath","compId","resolveComponentId","comp","get","state","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","getCompFiles","dirAbs","filesRelative","filesystem","files","file","relative","getCompFilesDirPathFromLastSnap","hasVersion","compDir","ignoreVersion","filePathsRootDir","modelComponent","getBitObjectModelComponent","versionObject","getBitObjectVersion","version","sourceFiles","modelFilesToSourceFiles","legacyScope","objects","Promise","all","filePath","outputFile","contents","pathJoinLinux","catObject","hash","object","getRawObject","JSON","stringify","content","logFile","getFileHistoryHashes","changedFilesFromParent","getChangedFilesFromParent","getConfigForDiff","getConfigForDiffById","setDefaultScope","scopeName","getDefaultScope","defaultScope","getCompFilesDirPathFromLastSnapUsingCompFiles","compFiles","getHeadFiles","warmWorkspaceCache","warmCache","clearCache","clearAllComponentsCache","install","options","opts","optimizeReportForNonTerminal","dedupe","updateExisting","import","export","componentsIds","removedIds","exportedLanes","rippleJobs","rippleJobsFullUrls","job","getCloudDomain","l","checkoutHead","skipNpmInstall","adjustCheckoutResultsToIde","getTemplates","templates","listTemplates","createComponent","templateName","idIncludeScope","nameSplit","split","generateComponentTemplate","removeComponent","componentsPattern","force","serializedResults","localResult","serialize","switchLane","output","failedComponents","skipped","f","unchangedLegitimately","failed","succeed","getModifiedByConfig","modifiedComps","modified","wsComp","getConfigForDiffByCompObject","scopeComp","hasSameDeps","dependencies","hasSameAspects","aspects","result","compact","getDataToInitSCM","pMap","getFilesModification","pathsFromLastSnap","idStr","filesStatus","getFilesStatus","concurrency","componentId","getCompFilesDirPathFromLastSnapForAllComps","compResults","getCurrentLaneName","getCurrentLaneId","tagOrSnap","message","params","build","isOnMain","tag","snap","taggedComponents","snappedComponents","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 { CompFiles, Workspace, FilesStatus } from '@teambit/workspace';\nimport { PathOsBasedAbsolute, PathOsBasedRelative, pathJoinLinux } from '@teambit/legacy.utils';\nimport pMap from 'p-map';\nimport { SnappingMain } from '@teambit/snapping';\nimport { LanesMain } from '@teambit/lanes';\nimport { InstallMain } from '@teambit/install';\nimport { ExportMain } from '@teambit/export';\nimport { CheckoutMain } from '@teambit/checkout';\nimport { ApplyVersionResults } from '@teambit/merging';\nimport { ComponentLogMain, FileHashDiffFromParent } from '@teambit/component-log';\nimport { Log } from '@teambit/legacy/dist/scope/models/lane';\nimport { ComponentCompareMain } from '@teambit/component-compare';\nimport { GeneratorMain } from '@teambit/generator';\nimport { getParsedHistoryMetadata } from '@teambit/legacy/dist/consumer/consumer';\nimport RemovedObjects from '@teambit/legacy/dist/scope/removed-components';\nimport { RemoveMain } from '@teambit/remove';\nimport { compact } from 'lodash';\nimport { getCloudDomain } from '@teambit/legacy/dist/constants';\nimport { ConfigMain } from '@teambit/config';\nimport { LANE_REMOTE_DELIMITER, LaneId } from '@teambit/lane-id';\n\nconst FILES_HISTORY_DIR = 'files-history';\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: Log;\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\nexport class APIForIDE {\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 ) {}\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 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 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 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\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 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 = {}) {\n const opts = {\n optimizeReportForNonTerminal: true,\n dedupe: true,\n updateExisting: false,\n import: false,\n ...options,\n };\n\n return this.installer.install(undefined, opts);\n }\n\n async export() {\n const { componentsIds, removedIds, exportedLanes, rippleJobs } = await this.exporter.export();\n const rippleJobsFullUrls = rippleJobs.map((job) => `https://${getCloudDomain()}/ripple-ci/job/${job}`);\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: rippleJobsFullUrls,\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 getTemplates() {\n const templates = await this.generator.listTemplates();\n return templates;\n }\n\n async createComponent(templateName: string, idIncludeScope: string) {\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([nameSplit.join('/')], templateName, { scope });\n }\n\n async removeComponent(id: string) {\n const results = await this.remove.remove({\n componentsPattern: id,\n force: true,\n });\n const serializedResults = (results.localResult as RemovedObjects).serialize();\n return serializedResults;\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 results = await Promise.all(\n modifiedComps.map(async (comp) => {\n const wsComp = await this.componentCompare.getConfigForDiffByCompObject(comp);\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(): string {\n return this.workspace.getCurrentLaneId().name;\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\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":[]}
|
package/dist/cli-raw.route.js
CHANGED
|
@@ -25,6 +25,13 @@ function _logger() {
|
|
|
25
25
|
};
|
|
26
26
|
return data;
|
|
27
27
|
}
|
|
28
|
+
function _harmonyModules() {
|
|
29
|
+
const data = require("@teambit/harmony.modules.feature-toggle");
|
|
30
|
+
_harmonyModules = function () {
|
|
31
|
+
return data;
|
|
32
|
+
};
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
28
35
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
36
|
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; }
|
|
30
37
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
@@ -48,12 +55,19 @@ class CLIRawRoute {
|
|
|
48
55
|
_defineProperty(this, "middlewares", [async (req, res) => {
|
|
49
56
|
const {
|
|
50
57
|
command,
|
|
51
|
-
pwd
|
|
58
|
+
pwd,
|
|
59
|
+
envBitFeatures
|
|
52
60
|
} = req.body;
|
|
53
61
|
this.logger.debug(`cli-raw server: got request for ${command}`);
|
|
54
62
|
if (pwd && !process.cwd().startsWith(pwd)) {
|
|
55
63
|
throw new Error(`bit-server is running on a different directory. bit-server: ${process.cwd()}, pwd: ${pwd}`);
|
|
56
64
|
}
|
|
65
|
+
const currentBitFeatures = process.env.BIT_FEATURES;
|
|
66
|
+
const shouldReloadFeatureToggle = currentBitFeatures !== envBitFeatures;
|
|
67
|
+
if (shouldReloadFeatureToggle) {
|
|
68
|
+
process.env.BIT_FEATURES = envBitFeatures;
|
|
69
|
+
(0, _harmonyModules().reloadFeatureToggle)();
|
|
70
|
+
}
|
|
57
71
|
const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log
|
|
58
72
|
const commandStr = command.join(' ');
|
|
59
73
|
const cmdStrLog = `${randomNumber} ${commandStr}`;
|
|
@@ -85,6 +99,10 @@ class CLIRawRoute {
|
|
|
85
99
|
this.logger.clearStatusLine();
|
|
86
100
|
// change chalk back to false, otherwise, the IDE will have colors. (this is a global setting)
|
|
87
101
|
_chalk().default.enabled = false;
|
|
102
|
+
if (shouldReloadFeatureToggle) {
|
|
103
|
+
process.env.BIT_FEATURES = currentBitFeatures;
|
|
104
|
+
(0, _harmonyModules().reloadFeatureToggle)();
|
|
105
|
+
}
|
|
88
106
|
}
|
|
89
107
|
}]);
|
|
90
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_logger","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRawRoute","constructor","logger","cli","apiForIDE","req","res","command","pwd","body","debug","process","cwd","startsWith","Error","randomNumber","Math","floor","random","commandStr","join","cmdStrLog","logStartCmdHistory","legacyLogger","isDaemon","enableChalk","cliParser","CLIParser","commands","groups","onCommandStartSlot","commandRunner","parse","result","runCommand","logFinishCmdHistory","json","err","YargsExitWorkaround","helpMsg","exitCode","error","status","jsonp","message","clearStatusLine","chalk","enabled","exports","level"],"sources":["cli-raw.route.ts"],"sourcesContent":["import { CLIMain, CLIParser, YargsExitWorkaround } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Route, Request, Response } from '@teambit/express';\nimport { Logger } from '@teambit/logger';\nimport legacyLogger from '@teambit/legacy/dist/logger/logger';\nimport { APIForIDE } from './api-for-ide';\n\n/**\n * example usage:\n * post to http://localhost:3000/api/cli\n * with the following json as the body\n *\n{\n \"command\": [\"tag comp1 --build\"]\n}\n */\nexport class CLIRawRoute implements Route {\n constructor(private logger: Logger, private cli: CLIMain, private apiForIDE: APIForIDE) {}\n\n method = 'post';\n route = '/cli-raw';\n\n middlewares = [\n async (req: Request, res: Response) => {\n const { command, pwd } = req.body;\n this.logger.debug(`cli-raw server: got request for ${command}`);\n if (pwd && !process.cwd().startsWith(pwd)) {\n throw new Error(`bit-server is running on a different directory. bit-server: ${process.cwd()}, pwd: ${pwd}`);\n }\n\n const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log\n const commandStr = command.join(' ');\n const cmdStrLog = `${randomNumber} ${commandStr}`;\n await this.apiForIDE.logStartCmdHistory(cmdStrLog);\n legacyLogger.isDaemon = true;\n enableChalk();\n const cliParser = new CLIParser(this.cli.commands, this.cli.groups, this.cli.onCommandStartSlot);\n try {\n const commandRunner = await cliParser.parse(command);\n const result = await commandRunner.runCommand(true);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);\n res.json(result);\n } catch (err: any) {\n if (err instanceof YargsExitWorkaround) {\n res.json({ data: err.helpMsg, exitCode: err.exitCode });\n } else {\n this.logger.error(`cli-raw server: got an error for ${commandStr}`, err);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);\n res.status(500);\n res.jsonp({\n message: err.message,\n error: err,\n });\n }\n } finally {\n this.logger.clearStatusLine();\n // change chalk back to false, otherwise, the IDE will have colors. (this is a global setting)\n chalk.enabled = false;\n }\n },\n ];\n}\n\n/**\n * because this gets called from the express server, which gets spawn from a script, chalk defaults to false.\n * changing only the \"level\" is not enough, it must be enabled as well.\n * only when calling this route from the terminal, we want colors. on the IDE, we don't want colors.\n */\nfunction enableChalk() {\n chalk.enabled = true;\n chalk.level = 3;\n}\n"],"mappings":";;;;;;AAAA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_logger","_harmonyModules","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRawRoute","constructor","logger","cli","apiForIDE","req","res","command","pwd","envBitFeatures","body","debug","process","cwd","startsWith","Error","currentBitFeatures","env","BIT_FEATURES","shouldReloadFeatureToggle","reloadFeatureToggle","randomNumber","Math","floor","random","commandStr","join","cmdStrLog","logStartCmdHistory","legacyLogger","isDaemon","enableChalk","cliParser","CLIParser","commands","groups","onCommandStartSlot","commandRunner","parse","result","runCommand","logFinishCmdHistory","json","err","YargsExitWorkaround","helpMsg","exitCode","error","status","jsonp","message","clearStatusLine","chalk","enabled","exports","level"],"sources":["cli-raw.route.ts"],"sourcesContent":["import { CLIMain, CLIParser, YargsExitWorkaround } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Route, Request, Response } from '@teambit/express';\nimport { Logger } from '@teambit/logger';\nimport legacyLogger from '@teambit/legacy/dist/logger/logger';\nimport { reloadFeatureToggle } from '@teambit/harmony.modules.feature-toggle';\nimport { APIForIDE } from './api-for-ide';\n\n/**\n * example usage:\n * post to http://localhost:3000/api/cli\n * with the following json as the body\n *\n{\n \"command\": [\"tag comp1 --build\"]\n}\n */\nexport class CLIRawRoute implements Route {\n constructor(private logger: Logger, private cli: CLIMain, private apiForIDE: APIForIDE) {}\n\n method = 'post';\n route = '/cli-raw';\n\n middlewares = [\n async (req: Request, res: Response) => {\n const { command, pwd, envBitFeatures } = req.body;\n this.logger.debug(`cli-raw server: got request for ${command}`);\n if (pwd && !process.cwd().startsWith(pwd)) {\n throw new Error(`bit-server is running on a different directory. bit-server: ${process.cwd()}, pwd: ${pwd}`);\n }\n const currentBitFeatures = process.env.BIT_FEATURES;\n const shouldReloadFeatureToggle = currentBitFeatures !== envBitFeatures;\n if (shouldReloadFeatureToggle) {\n process.env.BIT_FEATURES = envBitFeatures;\n reloadFeatureToggle();\n }\n\n const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log\n const commandStr = command.join(' ');\n const cmdStrLog = `${randomNumber} ${commandStr}`;\n await this.apiForIDE.logStartCmdHistory(cmdStrLog);\n legacyLogger.isDaemon = true;\n enableChalk();\n const cliParser = new CLIParser(this.cli.commands, this.cli.groups, this.cli.onCommandStartSlot);\n try {\n const commandRunner = await cliParser.parse(command);\n const result = await commandRunner.runCommand(true);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);\n res.json(result);\n } catch (err: any) {\n if (err instanceof YargsExitWorkaround) {\n res.json({ data: err.helpMsg, exitCode: err.exitCode });\n } else {\n this.logger.error(`cli-raw server: got an error for ${commandStr}`, err);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);\n res.status(500);\n res.jsonp({\n message: err.message,\n error: err,\n });\n }\n } finally {\n this.logger.clearStatusLine();\n // change chalk back to false, otherwise, the IDE will have colors. (this is a global setting)\n chalk.enabled = false;\n if (shouldReloadFeatureToggle) {\n process.env.BIT_FEATURES = currentBitFeatures;\n reloadFeatureToggle();\n }\n }\n },\n ];\n}\n\n/**\n * because this gets called from the express server, which gets spawn from a script, chalk defaults to false.\n * changing only the \"level\" is not enough, it must be enabled as well.\n * only when calling this route from the terminal, we want colors. on the IDE, we don't want colors.\n */\nfunction enableChalk() {\n chalk.enabled = true;\n chalk.level = 3;\n}\n"],"mappings":";;;;;;AAAA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,gBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,eAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8E,SAAAG,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;AAG9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMgB,WAAW,CAAkB;EACxCC,WAAWA,CAASC,MAAc,EAAUC,GAAY,EAAUC,SAAoB,EAAE;IAAA,KAApEF,MAAc,GAAdA,MAAc;IAAA,KAAUC,GAAY,GAAZA,GAAY;IAAA,KAAUC,SAAoB,GAApBA,SAAoB;IAAAtB,eAAA,iBAE7E,MAAM;IAAAA,eAAA,gBACP,UAAU;IAAAA,eAAA,sBAEJ,CACZ,OAAOuB,GAAY,EAAEC,GAAa,KAAK;MACrC,MAAM;QAAEC,OAAO;QAAEC,GAAG;QAAEC;MAAe,CAAC,GAAGJ,GAAG,CAACK,IAAI;MACjD,IAAI,CAACR,MAAM,CAACS,KAAK,CAAC,mCAAmCJ,OAAO,EAAE,CAAC;MAC/D,IAAIC,GAAG,IAAI,CAACI,OAAO,CAACC,GAAG,CAAC,CAAC,CAACC,UAAU,CAACN,GAAG,CAAC,EAAE;QACzC,MAAM,IAAIO,KAAK,CAAC,+DAA+DH,OAAO,CAACC,GAAG,CAAC,CAAC,UAAUL,GAAG,EAAE,CAAC;MAC9G;MACA,MAAMQ,kBAAkB,GAAGJ,OAAO,CAACK,GAAG,CAACC,YAAY;MACnD,MAAMC,yBAAyB,GAAGH,kBAAkB,KAAKP,cAAc;MACvE,IAAIU,yBAAyB,EAAE;QAC7BP,OAAO,CAACK,GAAG,CAACC,YAAY,GAAGT,cAAc;QACzC,IAAAW,qCAAmB,EAAC,CAAC;MACvB;MAEA,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;MACxD,MAAMC,UAAU,GAAGlB,OAAO,CAACmB,IAAI,CAAC,GAAG,CAAC;MACpC,MAAMC,SAAS,GAAG,GAAGN,YAAY,IAAII,UAAU,EAAE;MACjD,MAAM,IAAI,CAACrB,SAAS,CAACwB,kBAAkB,CAACD,SAAS,CAAC;MAClDE,iBAAY,CAACC,QAAQ,GAAG,IAAI;MAC5BC,WAAW,CAAC,CAAC;MACb,MAAMC,SAAS,GAAG,KAAIC,gBAAS,EAAC,IAAI,CAAC9B,GAAG,CAAC+B,QAAQ,EAAE,IAAI,CAAC/B,GAAG,CAACgC,MAAM,EAAE,IAAI,CAAChC,GAAG,CAACiC,kBAAkB,CAAC;MAChG,IAAI;QACF,MAAMC,aAAa,GAAG,MAAML,SAAS,CAACM,KAAK,CAAC/B,OAAO,CAAC;QACpD,MAAMgC,MAAM,GAAG,MAAMF,aAAa,CAACG,UAAU,CAAC,IAAI,CAAC;QACnD,MAAM,IAAI,CAACpC,SAAS,CAACqC,mBAAmB,CAACd,SAAS,EAAE,CAAC,CAAC;QACtDrB,GAAG,CAACoC,IAAI,CAACH,MAAM,CAAC;MAClB,CAAC,CAAC,OAAOI,GAAQ,EAAE;QACjB,IAAIA,GAAG,YAAYC,0BAAmB,EAAE;UACtCtC,GAAG,CAACoC,IAAI,CAAC;YAAErE,IAAI,EAAEsE,GAAG,CAACE,OAAO;YAAEC,QAAQ,EAAEH,GAAG,CAACG;UAAS,CAAC,CAAC;QACzD,CAAC,MAAM;UACL,IAAI,CAAC5C,MAAM,CAAC6C,KAAK,CAAC,oCAAoCtB,UAAU,EAAE,EAAEkB,GAAG,CAAC;UACxE,MAAM,IAAI,CAACvC,SAAS,CAACqC,mBAAmB,CAACd,SAAS,EAAE,CAAC,CAAC;UACtDrB,GAAG,CAAC0C,MAAM,CAAC,GAAG,CAAC;UACf1C,GAAG,CAAC2C,KAAK,CAAC;YACRC,OAAO,EAAEP,GAAG,CAACO,OAAO;YACpBH,KAAK,EAAEJ;UACT,CAAC,CAAC;QACJ;MACF,CAAC,SAAS;QACR,IAAI,CAACzC,MAAM,CAACiD,eAAe,CAAC,CAAC;QAC7B;QACAC,gBAAK,CAACC,OAAO,GAAG,KAAK;QACrB,IAAIlC,yBAAyB,EAAE;UAC7BP,OAAO,CAACK,GAAG,CAACC,YAAY,GAAGF,kBAAkB;UAC7C,IAAAI,qCAAmB,EAAC,CAAC;QACvB;MACF;IACF,CAAC,CACF;EArDwF;AAsD3F;;AAEA;AACA;AACA;AACA;AACA;AAJAkC,OAAA,CAAAtD,WAAA,GAAAA,WAAA;AAKA,SAAS+B,WAAWA,CAAA,EAAG;EACrBqB,gBAAK,CAACC,OAAO,GAAG,IAAI;EACpBD,gBAAK,CAACG,KAAK,GAAG,CAAC;AACjB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/api-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.373",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/harmony/api-server",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.harmony",
|
|
8
8
|
"name": "api-server",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.373"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0",
|
|
@@ -18,26 +18,27 @@
|
|
|
18
18
|
"pretty-time": "1.1.0",
|
|
19
19
|
"@teambit/lane-id": "0.0.311",
|
|
20
20
|
"@teambit/harmony": "0.4.6",
|
|
21
|
-
"@teambit/checkout": "1.0.
|
|
22
|
-
"@teambit/component-compare": "1.0.
|
|
23
|
-
"@teambit/component-log": "1.0.
|
|
24
|
-
"@teambit/config": "0.0.
|
|
25
|
-
"@teambit/export": "1.0.
|
|
26
|
-
"@teambit/generator": "1.0.
|
|
27
|
-
"@teambit/install": "1.0.
|
|
28
|
-
"@teambit/lanes": "1.0.
|
|
21
|
+
"@teambit/checkout": "1.0.373",
|
|
22
|
+
"@teambit/component-compare": "1.0.373",
|
|
23
|
+
"@teambit/component-log": "1.0.373",
|
|
24
|
+
"@teambit/config": "0.0.1124",
|
|
25
|
+
"@teambit/export": "1.0.373",
|
|
26
|
+
"@teambit/generator": "1.0.374",
|
|
27
|
+
"@teambit/install": "1.0.373",
|
|
28
|
+
"@teambit/lanes": "1.0.373",
|
|
29
29
|
"@teambit/legacy.utils": "0.0.4",
|
|
30
|
-
"@teambit/merging": "1.0.
|
|
31
|
-
"@teambit/remove": "1.0.
|
|
32
|
-
"@teambit/snapping": "1.0.
|
|
33
|
-
"@teambit/workspace": "1.0.
|
|
34
|
-
"@teambit/cli": "0.0.
|
|
35
|
-
"@teambit/component": "1.0.
|
|
36
|
-
"@teambit/express": "0.0.
|
|
30
|
+
"@teambit/merging": "1.0.373",
|
|
31
|
+
"@teambit/remove": "1.0.373",
|
|
32
|
+
"@teambit/snapping": "1.0.373",
|
|
33
|
+
"@teambit/workspace": "1.0.373",
|
|
34
|
+
"@teambit/cli": "0.0.950",
|
|
35
|
+
"@teambit/component": "1.0.373",
|
|
36
|
+
"@teambit/express": "0.0.1049",
|
|
37
37
|
"@teambit/harmony.modules.send-server-sent-events": "0.0.1",
|
|
38
|
-
"@teambit/importer": "1.0.
|
|
39
|
-
"@teambit/logger": "0.0.
|
|
40
|
-
"@teambit/watcher": "1.0.
|
|
38
|
+
"@teambit/importer": "1.0.373",
|
|
39
|
+
"@teambit/logger": "0.0.1043",
|
|
40
|
+
"@teambit/watcher": "1.0.373",
|
|
41
|
+
"@teambit/harmony.modules.feature-toggle": "0.0.5"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@types/fs-extra": "9.0.7",
|
|
File without changes
|