@teambit/snapping 1.0.1220 → 1.0.1222

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tag-cmd.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { Command, CommandOptions, Report } from '@teambit/cli';
3
3
  import type { ReleaseType } from 'semver';
4
4
  import type { Logger } from '@teambit/logger';
5
5
  import type { TagResults, SnappingMain } from './snapping.main.runtime';
6
- import type { BasicTagParams } from './version-maker';
6
+ import type { BasicTagParams, DependentWithPinnedDeps } from './version-maker';
7
7
  import type { ConfigStoreMain } from '@teambit/config-store';
8
8
  export declare const NOTHING_TO_TAG_MSG = "nothing to tag";
9
9
  export declare const AUTO_TAGGED_MSG = "auto-tagged dependents";
@@ -60,4 +60,5 @@ export declare function tagResultReport(results: TagResults): string | Report;
60
60
  /** @deprecated use tagResultReport instead */
61
61
  export declare function tagResultOutput(results: TagResults): string;
62
62
  export declare function compInBold(id: ComponentID): string;
63
+ export declare function dependentsWithPinnedDepsSection(dependents: DependentWithPinnedDeps[] | undefined, action: 'tagged' | 'snapped'): string;
63
64
  export declare function outputIdsIfExists(label: string, ids?: ComponentIdList): string;
package/dist/tag-cmd.js CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TagCmd = exports.NOTHING_TO_TAG_MSG = exports.AUTO_TAGGED_MSG = void 0;
7
7
  exports.compInBold = compInBold;
8
+ exports.dependentsWithPinnedDepsSection = dependentsWithPinnedDepsSection;
8
9
  exports.outputIdsIfExists = outputIdsIfExists;
9
10
  exports.tagCmdOptions = void 0;
10
11
  exports.tagResultOutput = tagResultOutput;
@@ -279,6 +280,7 @@ function tagResultReport(results) {
279
280
  };
280
281
  };
281
282
  const removedSection = outputIdsIfExists('removed components', removedComponents);
