@teambit/tracker 1.0.1174 → 1.0.1175

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.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_fsExtra","_interopRequireDefault","_path","_harmonyTesting","_workspaceTesting","_workspace","_legacy","_tracker","e","__esModule","default","describe","timeout","setupWorkspace","files","workspaceData","mockWorkspace","workspacePath","Object","entries","forEach","filePath","content","fs","outputFileSync","path","join","harmony","loadManyAspects","WorkspaceAspect","TrackerAspect","workspace","get","id","tracker","expectToReject","fn","messagePart","err","expect","message","to","have","string","Error","inWs","tracked","relPath","addFrom","componentPaths","root","originalCwd","process","cwd","chdir","addForCLI","override","rootDirOf","name","bitMap","getBitmapEntry","consumer","getParsedId","ignoreVersion","rootDir","mainFileOf","mainFile","before","main","after","destroyWorkspace","it","equal","getAllRootDirs","deep","results","addedComponents","map","file","relativePath","include","WORKSPACE_ROOT_DIR","added","toString","nested","find","endsWith","some","be","true","lengthOf","startsWith","false","rootMap","getWorkspaceRootMap","not","undefined","isAvailableOnCurrentLane","track","componentName","toStringWithoutVersion","fullName"],"sources":["track-workspace-root.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { loadManyAspects } from '@teambit/harmony.testing.load-aspect';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } from '@teambit/workspace.testing.mock-workspace';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { WORKSPACE_ROOT_DIR } from '@teambit/legacy.bit-map';\nimport { TrackerAspect } from './tracker.aspect';\nimport type { TrackerMain } from './tracker.main.runtime';\n\n/**\n * tracking a component at the workspace root (rootDir \".\"). these cases only need `bit add` and the\n * resulting .bitmap, so they run here rather than as e2e - one harmony load stands in for a process\n * per command. the flows that need a remote (export, import onto \".\", clone) stay in\n * e2e/harmony/add-harmony.e2e.ts.\n */\ndescribe('tracking the workspace root', function () {\n this.timeout(0);\n\n type Tracked = { workspaceData: WorkspaceData; workspacePath: string; workspace: Workspace; tracker: TrackerMain };\n\n async function setupWorkspace(files: Record<string, string>): Promise<Tracked> {\n const workspaceData = mockWorkspace();\n const { workspacePath } = workspaceData;\n Object.entries(files).forEach(([filePath, content]) =>\n fs.outputFileSync(path.join(workspacePath, filePath), content)\n );\n const harmony = await loadManyAspects([WorkspaceAspect, TrackerAspect], workspacePath);\n return {\n workspaceData,\n workspacePath,\n workspace: harmony.get<Workspace>(WorkspaceAspect.id),\n tracker: harmony.get<TrackerMain>(TrackerAspect.id),\n };\n }\n\n /** chai has no async throw assertion that also matches a message */\n async function expectToReject(fn: () => Promise<unknown>, messagePart: string) {\n try {\n await fn();\n } catch (err: any) {\n expect(err.message).to.have.string(messagePart);\n return;\n }\n throw new Error(`expected to reject with \"${messagePart}\", but it resolved`);\n }\n\n const inWs = (tracked: Tracked, relPath: string) => path.join(tracked.workspacePath, relPath);\n\n /** relative paths, as the command gets them: \".\" only means the workspace root when the cwd is it */\n const addFrom = async (tracked: Tracked, componentPaths: string[], root?: boolean) => {\n const originalCwd = process.cwd();\n process.chdir(tracked.workspacePath);\n try {\n return await tracked.tracker.addForCLI({ componentPaths, override: false, root });\n } finally {\n process.chdir(originalCwd);\n }\n };\n\n const rootDirOf = (tracked: Tracked, name: string) =>\n tracked.workspace.bitMap.getBitmapEntry(tracked.workspace.consumer.getParsedId(name), { ignoreVersion: true })\n .rootDir;\n const mainFileOf = (tracked: Tracked, name: string) =>\n tracked.workspace.bitMap.getBitmapEntry(tracked.workspace.consumer.getParsedId(name), { ignoreVersion: true })\n .mainFile;\n\n describe('re-adding and double-adding the workspace root', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({ 'README.md': '# workspace root\\n' });\n await tracked.tracker.addForCLI({\n componentPaths: [tracked.workspacePath],\n id: 'ws-root',\n main: inWs(tracked, 'README.md'),\n override: false,\n root: true,\n });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should take the main file given explicitly over the default', () => {\n expect(mainFileOf(tracked, 'ws-root')).to.equal('README.md');\n });\n it('should allow re-adding the same component', async () => {\n fs.outputFileSync(path.join(tracked.workspacePath, 'extra.md'), 'extra\\n');\n await tracked.tracker.addForCLI({ componentPaths: [tracked.workspacePath], id: 'ws-root', override: false });\n expect(rootDirOf(tracked, 'ws-root')).to.equal('.');\n });\n it('should allow re-adding it without repeating its name, and keep its main file', async () => {\n await tracked.tracker.addForCLI({ componentPaths: [tracked.workspacePath], override: false });\n // no second component was created out of the unnamed re-add\n expect(tracked.workspace.bitMap.getAllRootDirs()).to.deep.equal(['.']);\n expect(mainFileOf(tracked, 'ws-root')).to.equal('README.md');\n });\n it('should reject a second component claiming the workspace root', async () => {\n await expectToReject(\n () =>\n tracked.tracker.addForCLI({ componentPaths: [tracked.workspacePath], id: 'another-root', override: false }),\n 'already tracked by'\n );\n });\n it('should pick up dotfiles at add time, not only on the next rescan', async () => {\n fs.outputFileSync(path.join(tracked.workspacePath, '.npmrc'), 'registry=https://example.com\\n');\n const results = await tracked.tracker.addForCLI({\n componentPaths: [tracked.workspacePath],\n id: 'ws-root',\n override: false,\n });\n const files = results.addedComponents[0].files.map((file) => file.relativePath);\n expect(files).to.include('.npmrc');\n // its auto-generated banner must not get it dropped, the rescan tracks it\n expect(files).to.include('.bitmap');\n });\n });\n\n describe('adding the workspace root and a nested component in one command', () => {\n let addedComponents: { id: string; files: string[] }[];\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({\n 'index.js': 'module.exports = {};\\n',\n 'packages/comp1/index.js': 'module.exports = () => \"comp1\";\\n',\n 'packages/comp1/.npmrc': 'registry=https://example.com\\n',\n });\n // relative paths, as the command gets them: \".\" is resolved by the same glob the CLI feeds, and\n // a direct child would be dropped from the batch as a wildcard expansion of it\n const originalCwd = process.cwd();\n process.chdir(tracked.workspacePath);\n try {\n const results = await tracked.tracker.addForCLI({\n componentPaths: [WORKSPACE_ROOT_DIR, 'packages/comp1'],\n override: false,\n root: true,\n });\n addedComponents = results.addedComponents.map((added) => ({\n id: added.id.toString(),\n files: added.files.map((file) => file.relativePath),\n }));\n } finally {\n process.chdir(originalCwd);\n }\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should list the dotfiles of a nested component at add time, as the rescan tracks them', () => {\n const nested = addedComponents.find((added) => added.id.endsWith('comp1'));\n expect(nested?.files.some((file) => file.endsWith('.npmrc'))).to.be.true;\n });\n it('should leave the nested component files out of the root, already at add time', () => {\n // the nested component is not in .bitmap yet when the root is scanned, so the batch itself has\n // to provide the exclusion. otherwise the two own the same files until the next rescan.\n expect(addedComponents).to.have.lengthOf(2);\n const root = addedComponents.find((added) => !added.id.endsWith('comp1'));\n expect(root?.files).to.include('index.js');\n expect(root?.files.some((file) => file.startsWith('packages/'))).to.be.false;\n });\n });\n\n describe('adding a nested component that holds the main file of the workspace root', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({ 'packages/comp1/index.js': 'module.exports = () => \"comp1\";\\n' });\n await tracked.tracker.addForCLI({\n componentPaths: [tracked.workspacePath],\n id: 'ws-root',\n main: inWs(tracked, 'packages/comp1/index.js'),\n override: false,\n root: true,\n });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should refuse, because the root would fail to load without its main file', async () => {\n await expectToReject(\n () =>\n tracked.tracker.addForCLI({\n componentPaths: [inWs(tracked, 'packages/comp1')],\n id: 'comp1',\n override: false,\n }),\n 'main file of the workspace-root component'\n );\n });\n it('should allow it when the root belongs to another lane, it owns nothing here', async () => {\n // the root stays in .bitmap so a switch back can restore it. guarding its main file meanwhile\n // would reject an add that is fine on this lane\n const rootMap = tracked.workspace.consumer.bitMap.getWorkspaceRootMap();\n expect(rootMap).to.not.be.undefined;\n rootMap!.isAvailableOnCurrentLane = false;\n try {\n const results = await tracked.tracker.addForCLI({\n componentPaths: [inWs(tracked, 'packages/comp1')],\n id: 'comp1-on-lane',\n override: false,\n });\n expect(results.addedComponents).to.have.lengthOf(1);\n } finally {\n rootMap!.isAvailableOnCurrentLane = true;\n }\n });\n it('should refuse even when the nested component ignores that file, its directory is what the root loses', async () => {\n fs.outputFileSync(path.join(tracked.workspacePath, 'packages/comp1/.bitignore'), 'index.js\\n');\n fs.outputFileSync(path.join(tracked.workspacePath, 'packages/comp1/other.js'), '');\n await expectToReject(\n () =>\n tracked.tracker.addForCLI({\n componentPaths: [inWs(tracked, 'packages/comp1')],\n id: 'comp1',\n override: false,\n }),\n 'main file of the workspace-root component'\n );\n });\n });\n\n describe('giving the workspace root a main file inside a component nested in it', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({\n 'index.js': 'module.exports = {};\\n',\n 'packages/comp1/index.js': 'module.exports = () => \"comp1\";\\n',\n 'packages/nested-ws/.bitmap': '{}\\n',\n });\n await tracked.tracker.addForCLI({\n componentPaths: [inWs(tracked, 'packages/comp1')],\n id: 'comp1',\n override: false,\n });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should refuse it, the scan of the root never yields a file of a component nested in it', async () => {\n // the dir belongs to comp1, so the root's file-set excludes it. tracked anyway, the entry would\n // survive until the next rescan dropped the file and the component failed to load without it\n await expectToReject(\n () =>\n tracked.tracker.addForCLI({\n componentPaths: [tracked.workspacePath],\n id: 'ws-root',\n main: inWs(tracked, 'packages/comp1/index.js'),\n override: false,\n root: true,\n }),\n 'was excluded from file list'\n );\n });\n it('should refuse the map of a nested workspace too, which no scan yields either', async () => {\n // it is kept out of every scan rather than dropped by an ignore rule, so the ignore rules have\n // nothing to say about it - the check has to ask the scan patterns, not only them\n await expectToReject(\n () =>\n tracked.tracker.addForCLI({\n componentPaths: [tracked.workspacePath],\n id: 'ws-root',\n main: inWs(tracked, 'packages/nested-ws/.bitmap'),\n override: false,\n root: true,\n }),\n 'was excluded from file list'\n );\n });\n });\n\n describe('tracking the workspace root through the programmatic api', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({ 'README.md': '# workspace root\\n' });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should take the given rootDir as the intent, the flag is for the command line', async () => {\n // a caller naming the workspace root has already said so, as a resolved track-data entry\n // declaring \".\" does. asking it for the flag would answer \"run bit add . --root\", which is\n // not the command it is running\n await tracked.tracker.track({ rootDir: tracked.workspacePath, componentName: 'ws-root' });\n expect(rootDirOf(tracked, 'ws-root')).to.equal(WORKSPACE_ROOT_DIR);\n });\n });\n\n describe('the --root flag, which spells out the intent to track the workspace root', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({\n 'index.js': 'module.exports = {};\\n',\n 'packages/comp1/index.js': 'module.exports = () => \"comp1\";\\n',\n });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should refuse the workspace root without it, naming the command that does it', async () => {\n await expectToReject(() => addFrom(tracked, [WORKSPACE_ROOT_DIR]), 'bit add . --root');\n });\n it('should refuse it when none of the paths is the workspace root, rather than ignore it', async () => {\n await expectToReject(\n () => addFrom(tracked, ['packages/comp1'], true),\n 'none of the given paths is the workspace root'\n );\n });\n it('should leave an ordinary component alone, the flag is for the root and nothing else', async () => {\n const results = await addFrom(tracked, ['packages/comp1']);\n expect(results.addedComponents).to.have.lengthOf(1);\n expect(rootDirOf(tracked, 'comp1')).to.equal('packages/comp1');\n });\n it('should track the workspace root with it', async () => {\n const results = await addFrom(tracked, [WORKSPACE_ROOT_DIR], true);\n expect(results.addedComponents).to.have.lengthOf(1);\n expect(rootDirOf(tracked, results.addedComponents[0].id.toStringWithoutVersion())).to.equal(WORKSPACE_ROOT_DIR);\n });\n });\n\n describe('adding the workspace root together with a component directly inside it', () => {\n let tracked: Tracked;\n before(async () => {\n tracked = await setupWorkspace({\n 'index.js': 'module.exports = {};\\n',\n 'comp1/index.js': 'module.exports = () => \"comp1\";\\n',\n });\n });\n after(async () => {\n await destroyWorkspace(tracked.workspaceData);\n });\n it('should track both, the root is not a wildcard expansion of the directory below it', async () => {\n const results = await addFrom(tracked, [WORKSPACE_ROOT_DIR, 'comp1'], true);\n expect(results.addedComponents).to.have.lengthOf(2);\n expect(rootDirOf(tracked, 'comp1')).to.equal('comp1');\n const root = results.addedComponents.find((added) => added.id.fullName !== 'comp1');\n expect(rootDirOf(tracked, root!.id.toStringWithoutVersion())).to.equal(WORKSPACE_ROOT_DIR);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,13 @@ export type TrackData = {
20
20
  config?: {
21
21
  [aspectName: string]: any;
22
22
  };
23
+ /**
24
+ * tracking the workspace root itself. defaults to whether `rootDir` is it: naming it here is
25
+ * already the intent, the way a resolved track-data entry declaring "." is. the flag "bit add"
26
+ * asks for is for the command line, where "." can be typed out of git habit and means something
27
+ * else entirely (see AddComponents.throwForWorkspaceRootFlagMismatch).
28
+ */
29
+ root?: boolean;
23
30
  };
24
31
  /**
25
32
  * this is for commands where we know all the data to enter into .bitmap, such as defaultScope, componentName and files.
@@ -27,7 +34,7 @@ export type TrackData = {
27
34
  export type ResolvedTrackData = {
28
35
  rootDir: PathLinuxRelative;
29
36
  componentName: string;
30
- mainFile: string;
37
+ mainFile?: string;
31
38
  files: string[];
32
39
  defaultScope: string;
33
40
  config?: {
@@ -129,7 +129,8 @@ class TrackerMain {
129
129
  main: trackData.mainFile,
130
130
  override: false,
131
131
  defaultScope,
132
- config: trackData.config
132
+ config: trackData.config,
133
+ root: trackData.root ?? compPath === (0, _legacy2().pathNormalizeToLinux)(this.workspace.path)
133
134
  });
134
135
  const result = await addComponent.add();
135
136
  const addedComponent = result.addedComponents[0];
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_toolboxPromise","_harmonyModules","_path","_interopRequireDefault","_envs","_workspace","_logger","_legacy","_legacy2","_addCmd","_addComponents","_interopRequireWildcard","_tracker","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","REMOTE_COLLISION_CHECK_TIMEOUT_MS","TrackerMain","constructor","workspace","logger","track","trackData","defaultScope","addOwnerToScopeName","undefined","compPath","pathNormalizeToLinux","path","isAbsolute","rootDir","join","addComponent","AddComponents","componentPaths","id","componentName","main","mainFile","override","config","result","add","addedComponent","addedComponents","files","map","relativePath","warnings","componentId","trackMany","manyTrackData","addMultipleFromResolvedTrackData","addForCLI","addProps","OutsideWorkspaceError","addContext","shouldHandleOutOfSync","env","addEnvToConfig","addComponents","addResults","consumer","onDestroy","warnAboutRemoteIdCollisions","added","ids","length","legacyLogger","shouldWriteToConsole","newIds","filter","isExported","idsOnRemote","getIdsExistingOnRemote","list","formatItem","toStringWithoutVersion","example","consoleWarning","fullName","err","debug","checkAll","remotes","scope","getRemoteScopes","results","pMapPool","isComponentExistsOnRemote","concurrency","concurrentFetchLimit","Boolean","timer","skipIfTooSlow","Promise","resolve","setTimeout","unref","race","clearTimeout","userEnvId","resolveComponentId","userEnvIdWithPotentialVersion","resolveEnvIdWithPotentialVersionForConfig","EnvsAspect","scopeName","includes","isSelfHosted","isHostedByBit","wsDefaultScope","warn","owner","split","isHub","provider","cli","loggerMain","createLogger","TrackerAspect","trackerMain","register","AddCmd","exports","CLIAspect","WorkspaceAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["tracker.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime, formatItem } from '@teambit/cli';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { concurrentFetchLimit } from '@teambit/harmony.modules.concurrency';\nimport path from 'path';\nimport type { ComponentID } from '@teambit/component-id';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect, OutsideWorkspaceError } from '@teambit/workspace';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport { logger as legacyLogger } from '@teambit/legacy.logger';\nimport type { PathOsBasedRelative, PathOsBasedAbsolute, PathLinuxRelative } from '@teambit/legacy.utils';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { AddCmd } from './add-cmd';\nimport type { AddActionResults, AddContext, AddProps, Warnings } from './add-components';\nimport AddComponents, { addMultipleFromResolvedTrackData } from './add-components';\nimport { TrackerAspect } from './tracker.aspect';\n\nexport type TrackResult = { files: string[]; warnings: Warnings; componentId: ComponentID };\n\n/**\n * upper bound for the best-effort remote collision check. it's only an early warning, so it's\n * better to skip it than to make the user wait on an unresponsive remote.\n */\nconst REMOTE_COLLISION_CHECK_TIMEOUT_MS = 5000;\n\n/**\n * this is for \"bit add\", where some data, such as \"componentName\" are not necessarily known\n */\nexport type TrackData = {\n rootDir: PathOsBasedRelative | PathOsBasedAbsolute; // path relative to the workspace or absolute path\n componentName?: string; // if empty, it'll be generated from the path\n mainFile?: string; // if empty, attempts will be made to guess the best candidate\n defaultScope?: string; // can be entered as part of \"bit create\" command, helpful for out-of-sync logic\n config?: { [aspectName: string]: any }; // config specific to this component, which overrides variants of workspace.jsonc\n};\n\n/**\n * this is for commands where we know all the data to enter into .bitmap, such as defaultScope, componentName and files.\n */\nexport type ResolvedTrackData = {\n rootDir: PathLinuxRelative; // path relative to the workspace\n componentName: string;\n mainFile: string;\n files: string[]; // component files relative to the component rootDir\n defaultScope: string;\n config?: { [aspectName: string]: any }; // config specific to this component, which overrides variants of workspace.jsonc\n};\n\nexport class TrackerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n /**\n * add a new component to the .bitmap file.\n * this method only adds the records in memory but doesn't persist to the filesystem.\n * to write the .bitmap file once completed, run \"await this.bitMap.write();\"\n */\n async track(trackData: TrackData): Promise<TrackResult> {\n const defaultScope = trackData.defaultScope ? await this.addOwnerToScopeName(trackData.defaultScope) : undefined;\n const compPath = pathNormalizeToLinux(\n path.isAbsolute(trackData.rootDir) ? trackData.rootDir : path.join(this.workspace.path, trackData.rootDir)\n );\n const addComponent = new AddComponents(\n { workspace: this.workspace },\n {\n componentPaths: [compPath],\n id: trackData.componentName,\n main: trackData.mainFile,\n override: false,\n defaultScope,\n config: trackData.config,\n }\n );\n const result = await addComponent.add();\n const addedComponent = result.addedComponents[0];\n const files = addedComponent?.files.map((f) => f.relativePath) || [];\n return { files, warnings: result.warnings, componentId: result.addedComponents[0].id };\n }\n\n async trackMany(manyTrackData: ResolvedTrackData[]): Promise<ComponentID[]> {\n return addMultipleFromResolvedTrackData(this.workspace, manyTrackData);\n }\n\n async addForCLI(addProps: AddProps): Promise<AddActionResults> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n const addContext: AddContext = { workspace: this.workspace };\n addProps.shouldHandleOutOfSync = true;\n if (addProps.env) {\n const config = {};\n await this.addEnvToConfig(addProps.env, config);\n addProps.config = config;\n }\n const addComponents = new AddComponents(addContext, addProps);\n const addResults = await addComponents.add();\n await this.workspace.consumer.onDestroy('add');\n\n await this.warnAboutRemoteIdCollisions(addResults.addedComponents.map((added) => added.id));\n\n return addResults;\n }\n\n /**\n * best-effort early warning: if any of the just-added/created components share an id with a\n * component that already exists on the remote scope, let the user know now — before they invest\n * work and hit a wall at export. fully non-blocking: the remote check swallows offline / no-access\n * / scope-not-found errors, is bounded by a timeout so a stalled remote can't delay the command,\n * and the whole method is wrapped so it can never fail an add/create.\n */\n async warnAboutRemoteIdCollisions(ids: ComponentID[]): Promise<void> {\n // `shouldWriteToConsole` (not `isJsonFormat`) is the signal that reflects the CLI \"--json\" flag.\n if (!ids.length || !legacyLogger.shouldWriteToConsole) return;\n // only brand-new components can \"collide\" with the remote. skip already-exported ones (e.g. a\n // re-tracked imported/exported component), where remote existence is expected, not a conflict.\n const newIds = ids.filter((id) => !this.workspace.isExported(id));\n if (!newIds.length) return;\n try {\n const idsOnRemote = await this.getIdsExistingOnRemote(newIds);\n if (!idsOnRemote.length) return;\n const list = idsOnRemote.map((id) => formatItem(id.toStringWithoutVersion())).join('\\n');\n const example = idsOnRemote[0];\n this.logger\n .consoleWarning(`the following newly added component(s) already exist on the remote scope with the same id:\n${list}\nif you meant to work on the existing component, remove your local one and run \"bit import ${example.toStringWithoutVersion()}\".\nif this is a new, unrelated component, rename yours to avoid the clash, e.g. \"bit rename ${example.fullName} <new-name>\" (or \"bit rename ${example.fullName} ${example.fullName} --scope <other-scope>\" to change only the scope).`);\n } catch (err) {\n // never let an early-warning break \"bit add\" / \"bit create\", but keep it diagnosable.\n this.logger.debug(`warnAboutRemoteIdCollisions: skipping the remote-collision check, got an error: ${err}`);\n }\n }\n\n /**\n * the remote calls have no request-level timeout of their own (and http retries for up to a\n * minute), so a stalled remote would otherwise keep \"bit add\"/\"bit create\" waiting. race the\n * checks against a timeout and simply skip the warning if the remote is too slow to answer.\n */\n private async getIdsExistingOnRemote(ids: ComponentID[]): Promise<ComponentID[]> {\n const checkAll = (async () => {\n // resolve the remotes once (it reads the global-remotes file from disk) and reuse for all ids.\n const remotes = await this.workspace.scope.getRemoteScopes();\n const results = await pMapPool(\n ids,\n async (id) => ((await this.workspace.scope.isComponentExistsOnRemote(id, remotes)) ? id : undefined),\n // `remote.show()` is network I/O, so bound it by the fetch limit (not the component limit).\n { concurrency: concurrentFetchLimit() }\n );\n return results.filter((id): id is ComponentID => Boolean(id));\n })();\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n const skipIfTooSlow = new Promise<ComponentID[]>((resolve) => {\n timer = setTimeout(() => resolve([]), REMOTE_COLLISION_CHECK_TIMEOUT_MS);\n timer.unref(); // this timer should never keep the process alive on its own\n });\n\n try {\n return await Promise.race([checkAll, skipIfTooSlow]);\n } finally {\n // clear the timer when the check wins the race, so no callback stays scheduled.\n if (timer) clearTimeout(timer);\n }\n }\n\n async addEnvToConfig(env: string, config: { [aspectName: string]: any }) {\n const userEnvId = await this.workspace.resolveComponentId(env);\n let userEnvIdWithPotentialVersion: string;\n try {\n userEnvIdWithPotentialVersion = await this.workspace.resolveEnvIdWithPotentialVersionForConfig(userEnvId);\n } catch {\n // the env needs to be without version\n userEnvIdWithPotentialVersion = userEnvId.toStringWithoutVersion();\n }\n config[userEnvIdWithPotentialVersion] = {};\n config[EnvsAspect.id] = config[EnvsAspect.id] || {};\n config[EnvsAspect.id].env = userEnvId.toStringWithoutVersion();\n }\n\n /**\n * scopes in bit.dev are \"owner.collection\".\n * we might have the scope-name only without the owner and we need to retrieve it from the defaultScope in the\n * workspace.jsonc file.\n *\n * @param scopeName scopeName that might not have the owner part.\n * @returns full scope name\n */\n private async addOwnerToScopeName(scopeName: string): Promise<string> {\n if (scopeName.includes('.')) return scopeName; // it has owner.\n const isSelfHosted = !(await this.isHostedByBit(scopeName));\n if (isSelfHosted) return scopeName;\n const wsDefaultScope = this.workspace.defaultScope;\n if (!wsDefaultScope.includes('.')) {\n this.logger.warn(`the entered scope ${scopeName} has no owner nor the defaultScope in workspace.jsonc`);\n // it's possible that the user entered a non-exist scope just to test the command and will change it later.\n return scopeName;\n }\n const [owner] = wsDefaultScope.split('.');\n return `${owner}.${scopeName}`;\n }\n\n /**\n * whether a scope is hosted by Bit cloud.\n * otherwise, it is self-hosted\n */\n private async isHostedByBit(scopeName: string): Promise<boolean> {\n const remotes = await this.workspace.scope.getRemoteScopes();\n return remotes.isHub(scopeName);\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace, loggerMain]: [CLIMain, Workspace, LoggerMain]) {\n const logger = loggerMain.createLogger(TrackerAspect.id);\n const trackerMain = new TrackerMain(workspace, logger);\n cli.register(new AddCmd(trackerMain));\n return trackerMain;\n }\n}\n\nTrackerAspect.addRuntime(TrackerMain);\n\nexport default TrackerMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_toolboxPromise","_harmonyModules","_path","_interopRequireDefault","_envs","_workspace","_logger","_legacy","_legacy2","_addCmd","_addComponents","_interopRequireWildcard","_tracker","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","REMOTE_COLLISION_CHECK_TIMEOUT_MS","TrackerMain","constructor","workspace","logger","track","trackData","defaultScope","addOwnerToScopeName","undefined","compPath","pathNormalizeToLinux","path","isAbsolute","rootDir","join","addComponent","AddComponents","componentPaths","id","componentName","main","mainFile","override","config","root","result","add","addedComponent","addedComponents","files","map","relativePath","warnings","componentId","trackMany","manyTrackData","addMultipleFromResolvedTrackData","addForCLI","addProps","OutsideWorkspaceError","addContext","shouldHandleOutOfSync","env","addEnvToConfig","addComponents","addResults","consumer","onDestroy","warnAboutRemoteIdCollisions","added","ids","length","legacyLogger","shouldWriteToConsole","newIds","filter","isExported","idsOnRemote","getIdsExistingOnRemote","list","formatItem","toStringWithoutVersion","example","consoleWarning","fullName","err","debug","checkAll","remotes","scope","getRemoteScopes","results","pMapPool","isComponentExistsOnRemote","concurrency","concurrentFetchLimit","Boolean","timer","skipIfTooSlow","Promise","resolve","setTimeout","unref","race","clearTimeout","userEnvId","resolveComponentId","userEnvIdWithPotentialVersion","resolveEnvIdWithPotentialVersionForConfig","EnvsAspect","scopeName","includes","isSelfHosted","isHostedByBit","wsDefaultScope","warn","owner","split","isHub","provider","cli","loggerMain","createLogger","TrackerAspect","trackerMain","register","AddCmd","exports","CLIAspect","WorkspaceAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["tracker.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime, formatItem } from '@teambit/cli';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { concurrentFetchLimit } from '@teambit/harmony.modules.concurrency';\nimport path from 'path';\nimport type { ComponentID } from '@teambit/component-id';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect, OutsideWorkspaceError } from '@teambit/workspace';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport { logger as legacyLogger } from '@teambit/legacy.logger';\nimport type { PathOsBasedRelative, PathOsBasedAbsolute, PathLinuxRelative } from '@teambit/legacy.utils';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { AddCmd } from './add-cmd';\nimport type { AddActionResults, AddContext, AddProps, Warnings } from './add-components';\nimport AddComponents, { addMultipleFromResolvedTrackData } from './add-components';\nimport { TrackerAspect } from './tracker.aspect';\n\nexport type TrackResult = { files: string[]; warnings: Warnings; componentId: ComponentID };\n\n/**\n * upper bound for the best-effort remote collision check. it's only an early warning, so it's\n * better to skip it than to make the user wait on an unresponsive remote.\n */\nconst REMOTE_COLLISION_CHECK_TIMEOUT_MS = 5000;\n\n/**\n * this is for \"bit add\", where some data, such as \"componentName\" are not necessarily known\n */\nexport type TrackData = {\n rootDir: PathOsBasedRelative | PathOsBasedAbsolute; // path relative to the workspace or absolute path\n componentName?: string; // if empty, it'll be generated from the path\n mainFile?: string; // if empty, attempts will be made to guess the best candidate\n defaultScope?: string; // can be entered as part of \"bit create\" command, helpful for out-of-sync logic\n config?: { [aspectName: string]: any }; // config specific to this component, which overrides variants of workspace.jsonc\n /**\n * tracking the workspace root itself. defaults to whether `rootDir` is it: naming it here is\n * already the intent, the way a resolved track-data entry declaring \".\" is. the flag \"bit add\"\n * asks for is for the command line, where \".\" can be typed out of git habit and means something\n * else entirely (see AddComponents.throwForWorkspaceRootFlagMismatch).\n */\n root?: boolean;\n};\n\n/**\n * this is for commands where we know all the data to enter into .bitmap, such as defaultScope, componentName and files.\n */\nexport type ResolvedTrackData = {\n rootDir: PathLinuxRelative; // path relative to the workspace\n componentName: string;\n mainFile?: string; // may be left out for the workspace root (\".\"), workspace.jsonc stands in for it\n files: string[]; // component files relative to the component rootDir\n defaultScope: string;\n config?: { [aspectName: string]: any }; // config specific to this component, which overrides variants of workspace.jsonc\n};\n\nexport class TrackerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger\n ) {}\n\n /**\n * add a new component to the .bitmap file.\n * this method only adds the records in memory but doesn't persist to the filesystem.\n * to write the .bitmap file once completed, run \"await this.bitMap.write();\"\n */\n async track(trackData: TrackData): Promise<TrackResult> {\n const defaultScope = trackData.defaultScope ? await this.addOwnerToScopeName(trackData.defaultScope) : undefined;\n const compPath = pathNormalizeToLinux(\n path.isAbsolute(trackData.rootDir) ? trackData.rootDir : path.join(this.workspace.path, trackData.rootDir)\n );\n const addComponent = new AddComponents(\n { workspace: this.workspace },\n {\n componentPaths: [compPath],\n id: trackData.componentName,\n main: trackData.mainFile,\n override: false,\n defaultScope,\n config: trackData.config,\n root: trackData.root ?? compPath === pathNormalizeToLinux(this.workspace.path),\n }\n );\n const result = await addComponent.add();\n const addedComponent = result.addedComponents[0];\n const files = addedComponent?.files.map((f) => f.relativePath) || [];\n return { files, warnings: result.warnings, componentId: result.addedComponents[0].id };\n }\n\n async trackMany(manyTrackData: ResolvedTrackData[]): Promise<ComponentID[]> {\n return addMultipleFromResolvedTrackData(this.workspace, manyTrackData);\n }\n\n async addForCLI(addProps: AddProps): Promise<AddActionResults> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n const addContext: AddContext = { workspace: this.workspace };\n addProps.shouldHandleOutOfSync = true;\n if (addProps.env) {\n const config = {};\n await this.addEnvToConfig(addProps.env, config);\n addProps.config = config;\n }\n const addComponents = new AddComponents(addContext, addProps);\n const addResults = await addComponents.add();\n await this.workspace.consumer.onDestroy('add');\n\n await this.warnAboutRemoteIdCollisions(addResults.addedComponents.map((added) => added.id));\n\n return addResults;\n }\n\n /**\n * best-effort early warning: if any of the just-added/created components share an id with a\n * component that already exists on the remote scope, let the user know now — before they invest\n * work and hit a wall at export. fully non-blocking: the remote check swallows offline / no-access\n * / scope-not-found errors, is bounded by a timeout so a stalled remote can't delay the command,\n * and the whole method is wrapped so it can never fail an add/create.\n */\n async warnAboutRemoteIdCollisions(ids: ComponentID[]): Promise<void> {\n // `shouldWriteToConsole` (not `isJsonFormat`) is the signal that reflects the CLI \"--json\" flag.\n if (!ids.length || !legacyLogger.shouldWriteToConsole) return;\n // only brand-new components can \"collide\" with the remote. skip already-exported ones (e.g. a\n // re-tracked imported/exported component), where remote existence is expected, not a conflict.\n const newIds = ids.filter((id) => !this.workspace.isExported(id));\n if (!newIds.length) return;\n try {\n const idsOnRemote = await this.getIdsExistingOnRemote(newIds);\n if (!idsOnRemote.length) return;\n const list = idsOnRemote.map((id) => formatItem(id.toStringWithoutVersion())).join('\\n');\n const example = idsOnRemote[0];\n this.logger\n .consoleWarning(`the following newly added component(s) already exist on the remote scope with the same id:\n${list}\nif you meant to work on the existing component, remove your local one and run \"bit import ${example.toStringWithoutVersion()}\".\nif this is a new, unrelated component, rename yours to avoid the clash, e.g. \"bit rename ${example.fullName} <new-name>\" (or \"bit rename ${example.fullName} ${example.fullName} --scope <other-scope>\" to change only the scope).`);\n } catch (err) {\n // never let an early-warning break \"bit add\" / \"bit create\", but keep it diagnosable.\n this.logger.debug(`warnAboutRemoteIdCollisions: skipping the remote-collision check, got an error: ${err}`);\n }\n }\n\n /**\n * the remote calls have no request-level timeout of their own (and http retries for up to a\n * minute), so a stalled remote would otherwise keep \"bit add\"/\"bit create\" waiting. race the\n * checks against a timeout and simply skip the warning if the remote is too slow to answer.\n */\n private async getIdsExistingOnRemote(ids: ComponentID[]): Promise<ComponentID[]> {\n const checkAll = (async () => {\n // resolve the remotes once (it reads the global-remotes file from disk) and reuse for all ids.\n const remotes = await this.workspace.scope.getRemoteScopes();\n const results = await pMapPool(\n ids,\n async (id) => ((await this.workspace.scope.isComponentExistsOnRemote(id, remotes)) ? id : undefined),\n // `remote.show()` is network I/O, so bound it by the fetch limit (not the component limit).\n { concurrency: concurrentFetchLimit() }\n );\n return results.filter((id): id is ComponentID => Boolean(id));\n })();\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n const skipIfTooSlow = new Promise<ComponentID[]>((resolve) => {\n timer = setTimeout(() => resolve([]), REMOTE_COLLISION_CHECK_TIMEOUT_MS);\n timer.unref(); // this timer should never keep the process alive on its own\n });\n\n try {\n return await Promise.race([checkAll, skipIfTooSlow]);\n } finally {\n // clear the timer when the check wins the race, so no callback stays scheduled.\n if (timer) clearTimeout(timer);\n }\n }\n\n async addEnvToConfig(env: string, config: { [aspectName: string]: any }) {\n const userEnvId = await this.workspace.resolveComponentId(env);\n let userEnvIdWithPotentialVersion: string;\n try {\n userEnvIdWithPotentialVersion = await this.workspace.resolveEnvIdWithPotentialVersionForConfig(userEnvId);\n } catch {\n // the env needs to be without version\n userEnvIdWithPotentialVersion = userEnvId.toStringWithoutVersion();\n }\n config[userEnvIdWithPotentialVersion] = {};\n config[EnvsAspect.id] = config[EnvsAspect.id] || {};\n config[EnvsAspect.id].env = userEnvId.toStringWithoutVersion();\n }\n\n /**\n * scopes in bit.dev are \"owner.collection\".\n * we might have the scope-name only without the owner and we need to retrieve it from the defaultScope in the\n * workspace.jsonc file.\n *\n * @param scopeName scopeName that might not have the owner part.\n * @returns full scope name\n */\n private async addOwnerToScopeName(scopeName: string): Promise<string> {\n if (scopeName.includes('.')) return scopeName; // it has owner.\n const isSelfHosted = !(await this.isHostedByBit(scopeName));\n if (isSelfHosted) return scopeName;\n const wsDefaultScope = this.workspace.defaultScope;\n if (!wsDefaultScope.includes('.')) {\n this.logger.warn(`the entered scope ${scopeName} has no owner nor the defaultScope in workspace.jsonc`);\n // it's possible that the user entered a non-exist scope just to test the command and will change it later.\n return scopeName;\n }\n const [owner] = wsDefaultScope.split('.');\n return `${owner}.${scopeName}`;\n }\n\n /**\n * whether a scope is hosted by Bit cloud.\n * otherwise, it is self-hosted\n */\n private async isHostedByBit(scopeName: string): Promise<boolean> {\n const remotes = await this.workspace.scope.getRemoteScopes();\n return remotes.isHub(scopeName);\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, workspace, loggerMain]: [CLIMain, Workspace, LoggerMain]) {\n const logger = loggerMain.createLogger(TrackerAspect.id);\n const trackerMain = new TrackerMain(workspace, logger);\n cli.register(new AddCmd(trackerMain));\n return trackerMain;\n }\n}\n\nTrackerAspect.addRuntime(TrackerMain);\n\nexport default TrackerMain;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/tracker",
3
- "version": "1.0.1174",
3
+ "version": "1.0.1175",
4
4
  "homepage": "https://bit.cloud/teambit/component/tracker",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "tracker",
9
- "version": "1.0.1174"
9
+ "version": "1.0.1175"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -18,30 +18,34 @@
18
18
  "lodash": "4.17.21",
19
19
  "string-format": "0.5.0",
20
20
  "@teambit/bit-error": "0.0.404",
21
- "@teambit/cli": "0.0.1393",
22
21
  "@teambit/legacy.utils": "0.0.51",
23
22
  "@teambit/component-id": "1.2.4",
24
23
  "@teambit/legacy-bit-id": "1.1.3",
25
- "@teambit/legacy.analytics": "0.0.108",
26
- "@teambit/legacy.bit-map": "0.0.221",
27
- "@teambit/legacy.constants": "0.0.44",
28
- "@teambit/legacy.consumer": "0.0.164",
29
- "@teambit/legacy.logger": "0.0.61",
30
- "@teambit/workspace.modules.node-modules-linker": "0.0.396",
31
24
  "@teambit/harmony": "0.4.12",
32
- "@teambit/harmony.modules.concurrency": "0.0.45",
33
- "@teambit/logger": "0.0.1486",
34
25
  "@teambit/toolbox.promise.map-pool": "0.0.21",
35
- "@teambit/workspace": "1.0.1174",
36
- "@teambit/envs": "1.0.1174"
26
+ "@teambit/cli": "0.0.1394",
27
+ "@teambit/legacy.analytics": "0.0.109",
28
+ "@teambit/legacy.bit-map": "0.0.222",
29
+ "@teambit/legacy.constants": "0.0.45",
30
+ "@teambit/legacy.consumer": "0.0.165",
31
+ "@teambit/legacy.logger": "0.0.62",
32
+ "@teambit/workspace.modules.node-modules-linker": "0.0.397",
33
+ "@teambit/workspace": "1.0.1175",
34
+ "@teambit/envs": "1.0.1175",
35
+ "@teambit/harmony.modules.concurrency": "0.0.46",
36
+ "@teambit/logger": "0.0.1487"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/fs-extra": "9.0.7",
40
40
  "@types/lodash": "4.14.165",
41
41
  "@types/mocha": "9.1.0",
42
- "@teambit/harmony.envs.core-aspect-env": "2.1.1"
42
+ "@teambit/harmony.envs.core-aspect-env": "2.1.1",
43
+ "@teambit/harmony.testing.load-aspect": "0.0.433",
44
+ "@teambit/workspace.testing.mock-workspace": "0.0.247"
45
+ },
46
+ "peerDependencies": {
47
+ "chai": "5.2.1"
43
48
  },
44
- "peerDependencies": {},
45
49
  "license": "Apache-2.0",
46
50
  "optionalDependencies": {},
47
51
  "peerDependenciesMeta": {},