283
+ const pinnedSection = dependentsWithPinnedDepsSection(results.dependentsWithPinnedDeps, 'tagged');
282
284
  const publishSection = (() => {
283
285
  const {
284
286
  publishedPackages
@@ -320,7 +322,7 @@ function tagResultReport(results) {
320
322
  return `${title}\n${scopes}\n${hint}`;
321
323
  })();
322
324
  const footerParts = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\n');
323
- const data = (0, _cli().joinSections)([newSection, changedSection, workspaceRootHint, autoTagSection, removedSection, publishSection, exportedSection, warningsSection, footerParts]);
325
+ const data = (0, _cli().joinSections)([newSection, changedSection, workspaceRootHint, autoTagSection, pinnedSection, removedSection, publishSection, exportedSection, warningsSection, footerParts]);
324
326
  if (!hasAutoTagged) {
325
327
  return data;
326
328
  }
@@ -331,7 +333,7 @@ function tagResultReport(results) {
331
333
  changedSection: changedDetailed
332
334
  } = buildSections(formatCompDetailed);
333
335
  const detailedFooter = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\n');
334
- const details = (0, _cli().joinSections)([newDetailed, changedDetailed, workspaceRootHint, removedSection, publishSection, exportedSection, warningsSection, detailedFooter]);
336
+ const details = (0, _cli().joinSections)([newDetailed, changedDetailed, workspaceRootHint, pinnedSection, removedSection, publishSection, exportedSection, warningsSection, detailedFooter]);
335
337
  return {
336
338
  data,
337
339
  code: 0,
@@ -348,6 +350,13 @@ function compInBold(id) {
348
350
  const version = id.hasVersion() ? `@${id.version}` : '';
349
351
  return `${_chalk().default.bold(id.toStringWithoutVersion())}${version}`;
350
352
  }
353
+ function dependentsWithPinnedDepsSection(dependents, action) {
354
+ if (!dependents?.length) return '';
355
+ const items = dependents.map(dependent => (0, _cli().formatItem)(`${compInBold(dependent.id)} ${_chalk().default.dim(`(${dependent.pinnedDependencies.join(', ')})`)}`, _cli().warnSymbol));
356
+ const section = (0, _cli().formatSection)(`dependents not auto-${action}`, `their config sets the version of the ${action} dependency ("bit deps set", variants or env), so they keep using it`, items);
357
+ const hint = (0, _cli().formatHint)('(to use the workspace version, remove the version from the config, e.g. "bit deps unset <component> <package>")');
358
+ return `${section}\n${hint}`;
359
+ }
351
360
  function outputIdsIfExists(label, ids) {
352
361
  if (!ids?.length) return '';
353
362
  const items = ids.map(id => (0, _cli().formatItem)(id.toStringWithoutVersion(), _cli().warnSymbol));
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_lodash","_cli","_legacy","_componentIssues","_bitError","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","NOTHING_TO_TAG_MSG","exports","AUTO_TAGGED_MSG","RELEASE_TYPES","PRE_RELEASE_TYPES","isPreReleaseType","releaseType","Boolean","includes","tagCmdOptions","join","keys","IssuesClasses","TagCmd","constructor","snapping","logger","configStore","name","description","COMPONENT_PATTERN_HELP","cmd","report","patterns","options","message","ver","editor","versionsFile","snapped","unmerged","ignoreIssues","ignoreNewestVersion","skipTests","skipTasks","skipAutoTag","unmodified","soft","persist","disableTagPipeline","ignoreBuildErrors","rebuildDepsGraph","noLockDeps","failFast","incrementBy","skipPublishedVersions","detachHead","loose","consoleWarning","autoTagReleaseType","preReleaseId","validateOptions","disableTagAndSnapPipelines","build","getConfigBoolean","CFG_FORCE_LOCAL_BUILD","BitError","params","ids","version","results","tag","chalk","yellow","tagResultReport","patch","minor","major","preRelease","increment","autoTagIncrement","prereleaseId","releaseFlags","filter","x","length","getReleaseType","DEFAULT_BIT_RELEASE_TYPE","getAutoTagReleaseType","undefined","getPreReleaseId","taggedComponents","autoTaggedResults","warnings","newComponents","removedComponents","exportedIds","totalComponentsCount","changedComponents","component","searchWithoutVersion","id","addedComponents","autoTaggedCount","totalCount","formatCompMinimal","formatItem","compInBold","formatCompDetailed","output","autoTag","result","triggeredBy","autoTagComp","map","a","toString","softTagPrefix","isSoftTag","newDesc","changedDesc","buildSections","formatComp","newSection","formatSection","changedSection","removedSection","outputIdsIfExists","publishSection","publishedPackages","items","pkg","exportedSection","warnSymbol","warningsSection","w","workspaceRootHint","autoAddedWorkspaceRoot","formatHint","summaryMsg","summary","formatSuccessSummary","tagExplanation","softTagClarification","bold","hasAutoTagged","autoTagSection","scopeCounts","countBy","scope","sorted","entries","sort","b","MAX_SHOWN","shown","slice","n","remaining","scopeLine","title","formatTitle","scopes","hint","formatDetailsHint","footerParts","joinSections","newDetailed","changedDetailed","detailedFooter","details","code","tagResultOutput","hasVersion","toStringWithoutVersion","label"],"sources":["tag-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { countBy } from 'lodash';\nimport type { ComponentIdList, ComponentID } from '@teambit/component-id';\nimport type { Command, CommandOptions, Report } from '@teambit/cli';\nimport {\n formatItem,\n formatSection,\n formatTitle,\n formatHint,\n formatDetailsHint,\n formatSuccessSummary,\n warnSymbol,\n joinSections,\n} from '@teambit/cli';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { DEFAULT_BIT_RELEASE_TYPE, COMPONENT_PATTERN_HELP, CFG_FORCE_LOCAL_BUILD } from '@teambit/legacy.constants';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { ReleaseType } from 'semver';\nimport { BitError } from '@teambit/bit-error';\nimport type { Logger } from '@teambit/logger';\nimport type { TagResults, SnappingMain } from './snapping.main.runtime';\nimport type { BasicTagParams } from './version-maker';\nimport type { ConfigStoreMain } from '@teambit/config-store';\n\nexport const NOTHING_TO_TAG_MSG = 'nothing to tag';\nexport const AUTO_TAGGED_MSG = 'auto-tagged dependents';\n\nconst RELEASE_TYPES = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'];\nconst PRE_RELEASE_TYPES = ['prepatch', 'prerelease', 'preminor', 'premajor'];\n\nfunction isPreReleaseType(releaseType?: ReleaseType): boolean {\n return Boolean(releaseType && PRE_RELEASE_TYPES.includes(releaseType));\n}\n\nexport const tagCmdOptions = [\n ['m', 'message <message>', 'a log message describing latest changes'],\n ['u', 'unmodified', 'include unmodified components (by default, only new and modified components are tagged)'],\n [\n '',\n 'editor [editor]',\n 'open an editor to write a tag message for each component. optionally, specify the editor-name (defaults to vim).',\n ],\n ['', 'versions-file <path>', 'path to a file containing component versions. format: \"component-id: version\"'],\n ['v', 'ver <version>', 'tag with the given version'],\n ['l', 'increment <level>', `options are: [${RELEASE_TYPES.join(', ')}], default to patch`],\n ['', 'prerelease-id <id>', 'prerelease identifier (e.g. \"dev\" to get \"1.0.0-dev.1\")'],\n ['p', 'patch', 'syntactic sugar for \"--increment patch\"'],\n ['', 'minor', 'syntactic sugar for \"--increment minor\"'],\n ['', 'major', 'syntactic sugar for \"--increment major\"'],\n ['', 'pre-release [identifier]', 'syntactic sugar for \"--increment prerelease\" and `--prerelease-id <identifier>`'],\n [\n '',\n 'auto-tag-increment <level>',\n `the increment level to use for auto-tagged dependents. options are: [${RELEASE_TYPES.join(', ')}].\nby default, dependents are bumped by a patch, unless --increment is one of [${PRE_RELEASE_TYPES.join(', ')}], which they follow.\nnote that dependents are auto-tagged transitively, so the entire dependents graph is bumped by this level`,\n ],\n ['', 'snapped', 'tag only components whose head is a snap (not a tag)'],\n ['', 'unmerged', 'complete a merge process by tagging the unmerged components'],\n ['', 'skip-tests', 'skip running component tests during tag process'],\n [\n '',\n 'skip-tasks <string>',\n `skip the given tasks. for multiple tasks, separate by a comma and wrap with quotes.\nspecify the task-name (e.g. \"TypescriptCompiler\") or the task-aspect-id (e.g. teambit.compilation/compiler)`,\n ],\n ['', 'skip-auto-tag', 'skip auto tagging dependents'],\n ['', 'soft', 'do not persist. only keep note of the changes to be made'],\n [\n '',\n 'persist [skip-build]',\n 'persist the changes generated by --soft tag. by default, run the build pipeline, unless \"skip-build\" is provided',\n ],\n ['', 'disable-tag-pipeline', 'skip the tag pipeline to avoid publishing the components'],\n ['', 'ignore-build-errors', 'proceed to tag pipeline even when build pipeline fails'],\n ['', 'rebuild-deps-graph', 'do not reuse the saved dependencies graph, instead build it from scratch'],\n ['', 'no-lock-deps', 'do not save the dependencies graph in the tag'],\n [\n '',\n 'increment-by <number>',\n '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.',\n ],\n [\n '',\n 'skip-published-versions',\n 'skip versions that are already in the registry. useful when a previous run published the packages but failed before exporting',\n ],\n [\n 'i',\n 'ignore-issues <issues>',\n `ignore component issues (shown in \"bit status\" as \"issues found\"), issues to ignore:\n[${Object.keys(IssuesClasses).join(', ')}]\nto ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify \"*\".`,\n ],\n ['I', 'ignore-newest-version', 'allow tagging even when the component has newer versions e.g. for hotfixes.'],\n [\n '',\n 'fail-fast',\n 'stop pipeline execution on the first failed task (by default a task is skipped only when its dependency failed)',\n ],\n ['b', 'build', 'locally run the build pipeline (i.e. not via rippleCI) and complete the tag'],\n ['', 'loose', 'allow tag --build to succeed even if tasks like tests or lint fail'],\n [\n '',\n 'detach-head',\n 'UNSUPPORTED YET. in case a component is checked out to an older version, tag it without changing the head',\n ],\n] as CommandOptions;\n\nexport type TagParams = {\n snapped?: boolean;\n unmerged?: boolean;\n ver?: string;\n patch?: boolean;\n minor?: boolean;\n major?: boolean;\n increment?: ReleaseType;\n autoTagIncrement?: ReleaseType;\n preRelease?: string;\n prereleaseId?: string;\n ignoreUnresolvedDependencies?: boolean;\n ignoreIssues?: string;\n incrementBy?: number;\n failFast?: boolean;\n disableTagPipeline?: boolean;\n loose?: boolean;\n versionsFile?: string;\n} & Partial<BasicTagParams>;\n\nexport class TagCmd implements Command {\n name = 'tag [component-patterns...]';\n group = 'version-control';\n description = 'create immutable component snapshots with semantic version tags';\n extendedDescription = `creates tagged versions using semantic versioning (semver) for component releases. tags are immutable and exportable.\nby default tags all new and modified components. supports version specification per pattern using \"@\" (e.g. foo@1.0.0, bar@minor).\nuse for official releases. for development versions, use 'bit snap' instead.`;\n arguments = [\n {\n name: 'component-patterns...',\n description: `${COMPONENT_PATTERN_HELP}. By default, all new and modified components are tagged.`,\n },\n ];\n helpUrl = 'reference/components/snaps#create-a-tag-(release-version)';\n alias = 't';\n loader = true;\n options = tagCmdOptions;\n remoteOp = true; // In case a compiler / tester is not installed\n examples = [{ cmd: 'tag --ver 1.0.0', description: 'tag all components to version 1.0.0' }];\n\n constructor(\n private snapping: SnappingMain,\n private logger: Logger,\n private configStore: ConfigStoreMain\n ) {}\n\n // eslint-disable-next-line complexity\n async report([patterns = []]: [string[]], options: TagParams): Promise<string | Report> {\n const {\n message = '',\n ver,\n editor = '',\n versionsFile,\n snapped = false,\n unmerged = false,\n ignoreIssues,\n ignoreNewestVersion = false,\n skipTests = false,\n skipTasks,\n skipAutoTag = false,\n unmodified = false,\n soft = false,\n persist = false,\n disableTagPipeline = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n failFast = false,\n incrementBy = 1,\n skipPublishedVersions = false,\n detachHead,\n loose = false,\n } = options;\n\n if (!message && !persist && !editor) {\n this.logger.consoleWarning(\n `--message will be mandatory in the next few releases. make sure to add a message with your tag`\n );\n }\n const { releaseType, autoTagReleaseType, preReleaseId } = validateOptions(options);\n\n const disableTagAndSnapPipelines = disableTagPipeline;\n let build = options.build;\n build = this.configStore.getConfigBoolean(CFG_FORCE_LOCAL_BUILD) || Boolean(build);\n if (persist) {\n if (persist === true) build = true;\n else if (persist === 'skip-build') build = false;\n else throw new BitError(`unknown value for --persist, use either --persist or --persist=skip-build`);\n }\n if (!build && !soft) {\n this.logger.consoleWarning(\n `tagging components on \"main\" lane when using remote build is not recommended. To avoid SemVer versions of your component with failing builds, please refer to:\n- Snap changes in a different lane and merge to \"main\" on your remote (learn more on lanes - https://bit.dev/reference/lanes/getting-started-with-lanes)\n- Use \\`bit tag --build\\` to build your components locally.\n- Use \\`snap\\` or \\`build\\` first to validate your build passing, and then version and export safely.\n\nTo undo local tag use the \"bit reset\" command.`\n );\n }\n\n const params = {\n ids: patterns,\n snapped,\n unmerged,\n editor,\n versionsFile,\n message,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreIssues,\n ignoreNewestVersion,\n skipTests,\n skipTasks,\n skipAutoTag,\n build,\n soft,\n persist,\n unmodified,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n incrementBy,\n skipPublishedVersions,\n version: ver,\n failFast,\n detachHead,\n loose,\n };\n\n const results = await this.snapping.tag(params);\n if (!results) return chalk.yellow(persist ? 'no soft-tag found' : NOTHING_TO_TAG_MSG);\n return tagResultReport(results);\n }\n}\n\nexport function validateOptions(options: TagParams) {\n const { patch, minor, major, preRelease, increment, autoTagIncrement, prereleaseId, skipAutoTag } = options;\n // the prerelease-id is relevant for the dependents as well, so --auto-tag-increment alone is\n // enough to justify it, even when the modified components get a non-prerelease bump.\n if (prereleaseId && !isPreReleaseType(increment) && !isPreReleaseType(autoTagIncrement)) {\n throw new BitError(\n `--prerelease-id should be entered along with --increment or --auto-tag-increment flag, while the increment must be one of the following: [${PRE_RELEASE_TYPES.join(', ')}]`\n );\n }\n\n const releaseFlags = [patch, minor, major, preRelease].filter((x) => x);\n if (releaseFlags.length > 1) {\n throw new BitError('you can use only one of the following - patch, minor, major, pre-release');\n }\n\n if (autoTagIncrement && skipAutoTag) {\n throw new BitError('you can use either --auto-tag-increment or --skip-auto-tag, but not both');\n }\n\n const getReleaseType = (): ReleaseType => {\n if (increment) {\n if (!RELEASE_TYPES.includes(increment)) {\n throw new BitError(`invalid increment-level \"${increment}\".\nsemver allows the following options only: ${RELEASE_TYPES.join(', ')}`);\n }\n return increment;\n }\n if (major) return 'major';\n if (minor) return 'minor';\n if (patch) return 'patch';\n if (preRelease) return 'prerelease';\n return DEFAULT_BIT_RELEASE_TYPE;\n };\n const getAutoTagReleaseType = (): ReleaseType | undefined => {\n if (!autoTagIncrement) return undefined;\n if (!RELEASE_TYPES.includes(autoTagIncrement)) {\n throw new BitError(`invalid auto-tag-increment level \"${autoTagIncrement}\".\nsemver allows the following options only: ${RELEASE_TYPES.join(', ')}`);\n }\n return autoTagIncrement;\n };\n const getPreReleaseId = (): string | undefined => {\n if (prereleaseId) {\n return prereleaseId;\n }\n if (preRelease && typeof preRelease === 'string') {\n return preRelease;\n }\n return undefined;\n };\n\n return {\n releaseType: getReleaseType(),\n autoTagReleaseType: getAutoTagReleaseType(),\n preReleaseId: getPreReleaseId(),\n };\n}\n\nexport function tagResultReport(results: TagResults): string | Report {\n const {\n taggedComponents,\n autoTaggedResults,\n warnings,\n newComponents,\n removedComponents,\n exportedIds,\n totalComponentsCount,\n }: TagResults = results;\n const changedComponents = taggedComponents.filter((component) => !newComponents.searchWithoutVersion(component.id));\n const addedComponents = taggedComponents.filter((component) => newComponents.searchWithoutVersion(component.id));\n const autoTaggedCount = autoTaggedResults ? autoTaggedResults.length : 0;\n const totalCount = totalComponentsCount ?? taggedComponents.length + autoTaggedCount;\n\n const formatCompMinimal = (component: ConsumerComponent): string => {\n return formatItem(compInBold(component.id));\n };\n\n const formatCompDetailed = (component: ConsumerComponent): string => {\n let output = formatItem(compInBold(component.id));\n const autoTag = (autoTaggedResults ?? []).filter((result) => result.triggeredBy.searchWithoutVersion(component.id));\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n output += `\\n ${AUTO_TAGGED_MSG}:\\n ${autoTagComp.join('\\n ')}`;\n }\n return output;\n };\n\n const softTagPrefix = results.isSoftTag ? 'soft-tagged ' : '';\n const newDesc = results.isSoftTag\n ? 'set to be tagged with first version for components when persisted'\n : 'first version for components';\n const changedDesc = results.isSoftTag\n ? 'components that are set to get a version bump when persisted'\n : 'components that got a version bump';\n\n const buildSections = (formatComp: (c: ConsumerComponent) => string) => {\n const newSection = formatSection(softTagPrefix + 'new components', newDesc, addedComponents.map(formatComp));\n const changedSection = formatSection(\n softTagPrefix + 'changed components',\n changedDesc,\n changedComponents.map(formatComp)\n );\n return { newSection, changedSection };\n };\n\n const removedSection = outputIdsIfExists('removed components', removedComponents);\n\n const publishSection = (() => {\n const { publishedPackages } = results;\n if (!publishedPackages || !publishedPackages.length) return '';\n const items = publishedPackages.map((pkg) => formatItem(pkg));\n return formatSection('published components', '', items);\n })();\n\n const exportedSection = (() => {\n if (!exportedIds) return '';\n if (!exportedIds.length) return `${warnSymbol} ${chalk.yellow('no component has been exported')}`;\n const items = exportedIds.map((id) => formatItem(compInBold(id)));\n return formatSection('exported components', '', items);\n })();\n\n const warningsSection =\n warnings && warnings.length ? warnings.map((w) => `${warnSymbol} ${chalk.yellow(w)}`).join('\\n') : '';\n\n const workspaceRootHint = results.autoAddedWorkspaceRoot\n ? formatHint(\n `(${compInBold(results.autoAddedWorkspaceRoot)} is the workspace-root component. it was new or modified, so it was tagged along: the other components record the root version they were tagged with)`\n )\n : '';\n\n const summaryMsg = `${totalCount} component(s) ${results.isSoftTag ? 'soft-' : ''}tagged${exportedIds ? ' and exported' : ''}`;\n const summary = formatSuccessSummary(summaryMsg);\n\n const tagExplanation = results.isSoftTag\n ? formatHint(\n '(use \"bit tag --persist\" to persist the soft-tagged changes as a fully tagged version)\\n(use \"bit reset --soft\" to remove the soft-tags)'\n )\n : exportedIds\n ? ''\n : formatHint('(use \"bit export\" to push these components to a remote)\\n(use \"bit reset\" to unstage versions)');\n\n const softTagClarification = results.isSoftTag\n ? chalk.bold(\n 'keep in mind that this is a soft-tag (changes recorded to be tagged), to persist the changes use --persist flag'\n )\n : '';\n\n const hasAutoTagged = autoTaggedCount > 0;\n\n // Build minimal output (no auto-tagged listing, just counts grouped by scope)\n const { newSection, changedSection } = buildSections(hasAutoTagged ? formatCompMinimal : formatCompDetailed);\n\n const autoTagSection = (() => {\n if (!hasAutoTagged) return '';\n const scopeCounts = countBy(autoTaggedResults, (r) => r.component.id.scope);\n const sorted = Object.entries(scopeCounts).sort(([, a], [, b]) => b - a);\n const MAX_SHOWN = 4;\n const shown = sorted.slice(0, MAX_SHOWN).map(([scope, n]) => `${scope} (${n})`);\n const remaining = sorted.length - MAX_SHOWN;\n const scopeLine = remaining > 0 ? [...shown, `+ ${remaining} more scopes`].join(' · ') : shown.join(' · ');\n const title = formatTitle(`auto-tagged dependents (${autoTaggedCount})`);\n const scopes = ` ${scopeLine}`;\n const hint = formatDetailsHint('full list of auto-tagged dependents');\n return `${title}\\n${scopes}\\n${hint}`;\n })();\n\n const footerParts = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\\n');\n const data = joinSections([\n newSection,\n changedSection,\n workspaceRootHint,\n autoTagSection,\n removedSection,\n publishSection,\n exportedSection,\n warningsSection,\n footerParts,\n ]);\n\n if (!hasAutoTagged) {\n return data;\n }\n\n // Build detailed output (with full auto-tagged listing)\n const { newSection: newDetailed, changedSection: changedDetailed } = buildSections(formatCompDetailed);\n const detailedFooter = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\\n');\n const details = joinSections([\n newDetailed,\n changedDetailed,\n workspaceRootHint,\n removedSection,\n publishSection,\n exportedSection,\n warningsSection,\n detailedFooter,\n ]);\n\n return { data, code: 0, details };\n}\n\n/** @deprecated use tagResultReport instead */\nexport function tagResultOutput(results: TagResults): string {\n const result = tagResultReport(results);\n return typeof result === 'string' ? result : result.details || result.data;\n}\n\nexport function compInBold(id: ComponentID): string {\n const version = id.hasVersion() ? `@${id.version}` : '';\n return `${chalk.bold(id.toStringWithoutVersion())}${version}`;\n}\n\nexport function outputIdsIfExists(label: string, ids?: ComponentIdList) {\n if (!ids?.length) return '';\n const items = ids.map((id) => formatItem(id.toStringWithoutVersion(), warnSymbol));\n return formatSection(label, '', items);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_lodash","_cli","_legacy","_componentIssues","_bitError","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","NOTHING_TO_TAG_MSG","exports","AUTO_TAGGED_MSG","RELEASE_TYPES","PRE_RELEASE_TYPES","isPreReleaseType","releaseType","Boolean","includes","tagCmdOptions","join","keys","IssuesClasses","TagCmd","constructor","snapping","logger","configStore","name","description","COMPONENT_PATTERN_HELP","cmd","report","patterns","options","message","ver","editor","versionsFile","snapped","unmerged","ignoreIssues","ignoreNewestVersion","skipTests","skipTasks","skipAutoTag","unmodified","soft","persist","disableTagPipeline","ignoreBuildErrors","rebuildDepsGraph","noLockDeps","failFast","incrementBy","skipPublishedVersions","detachHead","loose","consoleWarning","autoTagReleaseType","preReleaseId","validateOptions","disableTagAndSnapPipelines","build","getConfigBoolean","CFG_FORCE_LOCAL_BUILD","BitError","params","ids","version","results","tag","chalk","yellow","tagResultReport","patch","minor","major","preRelease","increment","autoTagIncrement","prereleaseId","releaseFlags","filter","x","length","getReleaseType","DEFAULT_BIT_RELEASE_TYPE","getAutoTagReleaseType","undefined","getPreReleaseId","taggedComponents","autoTaggedResults","warnings","newComponents","removedComponents","exportedIds","totalComponentsCount","changedComponents","component","searchWithoutVersion","id","addedComponents","autoTaggedCount","totalCount","formatCompMinimal","formatItem","compInBold","formatCompDetailed","output","autoTag","result","triggeredBy","autoTagComp","map","a","toString","softTagPrefix","isSoftTag","newDesc","changedDesc","buildSections","formatComp","newSection","formatSection","changedSection","removedSection","outputIdsIfExists","pinnedSection","dependentsWithPinnedDepsSection","dependentsWithPinnedDeps","publishSection","publishedPackages","items","pkg","exportedSection","warnSymbol","warningsSection","w","workspaceRootHint","autoAddedWorkspaceRoot","formatHint","summaryMsg","summary","formatSuccessSummary","tagExplanation","softTagClarification","bold","hasAutoTagged","autoTagSection","scopeCounts","countBy","scope","sorted","entries","sort","b","MAX_SHOWN","shown","slice","n","remaining","scopeLine","title","formatTitle","scopes","hint","formatDetailsHint","footerParts","joinSections","newDetailed","changedDetailed","detailedFooter","details","code","tagResultOutput","hasVersion","toStringWithoutVersion","dependents","action","dependent","dim","pinnedDependencies","section","label"],"sources":["tag-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { countBy } from 'lodash';\nimport type { ComponentIdList, ComponentID } from '@teambit/component-id';\nimport type { Command, CommandOptions, Report } from '@teambit/cli';\nimport {\n formatItem,\n formatSection,\n formatTitle,\n formatHint,\n formatDetailsHint,\n formatSuccessSummary,\n warnSymbol,\n joinSections,\n} from '@teambit/cli';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { DEFAULT_BIT_RELEASE_TYPE, COMPONENT_PATTERN_HELP, CFG_FORCE_LOCAL_BUILD } from '@teambit/legacy.constants';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { ReleaseType } from 'semver';\nimport { BitError } from '@teambit/bit-error';\nimport type { Logger } from '@teambit/logger';\nimport type { TagResults, SnappingMain } from './snapping.main.runtime';\nimport type { BasicTagParams, DependentWithPinnedDeps } from './version-maker';\nimport type { ConfigStoreMain } from '@teambit/config-store';\n\nexport const NOTHING_TO_TAG_MSG = 'nothing to tag';\nexport const AUTO_TAGGED_MSG = 'auto-tagged dependents';\n\nconst RELEASE_TYPES = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'];\nconst PRE_RELEASE_TYPES = ['prepatch', 'prerelease', 'preminor', 'premajor'];\n\nfunction isPreReleaseType(releaseType?: ReleaseType): boolean {\n return Boolean(releaseType && PRE_RELEASE_TYPES.includes(releaseType));\n}\n\nexport const tagCmdOptions = [\n ['m', 'message <message>', 'a log message describing latest changes'],\n ['u', 'unmodified', 'include unmodified components (by default, only new and modified components are tagged)'],\n [\n '',\n 'editor [editor]',\n 'open an editor to write a tag message for each component. optionally, specify the editor-name (defaults to vim).',\n ],\n ['', 'versions-file <path>', 'path to a file containing component versions. format: \"component-id: version\"'],\n ['v', 'ver <version>', 'tag with the given version'],\n ['l', 'increment <level>', `options are: [${RELEASE_TYPES.join(', ')}], default to patch`],\n ['', 'prerelease-id <id>', 'prerelease identifier (e.g. \"dev\" to get \"1.0.0-dev.1\")'],\n ['p', 'patch', 'syntactic sugar for \"--increment patch\"'],\n ['', 'minor', 'syntactic sugar for \"--increment minor\"'],\n ['', 'major', 'syntactic sugar for \"--increment major\"'],\n ['', 'pre-release [identifier]', 'syntactic sugar for \"--increment prerelease\" and `--prerelease-id <identifier>`'],\n [\n '',\n 'auto-tag-increment <level>',\n `the increment level to use for auto-tagged dependents. options are: [${RELEASE_TYPES.join(', ')}].\nby default, dependents are bumped by a patch, unless --increment is one of [${PRE_RELEASE_TYPES.join(', ')}], which they follow.\nnote that dependents are auto-tagged transitively, so the entire dependents graph is bumped by this level`,\n ],\n ['', 'snapped', 'tag only components whose head is a snap (not a tag)'],\n ['', 'unmerged', 'complete a merge process by tagging the unmerged components'],\n ['', 'skip-tests', 'skip running component tests during tag process'],\n [\n '',\n 'skip-tasks <string>',\n `skip the given tasks. for multiple tasks, separate by a comma and wrap with quotes.\nspecify the task-name (e.g. \"TypescriptCompiler\") or the task-aspect-id (e.g. teambit.compilation/compiler)`,\n ],\n ['', 'skip-auto-tag', 'skip auto tagging dependents'],\n ['', 'soft', 'do not persist. only keep note of the changes to be made'],\n [\n '',\n 'persist [skip-build]',\n 'persist the changes generated by --soft tag. by default, run the build pipeline, unless \"skip-build\" is provided',\n ],\n ['', 'disable-tag-pipeline', 'skip the tag pipeline to avoid publishing the components'],\n ['', 'ignore-build-errors', 'proceed to tag pipeline even when build pipeline fails'],\n ['', 'rebuild-deps-graph', 'do not reuse the saved dependencies graph, instead build it from scratch'],\n ['', 'no-lock-deps', 'do not save the dependencies graph in the tag'],\n [\n '',\n 'increment-by <number>',\n '(default to 1) increment semver flag (patch/minor/major) by. e.g. incrementing patch by 2: 0.0.1 -> 0.0.3.',\n ],\n [\n '',\n 'skip-published-versions',\n 'skip versions that are already in the registry. useful when a previous run published the packages but failed before exporting',\n ],\n [\n 'i',\n 'ignore-issues <issues>',\n `ignore component issues (shown in \"bit status\" as \"issues found\"), issues to ignore:\n[${Object.keys(IssuesClasses).join(', ')}]\nto ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify \"*\".`,\n ],\n ['I', 'ignore-newest-version', 'allow tagging even when the component has newer versions e.g. for hotfixes.'],\n [\n '',\n 'fail-fast',\n 'stop pipeline execution on the first failed task (by default a task is skipped only when its dependency failed)',\n ],\n ['b', 'build', 'locally run the build pipeline (i.e. not via rippleCI) and complete the tag'],\n ['', 'loose', 'allow tag --build to succeed even if tasks like tests or lint fail'],\n [\n '',\n 'detach-head',\n 'UNSUPPORTED YET. in case a component is checked out to an older version, tag it without changing the head',\n ],\n] as CommandOptions;\n\nexport type TagParams = {\n snapped?: boolean;\n unmerged?: boolean;\n ver?: string;\n patch?: boolean;\n minor?: boolean;\n major?: boolean;\n increment?: ReleaseType;\n autoTagIncrement?: ReleaseType;\n preRelease?: string;\n prereleaseId?: string;\n ignoreUnresolvedDependencies?: boolean;\n ignoreIssues?: string;\n incrementBy?: number;\n failFast?: boolean;\n disableTagPipeline?: boolean;\n loose?: boolean;\n versionsFile?: string;\n} & Partial<BasicTagParams>;\n\nexport class TagCmd implements Command {\n name = 'tag [component-patterns...]';\n group = 'version-control';\n description = 'create immutable component snapshots with semantic version tags';\n extendedDescription = `creates tagged versions using semantic versioning (semver) for component releases. tags are immutable and exportable.\nby default tags all new and modified components. supports version specification per pattern using \"@\" (e.g. foo@1.0.0, bar@minor).\nuse for official releases. for development versions, use 'bit snap' instead.`;\n arguments = [\n {\n name: 'component-patterns...',\n description: `${COMPONENT_PATTERN_HELP}. By default, all new and modified components are tagged.`,\n },\n ];\n helpUrl = 'reference/components/snaps#create-a-tag-(release-version)';\n alias = 't';\n loader = true;\n options = tagCmdOptions;\n remoteOp = true; // In case a compiler / tester is not installed\n examples = [{ cmd: 'tag --ver 1.0.0', description: 'tag all components to version 1.0.0' }];\n\n constructor(\n private snapping: SnappingMain,\n private logger: Logger,\n private configStore: ConfigStoreMain\n ) {}\n\n // eslint-disable-next-line complexity\n async report([patterns = []]: [string[]], options: TagParams): Promise<string | Report> {\n const {\n message = '',\n ver,\n editor = '',\n versionsFile,\n snapped = false,\n unmerged = false,\n ignoreIssues,\n ignoreNewestVersion = false,\n skipTests = false,\n skipTasks,\n skipAutoTag = false,\n unmodified = false,\n soft = false,\n persist = false,\n disableTagPipeline = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n failFast = false,\n incrementBy = 1,\n skipPublishedVersions = false,\n detachHead,\n loose = false,\n } = options;\n\n if (!message && !persist && !editor) {\n this.logger.consoleWarning(\n `--message will be mandatory in the next few releases. make sure to add a message with your tag`\n );\n }\n const { releaseType, autoTagReleaseType, preReleaseId } = validateOptions(options);\n\n const disableTagAndSnapPipelines = disableTagPipeline;\n let build = options.build;\n build = this.configStore.getConfigBoolean(CFG_FORCE_LOCAL_BUILD) || Boolean(build);\n if (persist) {\n if (persist === true) build = true;\n else if (persist === 'skip-build') build = false;\n else throw new BitError(`unknown value for --persist, use either --persist or --persist=skip-build`);\n }\n if (!build && !soft) {\n this.logger.consoleWarning(\n `tagging components on \"main\" lane when using remote build is not recommended. To avoid SemVer versions of your component with failing builds, please refer to:\n- Snap changes in a different lane and merge to \"main\" on your remote (learn more on lanes - https://bit.dev/reference/lanes/getting-started-with-lanes)\n- Use \\`bit tag --build\\` to build your components locally.\n- Use \\`snap\\` or \\`build\\` first to validate your build passing, and then version and export safely.\n\nTo undo local tag use the \"bit reset\" command.`\n );\n }\n\n const params = {\n ids: patterns,\n snapped,\n unmerged,\n editor,\n versionsFile,\n message,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreIssues,\n ignoreNewestVersion,\n skipTests,\n skipTasks,\n skipAutoTag,\n build,\n soft,\n persist,\n unmodified,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n incrementBy,\n skipPublishedVersions,\n version: ver,\n failFast,\n detachHead,\n loose,\n };\n\n const results = await this.snapping.tag(params);\n if (!results) return chalk.yellow(persist ? 'no soft-tag found' : NOTHING_TO_TAG_MSG);\n return tagResultReport(results);\n }\n}\n\nexport function validateOptions(options: TagParams) {\n const { patch, minor, major, preRelease, increment, autoTagIncrement, prereleaseId, skipAutoTag } = options;\n // the prerelease-id is relevant for the dependents as well, so --auto-tag-increment alone is\n // enough to justify it, even when the modified components get a non-prerelease bump.\n if (prereleaseId && !isPreReleaseType(increment) && !isPreReleaseType(autoTagIncrement)) {\n throw new BitError(\n `--prerelease-id should be entered along with --increment or --auto-tag-increment flag, while the increment must be one of the following: [${PRE_RELEASE_TYPES.join(', ')}]`\n );\n }\n\n const releaseFlags = [patch, minor, major, preRelease].filter((x) => x);\n if (releaseFlags.length > 1) {\n throw new BitError('you can use only one of the following - patch, minor, major, pre-release');\n }\n\n if (autoTagIncrement && skipAutoTag) {\n throw new BitError('you can use either --auto-tag-increment or --skip-auto-tag, but not both');\n }\n\n const getReleaseType = (): ReleaseType => {\n if (increment) {\n if (!RELEASE_TYPES.includes(increment)) {\n throw new BitError(`invalid increment-level \"${increment}\".\nsemver allows the following options only: ${RELEASE_TYPES.join(', ')}`);\n }\n return increment;\n }\n if (major) return 'major';\n if (minor) return 'minor';\n if (patch) return 'patch';\n if (preRelease) return 'prerelease';\n return DEFAULT_BIT_RELEASE_TYPE;\n };\n const getAutoTagReleaseType = (): ReleaseType | undefined => {\n if (!autoTagIncrement) return undefined;\n if (!RELEASE_TYPES.includes(autoTagIncrement)) {\n throw new BitError(`invalid auto-tag-increment level \"${autoTagIncrement}\".\nsemver allows the following options only: ${RELEASE_TYPES.join(', ')}`);\n }\n return autoTagIncrement;\n };\n const getPreReleaseId = (): string | undefined => {\n if (prereleaseId) {\n return prereleaseId;\n }\n if (preRelease && typeof preRelease === 'string') {\n return preRelease;\n }\n return undefined;\n };\n\n return {\n releaseType: getReleaseType(),\n autoTagReleaseType: getAutoTagReleaseType(),\n preReleaseId: getPreReleaseId(),\n };\n}\n\nexport function tagResultReport(results: TagResults): string | Report {\n const {\n taggedComponents,\n autoTaggedResults,\n warnings,\n newComponents,\n removedComponents,\n exportedIds,\n totalComponentsCount,\n }: TagResults = results;\n const changedComponents = taggedComponents.filter((component) => !newComponents.searchWithoutVersion(component.id));\n const addedComponents = taggedComponents.filter((component) => newComponents.searchWithoutVersion(component.id));\n const autoTaggedCount = autoTaggedResults ? autoTaggedResults.length : 0;\n const totalCount = totalComponentsCount ?? taggedComponents.length + autoTaggedCount;\n\n const formatCompMinimal = (component: ConsumerComponent): string => {\n return formatItem(compInBold(component.id));\n };\n\n const formatCompDetailed = (component: ConsumerComponent): string => {\n let output = formatItem(compInBold(component.id));\n const autoTag = (autoTaggedResults ?? []).filter((result) => result.triggeredBy.searchWithoutVersion(component.id));\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n output += `\\n ${AUTO_TAGGED_MSG}:\\n ${autoTagComp.join('\\n ')}`;\n }\n return output;\n };\n\n const softTagPrefix = results.isSoftTag ? 'soft-tagged ' : '';\n const newDesc = results.isSoftTag\n ? 'set to be tagged with first version for components when persisted'\n : 'first version for components';\n const changedDesc = results.isSoftTag\n ? 'components that are set to get a version bump when persisted'\n : 'components that got a version bump';\n\n const buildSections = (formatComp: (c: ConsumerComponent) => string) => {\n const newSection = formatSection(softTagPrefix + 'new components', newDesc, addedComponents.map(formatComp));\n const changedSection = formatSection(\n softTagPrefix + 'changed components',\n changedDesc,\n changedComponents.map(formatComp)\n );\n return { newSection, changedSection };\n };\n\n const removedSection = outputIdsIfExists('removed components', removedComponents);\n const pinnedSection = dependentsWithPinnedDepsSection(results.dependentsWithPinnedDeps, 'tagged');\n\n const publishSection = (() => {\n const { publishedPackages } = results;\n if (!publishedPackages || !publishedPackages.length) return '';\n const items = publishedPackages.map((pkg) => formatItem(pkg));\n return formatSection('published components', '', items);\n })();\n\n const exportedSection = (() => {\n if (!exportedIds) return '';\n if (!exportedIds.length) return `${warnSymbol} ${chalk.yellow('no component has been exported')}`;\n const items = exportedIds.map((id) => formatItem(compInBold(id)));\n return formatSection('exported components', '', items);\n })();\n\n const warningsSection =\n warnings && warnings.length ? warnings.map((w) => `${warnSymbol} ${chalk.yellow(w)}`).join('\\n') : '';\n\n const workspaceRootHint = results.autoAddedWorkspaceRoot\n ? formatHint(\n `(${compInBold(results.autoAddedWorkspaceRoot)} is the workspace-root component. it was new or modified, so it was tagged along: the other components record the root version they were tagged with)`\n )\n : '';\n\n const summaryMsg = `${totalCount} component(s) ${results.isSoftTag ? 'soft-' : ''}tagged${exportedIds ? ' and exported' : ''}`;\n const summary = formatSuccessSummary(summaryMsg);\n\n const tagExplanation = results.isSoftTag\n ? formatHint(\n '(use \"bit tag --persist\" to persist the soft-tagged changes as a fully tagged version)\\n(use \"bit reset --soft\" to remove the soft-tags)'\n )\n : exportedIds\n ? ''\n : formatHint('(use \"bit export\" to push these components to a remote)\\n(use \"bit reset\" to unstage versions)');\n\n const softTagClarification = results.isSoftTag\n ? chalk.bold(\n 'keep in mind that this is a soft-tag (changes recorded to be tagged), to persist the changes use --persist flag'\n )\n : '';\n\n const hasAutoTagged = autoTaggedCount > 0;\n\n // Build minimal output (no auto-tagged listing, just counts grouped by scope)\n const { newSection, changedSection } = buildSections(hasAutoTagged ? formatCompMinimal : formatCompDetailed);\n\n const autoTagSection = (() => {\n if (!hasAutoTagged) return '';\n const scopeCounts = countBy(autoTaggedResults, (r) => r.component.id.scope);\n const sorted = Object.entries(scopeCounts).sort(([, a], [, b]) => b - a);\n const MAX_SHOWN = 4;\n const shown = sorted.slice(0, MAX_SHOWN).map(([scope, n]) => `${scope} (${n})`);\n const remaining = sorted.length - MAX_SHOWN;\n const scopeLine = remaining > 0 ? [...shown, `+ ${remaining} more scopes`].join(' · ') : shown.join(' · ');\n const title = formatTitle(`auto-tagged dependents (${autoTaggedCount})`);\n const scopes = ` ${scopeLine}`;\n const hint = formatDetailsHint('full list of auto-tagged dependents');\n return `${title}\\n${scopes}\\n${hint}`;\n })();\n\n const footerParts = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\\n');\n const data = joinSections([\n newSection,\n changedSection,\n workspaceRootHint,\n autoTagSection,\n pinnedSection,\n removedSection,\n publishSection,\n exportedSection,\n warningsSection,\n footerParts,\n ]);\n\n if (!hasAutoTagged) {\n return data;\n }\n\n // Build detailed output (with full auto-tagged listing)\n const { newSection: newDetailed, changedSection: changedDetailed } = buildSections(formatCompDetailed);\n const detailedFooter = [summary, tagExplanation, softTagClarification].filter(Boolean).join('\\n');\n const details = joinSections([\n newDetailed,\n changedDetailed,\n workspaceRootHint,\n pinnedSection,\n removedSection,\n publishSection,\n exportedSection,\n warningsSection,\n detailedFooter,\n ]);\n\n return { data, code: 0, details };\n}\n\n/** @deprecated use tagResultReport instead */\nexport function tagResultOutput(results: TagResults): string {\n const result = tagResultReport(results);\n return typeof result === 'string' ? result : result.details || result.data;\n}\n\nexport function compInBold(id: ComponentID): string {\n const version = id.hasVersion() ? `@${id.version}` : '';\n return `${chalk.bold(id.toStringWithoutVersion())}${version}`;\n}\n\nexport function dependentsWithPinnedDepsSection(\n dependents: DependentWithPinnedDeps[] | undefined,\n action: 'tagged' | 'snapped'\n): string {\n if (!dependents?.length) return '';\n const items = dependents.map((dependent) =>\n formatItem(`${compInBold(dependent.id)} ${chalk.dim(`(${dependent.pinnedDependencies.join(', ')})`)}`, warnSymbol)\n );\n const section = formatSection(\n `dependents not auto-${action}`,\n `their config sets the version of the ${action} dependency (\"bit deps set\", variants or env), so they keep using it`,\n items\n );\n const hint = formatHint(\n '(to use the workspace version, remove the version from the config, e.g. \"bit deps unset <component> <package>\")'\n );\n return `${section}\\n${hint}`;\n}\n\nexport function outputIdsIfExists(label: string, ids?: ComponentIdList) {\n if (!ids?.length) return '';\n const items = ids.map((id) => formatItem(id.toStringWithoutVersion(), warnSymbol));\n return formatSection(label, '', items);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,14 @@ export type BasicTagParams = BasicTagSnapParams & {
35
35
  */
36
36
  skipPublishedVersions?: boolean;
37
37
  };
38
+ /**
39
+ * a workspace component that depends on a tagged/snapped component, but its config sets the version of this
40
+ * dependency (e.g. "bit deps set"). it doesn't use the workspace version, so it's not auto-tagged.
41
+ */
42
+ export type DependentWithPinnedDeps = {
43
+ id: ComponentID;
44
+ pinnedDependencies: string[];
45
+ };
38
46
  export type VersionMakerParams = {
39
47
  tagDataPerComp?: TagDataPerComp[];
40
48
  populateArtifactsFrom?: ComponentID[];
@@ -77,6 +85,7 @@ export declare class VersionMaker {
77
85
  makeVersion(): Promise<{
78
86
  taggedComponents: ConsumerComponent[];
79
87
  autoTaggedResults: AutoTagResult[];
88
+ dependentsWithPinnedDeps: DependentWithPinnedDeps[];
80
89
  publishedPackages: string[];
81
90
  stagedConfig?: StagedConfig;
82
91
  removedComponents?: ComponentIdList;
@@ -122,6 +131,7 @@ export declare class VersionMaker {
122
131
  */
123
132
  private emptyBuilderData;
124
133
  private updateDependenciesVersions;
134
+ private getDependentsWithPinnedDeps;
125
135
  /**
126
136
  * every member of a workspace-root component records the root it is snapped in, at the version the
127
137
  * root has after this batch: its new version when it is snapped along, otherwise the one in .bitmap.
@@ -179,6 +179,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
179
179
  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; }
180
180
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
181
181
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
182
+ /**
183
+ * a workspace component that depends on a tagged/snapped component, but its config sets the version of this
184
+ * dependency (e.g. "bit deps set"). it doesn't use the workspace version, so it's not auto-tagged.
185
+ */
186
+
182
187
  /**
183
188
  * create a tag or a snap of the given components and save them in the local scope.
184
189
  */
@@ -230,6 +235,7 @@ class VersionMaker {
230
235
  this.params.isSnap ? this.setHashes() : await this.setFutureVersions(autoTagIds);
231
236
  // go through all dependencies and update their versions
232
237
  this.updateDependenciesVersions();
238
+ const dependentsWithPinnedDeps = this.getDependentsWithPinnedDeps();
233
239
  this.recordWorkspaceRoot();
234
240
  await this.addLogToComponents(componentsToTag, autoTagComponents, messagePerId);
235
241
  // don't move it down. otherwise, it'll be empty and we don't know which components were during merge.
@@ -243,6 +249,7 @@ class VersionMaker {
243
249
  return {
244
250
  taggedComponents: componentsToTag,
245
251
  autoTaggedResults: autoTagData,
252
+ dependentsWithPinnedDeps,
246
253
  publishedPackages: [],
247
254
  stagedConfig,
248
255
  totalComponentsCount: this.allComponentsToTag.length,
@@ -340,6 +347,7 @@ class VersionMaker {
340
347
  return {
341
348
  taggedComponents: componentsToTag,
342
349
  autoTaggedResults: autoTagData,
350
+ dependentsWithPinnedDeps,
343
351
  publishedPackages,
344
352
  stagedConfig,
345
353
  removedComponents,
@@ -751,9 +759,12 @@ class VersionMaker {
751
759
  // from main. we want to keep it as the user requested. Otherwise, this changes the dependency version to the newly
752
760
  // snapped one unintentionally.
753
761
  const componentsToTag = this.allComponentsToTag.filter(c => !c.isRemoved());
754
- const getNewDependencyVersion = id => {
762
+ const getNewDependencyVersion = (id, dependent) => {
755
763
  const foundDependency = componentsToTag.find(component => component.id.isEqualWithoutVersion(id));
756
- return foundDependency ? id.changeVersion(foundDependency.version) : null;
764
+ if (!foundDependency) return null;
765
+ // the dependent uses the version set in its config (e.g. "bit deps set"), not the workspace one. keep it.
766
+ if (dependent?.isDependencyVersionFromConfig(id)) return null;
767
+ return id.changeVersion(foundDependency.version);
757
768
  };
758
769
  const changeExtensionsVersion = component => {
759
770
  component.extensions.forEach(ext => {
@@ -780,7 +791,7 @@ class VersionMaker {
780
791
  // this check is added because on Ripple in some scenarios it was throwing:
781
792
  // "ComponentID.fromObject expect to get an object, got an instance of ComponentID" (locally it didn't happen)
782
793
  const depId = dep.componentId instanceof _componentId().ComponentID ? dep.componentId : _componentId().ComponentID.fromObject(dep.componentId);
783
- const newDepId = getNewDependencyVersion(depId);
794
+ const newDepId = getNewDependencyVersion(depId, component);
784
795
  dep.componentId = (newDepId || depId).serialize();
785
796
  dep.id = (newDepId || depId).toString();
786
797
  dep.version = (newDepId || depId).version;
@@ -796,7 +807,7 @@ class VersionMaker {
796
807
  componentsToTag.forEach(oneComponentToTag => {
797
808
  const componentRangePrefix = this.dependencyResolver.calcComponentRangePrefixByConsumerComponent(oneComponentToTag);
798
809
  oneComponentToTag.getAllDependencies().forEach(dependency => {
799
- const newDepId = getNewDependencyVersion(dependency.id);
810
+ const newDepId = getNewDependencyVersion(dependency.id, oneComponentToTag);
800
811
  if (!newDepId) return;
801
812
  dependency.id = newDepId;
802
813
  // if componentRangePrefix === '+', then, only it only saves packages in workspace.jsonc.
@@ -810,6 +821,21 @@ class VersionMaker {
810
821
  oneComponentToTag = updateDepsResolverData(oneComponentToTag);
811
822
  });
812
823
  }
824
+ getDependentsWithPinnedDeps() {
825
+ if (!this.allWorkspaceComps) return [];
826
+ const idsToTag = _componentId().ComponentIdList.fromArray(this.allComponentsToTag.map(c => c.id));
827
+ // like updateDependenciesVersions, a removed component doesn't count as a new version of a dependency
828
+ const idsWithNewVersion = _componentId().ComponentIdList.fromArray(this.allComponentsToTag.filter(c => !c.isRemoved()).map(c => c.id));
829
+ return (0, _lodash().compact)(this.allWorkspaceComps.map(component => {
830
+ const consumerComponent = component.state._consumer;
831
+ const pinnedDependencies = consumerComponent.getDependenciesWithVersionFromConfig(id => idsWithNewVersion.hasWithoutVersion(id));
832
+ if (!pinnedDependencies.length || idsToTag.hasWithoutVersion(component.id)) return null;
833
+ return {
834
+ id: component.id,
835
+ pinnedDependencies
836
+ };
837
+ }));
838
+ }
813
839
 
814
840
  /**
815
841
  * every member of a workspace-root component records the root it is snapped in, at the version the