@teambit/snapping 0.0.214 → 0.0.218

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SnappingAspect } from './snapping.aspect';
2
- export type { SnappingMain } from './snapping.main.runtime';
2
+ export type { SnappingMain, TagResults, SnapResults } from './snapping.main.runtime';
3
3
  export default SnappingAspect;
4
4
  export { SnappingAspect };
5
5
  export type { onTagIdTransformer } from './tag-model-component';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["SnappingAspect"],"sources":["index.ts"],"sourcesContent":["import { SnappingAspect } from './snapping.aspect';\n\nexport type { SnappingMain } from './snapping.main.runtime';\nexport default SnappingAspect;\nexport { SnappingAspect };\nexport type { onTagIdTransformer } from './tag-model-component';\n"],"mappings":";;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmD,eAGpCA,0BAAc;AAAA"}
1
+ {"version":3,"names":["SnappingAspect"],"sources":["index.ts"],"sourcesContent":["import { SnappingAspect } from './snapping.aspect';\n\nexport type { SnappingMain, TagResults, SnapResults } from './snapping.main.runtime';\nexport default SnappingAspect;\nexport { SnappingAspect };\nexport type { onTagIdTransformer } from './tag-model-component';\n"],"mappings":";;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAmD,eAGpCA,0BAAc;AAAA"}
package/dist/snap-cmd.js CHANGED
@@ -61,7 +61,7 @@ class SnapCmd {
61
61
  description: `${_constants().COMPONENT_PATTERN_HELP}. By default, all new and modified components are snapped.`
62
62
  }]);
63
63
  (0, _defineProperty2().default)(this, "alias", '');
64
- (0, _defineProperty2().default)(this, "options", [['m', 'message <message>', 'log message describing the latest changes'], ['', 'unmodified', 'include unmodified components (by default, only new and modified components are snapped)'], ['', 'unmerged', 'EXPERIMENTAL. complete a merge process by snapping the unmerged components'], ['', 'build', 'Harmony only. run the pipeline build and complete the tag'], ['', 'skip-tests', 'skip running component tests during snap process'], ['', 'skip-auto-snap', 'skip auto snapping dependents'], ['', 'disable-snap-pipeline', 'skip the snap pipeline'], ['', 'force-deploy', 'Harmony only. run the deploy pipeline although the build failed'], ['i', 'ignore-issues [issues]', `ignore component issues (shown in "bit status" as "issues found"), issues to ignore:
64
+ (0, _defineProperty2().default)(this, "options", [['m', 'message <message>', 'log message describing the latest changes'], ['', 'unmodified', 'include unmodified components (by default, only new and modified components are snapped)'], ['', 'unmerged', 'EXPERIMENTAL. complete a merge process by snapping the unmerged components'], ['b', 'build', 'EXPERIMENTAL. not needed for now. run the build pipeline in case the feature-flag build-on-ci is enabled'], ['', 'skip-tests', 'skip running component tests during snap process'], ['', 'skip-auto-snap', 'skip auto snapping dependents'], ['', 'disable-snap-pipeline', 'skip the snap pipeline'], ['', 'force-deploy', 'run the deploy pipeline although the build failed'], ['i', 'ignore-issues [issues]', `ignore component issues (shown in "bit status" as "issues found"), issues to ignore:
65
65
  [${Object.keys(_componentIssues().IssuesClasses).join(', ')}]
66
66
  to ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify "*".`], ['a', 'all', 'DEPRECATED (not needed anymore, it is the default now). snap all new and modified components'], ['f', 'force', 'DEPRECATED (use "--skip-tests" or "--unmodified" instead). force-snap even if tests are failing and even when component has not changed']]);
67
67
  (0, _defineProperty2().default)(this, "loader", true);
@@ -1 +1 @@
1
- {"version":3,"names":["SnapCmd","constructor","docsDomain","snapping","logger","name","description","COMPONENT_PATTERN_HELP","Object","keys","IssuesClasses","join","extendedDescription","WILDCARD_HELP","report","pattern","message","all","force","unmerged","ignoreIssues","build","skipTests","skipAutoSnap","disableSnapPipeline","forceDeploy","unmodified","isFeatureEnabled","BUILD_ON_CI","Boolean","disableTagAndSnapPipelines","BitError","consoleWarning","results","snap","chalk","yellow","NOTHING_TO_SNAP_MSG","snappedComponents","autoSnappedResults","warnings","newComponents","laneName","changedComponents","filter","component","searchWithoutVersion","id","addedComponents","autoTaggedCount","length","warningsOutput","tagExplanation","outputComponents","comps","map","componentOutput","toString","autoTag","result","triggeredBy","searchWithoutScopeAndVersion","autoTagComp","a","AUTO_SNAPPED_MSG","outputIfExists","label","explanation","components","underline","laneStr","green"],"sources":["snap-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { isFeatureEnabled, BUILD_ON_CI } from '@teambit/legacy/dist/api/consumer/lib/feature-toggle';\nimport {\n WILDCARD_HELP,\n NOTHING_TO_SNAP_MSG,\n AUTO_SNAPPED_MSG,\n COMPONENT_PATTERN_HELP,\n} from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport { Logger } from '@teambit/logger';\nimport { SnapResults } from '@teambit/legacy/dist/api/consumer/lib/snap';\nimport { SnappingMain } from './snapping.main.runtime';\n\nexport class SnapCmd implements Command {\n name = 'snap [component-pattern]';\n description = 'EXPERIMENTAL. create an immutable and exportable component snapshot (no release version)';\n extendedDescription: string;\n arguments = [\n {\n name: 'component-pattern',\n description: `${COMPONENT_PATTERN_HELP}. By default, all new and modified components are snapped.`,\n },\n ];\n alias = '';\n options = [\n ['m', 'message <message>', 'log message describing the latest changes'],\n ['', 'unmodified', 'include unmodified components (by default, only new and modified components are snapped)'],\n ['', 'unmerged', 'EXPERIMENTAL. complete a merge process by snapping the unmerged components'],\n ['', 'build', 'Harmony only. run the pipeline build and complete the tag'],\n ['', 'skip-tests', 'skip running component tests during snap process'],\n ['', 'skip-auto-snap', 'skip auto snapping dependents'],\n ['', 'disable-snap-pipeline', 'skip the snap pipeline'],\n ['', 'force-deploy', 'Harmony only. run the deploy pipeline although the build failed'],\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 ['a', 'all', 'DEPRECATED (not needed anymore, it is the default now). snap all new and modified components'],\n [\n 'f',\n 'force',\n 'DEPRECATED (use \"--skip-tests\" or \"--unmodified\" instead). force-snap even if tests are failing and even when component has not changed',\n ],\n ] as CommandOptions;\n loader = true;\n private = true;\n migration = true;\n\n constructor(docsDomain: string, private snapping: SnappingMain, private logger: Logger) {\n this.extendedDescription = `https://${docsDomain}/components/snaps\n${WILDCARD_HELP('snap')}`;\n }\n\n async report(\n [pattern]: string[],\n {\n message = '',\n all = false,\n force = false,\n unmerged = false,\n ignoreIssues,\n build,\n skipTests = false,\n skipAutoSnap = false,\n disableSnapPipeline = false,\n forceDeploy = false,\n unmodified = false,\n }: {\n message?: string;\n all?: boolean;\n force?: boolean;\n unmerged?: boolean;\n ignoreIssues?: string;\n build?: boolean;\n skipTests?: boolean;\n skipAutoSnap?: boolean;\n disableSnapPipeline?: boolean;\n forceDeploy?: boolean;\n unmodified?: boolean;\n }\n ) {\n build = isFeatureEnabled(BUILD_ON_CI) ? Boolean(build) : true;\n const disableTagAndSnapPipelines = disableSnapPipeline;\n if (disableTagAndSnapPipelines && forceDeploy) {\n throw new BitError('you can use either force-deploy or disable-snap-pipeline, but not both');\n }\n\n if (all) {\n this.logger.consoleWarning(\n `--all is deprecated, please omit it. \"bit snap\" by default will snap all new and modified components`\n );\n }\n if (force) {\n this.logger.consoleWarning(\n `--force is deprecated, use either --skip-tests or --unmodified depending on the use case`\n );\n if (pattern) unmodified = true;\n }\n if (!message) {\n this.logger.consoleWarning(\n `--message will be mandatory in the next few releases. make sure to add a message with your snap`\n );\n }\n\n const results = await this.snapping.snap({\n pattern,\n message,\n unmerged,\n ignoreIssues,\n build,\n skipTests,\n skipAutoSnap,\n disableTagAndSnapPipelines,\n forceDeploy,\n unmodified,\n });\n\n if (!results) return chalk.yellow(NOTHING_TO_SNAP_MSG);\n const { snappedComponents, autoSnappedResults, warnings, newComponents, laneName }: SnapResults = results;\n const changedComponents = snappedComponents.filter(\n (component) => !newComponents.searchWithoutVersion(component.id)\n );\n const addedComponents = snappedComponents.filter((component) => newComponents.searchWithoutVersion(component.id));\n const autoTaggedCount = autoSnappedResults ? autoSnappedResults.length : 0;\n\n const warningsOutput = warnings && warnings.length ? `${chalk.yellow(warnings.join('\\n'))}\\n\\n` : '';\n const tagExplanation = `\\n(use \"bit export\" to push these components to a remote\")\n(use \"bit reset\" to unstage versions)\\n`;\n\n const outputComponents = (comps) => {\n return comps\n .map((component) => {\n let componentOutput = ` > ${component.id.toString()}`;\n const autoTag = autoSnappedResults.filter((result) =>\n result.triggeredBy.searchWithoutScopeAndVersion(component.id)\n );\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n componentOutput += `\\n ${AUTO_SNAPPED_MSG} (${autoTagComp.length} total):\n ${autoTagComp.join('\\n ')}`;\n }\n return componentOutput;\n })\n .join('\\n');\n };\n\n const outputIfExists = (label, explanation, components) => {\n if (!components.length) return '';\n return `\\n${chalk.underline(label)}\\n(${explanation})\\n${outputComponents(components)}\\n`;\n };\n const laneStr = laneName ? ` on \"${laneName}\" lane` : '';\n\n return (\n warningsOutput +\n chalk.green(`${snappedComponents.length + autoTaggedCount} component(s) snapped${laneStr}`) +\n tagExplanation +\n outputIfExists('new components', 'first version for components', addedComponents) +\n outputIfExists('changed components', 'components that got a version bump', changedComponents)\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["SnapCmd","constructor","docsDomain","snapping","logger","name","description","COMPONENT_PATTERN_HELP","Object","keys","IssuesClasses","join","extendedDescription","WILDCARD_HELP","report","pattern","message","all","force","unmerged","ignoreIssues","build","skipTests","skipAutoSnap","disableSnapPipeline","forceDeploy","unmodified","isFeatureEnabled","BUILD_ON_CI","Boolean","disableTagAndSnapPipelines","BitError","consoleWarning","results","snap","chalk","yellow","NOTHING_TO_SNAP_MSG","snappedComponents","autoSnappedResults","warnings","newComponents","laneName","changedComponents","filter","component","searchWithoutVersion","id","addedComponents","autoTaggedCount","length","warningsOutput","tagExplanation","outputComponents","comps","map","componentOutput","toString","autoTag","result","triggeredBy","searchWithoutScopeAndVersion","autoTagComp","a","AUTO_SNAPPED_MSG","outputIfExists","label","explanation","components","underline","laneStr","green"],"sources":["snap-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { isFeatureEnabled, BUILD_ON_CI } from '@teambit/legacy/dist/api/consumer/lib/feature-toggle';\nimport {\n WILDCARD_HELP,\n NOTHING_TO_SNAP_MSG,\n AUTO_SNAPPED_MSG,\n COMPONENT_PATTERN_HELP,\n} from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport { Logger } from '@teambit/logger';\nimport { SnappingMain, SnapResults } from './snapping.main.runtime';\n\nexport class SnapCmd implements Command {\n name = 'snap [component-pattern]';\n description = 'EXPERIMENTAL. create an immutable and exportable component snapshot (no release version)';\n extendedDescription: string;\n arguments = [\n {\n name: 'component-pattern',\n description: `${COMPONENT_PATTERN_HELP}. By default, all new and modified components are snapped.`,\n },\n ];\n alias = '';\n options = [\n ['m', 'message <message>', 'log message describing the latest changes'],\n ['', 'unmodified', 'include unmodified components (by default, only new and modified components are snapped)'],\n ['', 'unmerged', 'EXPERIMENTAL. complete a merge process by snapping the unmerged components'],\n [\n 'b',\n 'build',\n 'EXPERIMENTAL. not needed for now. run the build pipeline in case the feature-flag build-on-ci is enabled',\n ],\n ['', 'skip-tests', 'skip running component tests during snap process'],\n ['', 'skip-auto-snap', 'skip auto snapping dependents'],\n ['', 'disable-snap-pipeline', 'skip the snap pipeline'],\n ['', 'force-deploy', 'run the deploy pipeline although the build failed'],\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 ['a', 'all', 'DEPRECATED (not needed anymore, it is the default now). snap all new and modified components'],\n [\n 'f',\n 'force',\n 'DEPRECATED (use \"--skip-tests\" or \"--unmodified\" instead). force-snap even if tests are failing and even when component has not changed',\n ],\n ] as CommandOptions;\n loader = true;\n private = true;\n migration = true;\n\n constructor(docsDomain: string, private snapping: SnappingMain, private logger: Logger) {\n this.extendedDescription = `https://${docsDomain}/components/snaps\n${WILDCARD_HELP('snap')}`;\n }\n\n async report(\n [pattern]: string[],\n {\n message = '',\n all = false,\n force = false,\n unmerged = false,\n ignoreIssues,\n build,\n skipTests = false,\n skipAutoSnap = false,\n disableSnapPipeline = false,\n forceDeploy = false,\n unmodified = false,\n }: {\n message?: string;\n all?: boolean;\n force?: boolean;\n unmerged?: boolean;\n ignoreIssues?: string;\n build?: boolean;\n skipTests?: boolean;\n skipAutoSnap?: boolean;\n disableSnapPipeline?: boolean;\n forceDeploy?: boolean;\n unmodified?: boolean;\n }\n ) {\n build = isFeatureEnabled(BUILD_ON_CI) ? Boolean(build) : true;\n const disableTagAndSnapPipelines = disableSnapPipeline;\n if (disableTagAndSnapPipelines && forceDeploy) {\n throw new BitError('you can use either force-deploy or disable-snap-pipeline, but not both');\n }\n\n if (all) {\n this.logger.consoleWarning(\n `--all is deprecated, please omit it. \"bit snap\" by default will snap all new and modified components`\n );\n }\n if (force) {\n this.logger.consoleWarning(\n `--force is deprecated, use either --skip-tests or --unmodified depending on the use case`\n );\n if (pattern) unmodified = true;\n }\n if (!message) {\n this.logger.consoleWarning(\n `--message will be mandatory in the next few releases. make sure to add a message with your snap`\n );\n }\n\n const results = await this.snapping.snap({\n pattern,\n message,\n unmerged,\n ignoreIssues,\n build,\n skipTests,\n skipAutoSnap,\n disableTagAndSnapPipelines,\n forceDeploy,\n unmodified,\n });\n\n if (!results) return chalk.yellow(NOTHING_TO_SNAP_MSG);\n const { snappedComponents, autoSnappedResults, warnings, newComponents, laneName }: SnapResults = results;\n const changedComponents = snappedComponents.filter(\n (component) => !newComponents.searchWithoutVersion(component.id)\n );\n const addedComponents = snappedComponents.filter((component) => newComponents.searchWithoutVersion(component.id));\n const autoTaggedCount = autoSnappedResults ? autoSnappedResults.length : 0;\n\n const warningsOutput = warnings && warnings.length ? `${chalk.yellow(warnings.join('\\n'))}\\n\\n` : '';\n const tagExplanation = `\\n(use \"bit export\" to push these components to a remote\")\n(use \"bit reset\" to unstage versions)\\n`;\n\n const outputComponents = (comps) => {\n return comps\n .map((component) => {\n let componentOutput = ` > ${component.id.toString()}`;\n const autoTag = autoSnappedResults.filter((result) =>\n result.triggeredBy.searchWithoutScopeAndVersion(component.id)\n );\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n componentOutput += `\\n ${AUTO_SNAPPED_MSG} (${autoTagComp.length} total):\n ${autoTagComp.join('\\n ')}`;\n }\n return componentOutput;\n })\n .join('\\n');\n };\n\n const outputIfExists = (label, explanation, components) => {\n if (!components.length) return '';\n return `\\n${chalk.underline(label)}\\n(${explanation})\\n${outputComponents(components)}\\n`;\n };\n const laneStr = laneName ? ` on \"${laneName}\" lane` : '';\n\n return (\n warningsOutput +\n chalk.green(`${snappedComponents.length + autoTaggedCount} component(s) snapped${laneStr}`) +\n tagExplanation +\n outputIfExists('new components', 'first version for components', addedComponents) +\n outputIfExists('changed components', 'components that got a version bump', changedComponents)\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Command, CommandOptions } from '@teambit/cli';
2
+ import { Logger } from '@teambit/logger';
3
+ import { SnappingMain } from './snapping.main.runtime';
4
+ export declare type SnapDataPerCompRaw = {
5
+ componentId: string;
6
+ dependencies?: string[];
7
+ aspects?: Record<string, any>;
8
+ message?: string;
9
+ };
10
+ export declare class SnapFromScopeCmd implements Command {
11
+ private snapping;
12
+ private logger;
13
+ name: string;
14
+ description: string;
15
+ extendedDescription: string;
16
+ alias: string;
17
+ options: CommandOptions;
18
+ loader: boolean;
19
+ private: boolean;
20
+ migration: boolean;
21
+ constructor(snapping: SnappingMain, logger: Logger);
22
+ report([data]: [string], { push, message, ignoreIssues, build, skipTests, disableSnapPipeline, forceDeploy, }: {
23
+ push?: boolean;
24
+ message?: string;
25
+ ignoreIssues?: string;
26
+ build?: boolean;
27
+ skipTests?: boolean;
28
+ disableSnapPipeline?: boolean;
29
+ forceDeploy?: boolean;
30
+ }): Promise<string>;
31
+ private parseData;
32
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.promise.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.SnapFromScopeCmd = void 0;
10
+ function _defineProperty2() {
11
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ _defineProperty2 = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _chalk() {
18
+ const data = _interopRequireDefault(require("chalk"));
19
+ _chalk = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _componentIssues() {
25
+ const data = require("@teambit/component-issues");
26
+ _componentIssues = function () {
27
+ return data;
28
+ };
29
+ return data;
30
+ }
31
+ function _constants() {
32
+ const data = require("@teambit/legacy/dist/constants");
33
+ _constants = function () {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
38
+ function _bitError() {
39
+ const data = require("@teambit/bit-error");
40
+ _bitError = function () {
41
+ return data;
42
+ };
43
+ return data;
44
+ }
45
+ class SnapFromScopeCmd {
46
+ constructor(snapping, logger) {
47
+ this.snapping = snapping;
48
+ this.logger = logger;
49
+ (0, _defineProperty2().default)(this, "name", '_snap <data>');
50
+ (0, _defineProperty2().default)(this, "description", 'snap components from a bare-scope');
51
+ (0, _defineProperty2().default)(this, "extendedDescription", `this command should be running from a new bare scope, it first imports the components it needs and then processes the snap.
52
+ the input data is a stringified JSON of an array of the following object.
53
+ {
54
+ componentId: string; // ids always have scope, so it's safe to parse them from string
55
+ dependencies?: string[]; // e.g. [teambit/compiler@1.0.0, teambit/tester@1.0.0]
56
+ aspects?: Record<string,any> // e.g. { "teambit.react/react": {}, "teambit.envs/envs": { "env": "teambit.react/react" } }
57
+ message?: string; // tag-message.
58
+ }
59
+ an example of the final data: '[{"componentId":"ci.remote2/comp-b","message": "first snap"}]'
60
+ `);
61
+ (0, _defineProperty2().default)(this, "alias", '');
62
+ (0, _defineProperty2().default)(this, "options", [['', 'push', 'export the updated objects to the original scopes once done'], ['m', 'message <message>', 'log message describing the latest changes'], ['', 'build', 'run the build pipeline'], ['', 'skip-tests', 'skip running component tests during snap process'], ['', 'disable-snap-pipeline', 'skip the snap pipeline'], ['', 'force-deploy', 'run the deploy pipeline although the build failed'], ['i', 'ignore-issues [issues]', `ignore component issues (shown in "bit status" as "issues found"), issues to ignore:
63
+ [${Object.keys(_componentIssues().IssuesClasses).join(', ')}]
64
+ to ignore multiple issues, separate them by a comma and wrap with quotes. to ignore all issues, specify "*".`]]);
65
+ (0, _defineProperty2().default)(this, "loader", true);
66
+ (0, _defineProperty2().default)(this, "private", true);
67
+ (0, _defineProperty2().default)(this, "migration", true);
68
+ }
69
+ async report([data], {
70
+ push = false,
71
+ message = '',
72
+ ignoreIssues,
73
+ build = false,
74
+ skipTests = false,
75
+ disableSnapPipeline = false,
76
+ forceDeploy = false
77
+ }) {
78
+ const disableTagAndSnapPipelines = disableSnapPipeline;
79
+ if (disableTagAndSnapPipelines && forceDeploy) {
80
+ throw new (_bitError().BitError)('you can use either force-deploy or disable-snap-pipeline, but not both');
81
+ }
82
+ const snapDataPerCompRaw = this.parseData(data);
83
+ const results = await this.snapping.snapFromScope(snapDataPerCompRaw, {
84
+ push,
85
+ message,
86
+ ignoreIssues,
87
+ build,
88
+ skipTests,
89
+ disableTagAndSnapPipelines,
90
+ forceDeploy
91
+ });
92
+ if (!results) return _chalk().default.yellow(_constants().NOTHING_TO_SNAP_MSG);
93
+ const {
94
+ snappedComponents,
95
+ autoSnappedResults,
96
+ warnings,
97
+ newComponents,
98
+ laneName
99
+ } = results;
100
+ const changedComponents = snappedComponents.filter(component => !newComponents.searchWithoutVersion(component.id));
101
+ const addedComponents = snappedComponents.filter(component => newComponents.searchWithoutVersion(component.id));
102
+ const autoTaggedCount = autoSnappedResults ? autoSnappedResults.length : 0;
103
+ const warningsOutput = warnings && warnings.length ? `${_chalk().default.yellow(warnings.join('\n'))}\n\n` : '';
104
+ const tagExplanation = `\n(use "bit export" to push these components to a remote")
105
+ (use "bit reset" to unstage versions)\n`;
106
+ const outputComponents = comps => {
107
+ return comps.map(component => {
108
+ let componentOutput = ` > ${component.id.toString()}`;
109
+ const autoTag = autoSnappedResults.filter(result => result.triggeredBy.searchWithoutScopeAndVersion(component.id));
110
+ if (autoTag.length) {
111
+ const autoTagComp = autoTag.map(a => a.component.id.toString());
112
+ componentOutput += `\n ${_constants().AUTO_SNAPPED_MSG} (${autoTagComp.length} total):
113
+ ${autoTagComp.join('\n ')}`;
114
+ }
115
+ return componentOutput;
116
+ }).join('\n');
117
+ };
118
+ const outputIfExists = (label, explanation, components) => {
119
+ if (!components.length) return '';
120
+ return `\n${_chalk().default.underline(label)}\n(${explanation})\n${outputComponents(components)}\n`;
121
+ };
122
+ const laneStr = laneName ? ` on "${laneName}" lane` : '';
123
+ return warningsOutput + _chalk().default.green(`${snappedComponents.length + autoTaggedCount} component(s) snapped${laneStr}`) + tagExplanation + outputIfExists('new components', 'first version for components', addedComponents) + outputIfExists('changed components', 'components that got a version bump', changedComponents);
124
+ }
125
+ parseData(data) {
126
+ let dataParsed;
127
+ try {
128
+ dataParsed = JSON.parse(data);
129
+ } catch (err) {
130
+ throw new Error(`failed parsing the data entered as JSON. err ${err.message}`);
131
+ }
132
+ if (!Array.isArray(dataParsed)) {
133
+ throw new Error('expect data to be an array');
134
+ }
135
+ dataParsed.forEach(dataItem => {
136
+ if (!dataItem.componentId) throw new Error('expect data item to have "componentId" prop');
137
+ });
138
+ return dataParsed;
139
+ }
140
+ }
141
+ exports.SnapFromScopeCmd = SnapFromScopeCmd;
142
+
143
+ //# sourceMappingURL=snap-from-scope.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SnapFromScopeCmd","constructor","snapping","logger","Object","keys","IssuesClasses","join","report","data","push","message","ignoreIssues","build","skipTests","disableSnapPipeline","forceDeploy","disableTagAndSnapPipelines","BitError","snapDataPerCompRaw","parseData","results","snapFromScope","chalk","yellow","NOTHING_TO_SNAP_MSG","snappedComponents","autoSnappedResults","warnings","newComponents","laneName","changedComponents","filter","component","searchWithoutVersion","id","addedComponents","autoTaggedCount","length","warningsOutput","tagExplanation","outputComponents","comps","map","componentOutput","toString","autoTag","result","triggeredBy","searchWithoutScopeAndVersion","autoTagComp","a","AUTO_SNAPPED_MSG","outputIfExists","label","explanation","components","underline","laneStr","green","dataParsed","JSON","parse","err","Error","Array","isArray","forEach","dataItem","componentId"],"sources":["snap-from-scope.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { NOTHING_TO_SNAP_MSG, AUTO_SNAPPED_MSG } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport { Logger } from '@teambit/logger';\nimport { SnappingMain, SnapResults } from './snapping.main.runtime';\n\nexport type SnapDataPerCompRaw = {\n componentId: string;\n dependencies?: string[];\n aspects?: Record<string, any>;\n message?: string;\n};\n\nexport class SnapFromScopeCmd implements Command {\n name = '_snap <data>';\n description = 'snap components from a bare-scope';\n extendedDescription = `this command should be running from a new bare scope, it first imports the components it needs and then processes the snap.\nthe input data is a stringified JSON of an array of the following object.\n{\n componentId: string; // ids always have scope, so it's safe to parse them from string\n dependencies?: string[]; // e.g. [teambit/compiler@1.0.0, teambit/tester@1.0.0]\n aspects?: Record<string,any> // e.g. { \"teambit.react/react\": {}, \"teambit.envs/envs\": { \"env\": \"teambit.react/react\" } }\n message?: string; // tag-message.\n}\nan example of the final data: '[{\"componentId\":\"ci.remote2/comp-b\",\"message\": \"first snap\"}]'\n`;\n alias = '';\n options = [\n ['', 'push', 'export the updated objects to the original scopes once done'],\n ['m', 'message <message>', 'log message describing the latest changes'],\n ['', 'build', 'run the build pipeline'],\n ['', 'skip-tests', 'skip running component tests during snap process'],\n ['', 'disable-snap-pipeline', 'skip the snap pipeline'],\n ['', 'force-deploy', 'run the deploy pipeline although the build failed'],\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 ] as CommandOptions;\n loader = true;\n private = true;\n migration = true;\n\n constructor(private snapping: SnappingMain, private logger: Logger) {}\n\n async report(\n [data]: [string],\n {\n push = false,\n message = '',\n ignoreIssues,\n build = false,\n skipTests = false,\n disableSnapPipeline = false,\n forceDeploy = false,\n }: {\n push?: boolean;\n message?: string;\n ignoreIssues?: string;\n build?: boolean;\n skipTests?: boolean;\n disableSnapPipeline?: boolean;\n forceDeploy?: boolean;\n }\n ) {\n const disableTagAndSnapPipelines = disableSnapPipeline;\n if (disableTagAndSnapPipelines && forceDeploy) {\n throw new BitError('you can use either force-deploy or disable-snap-pipeline, but not both');\n }\n\n const snapDataPerCompRaw = this.parseData(data);\n\n const results = await this.snapping.snapFromScope(snapDataPerCompRaw, {\n push,\n message,\n ignoreIssues,\n build,\n skipTests,\n disableTagAndSnapPipelines,\n forceDeploy,\n });\n\n if (!results) return chalk.yellow(NOTHING_TO_SNAP_MSG);\n const { snappedComponents, autoSnappedResults, warnings, newComponents, laneName }: SnapResults = results;\n const changedComponents = snappedComponents.filter(\n (component) => !newComponents.searchWithoutVersion(component.id)\n );\n const addedComponents = snappedComponents.filter((component) => newComponents.searchWithoutVersion(component.id));\n const autoTaggedCount = autoSnappedResults ? autoSnappedResults.length : 0;\n\n const warningsOutput = warnings && warnings.length ? `${chalk.yellow(warnings.join('\\n'))}\\n\\n` : '';\n const tagExplanation = `\\n(use \"bit export\" to push these components to a remote\")\n(use \"bit reset\" to unstage versions)\\n`;\n\n const outputComponents = (comps) => {\n return comps\n .map((component) => {\n let componentOutput = ` > ${component.id.toString()}`;\n const autoTag = autoSnappedResults.filter((result) =>\n result.triggeredBy.searchWithoutScopeAndVersion(component.id)\n );\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n componentOutput += `\\n ${AUTO_SNAPPED_MSG} (${autoTagComp.length} total):\n ${autoTagComp.join('\\n ')}`;\n }\n return componentOutput;\n })\n .join('\\n');\n };\n\n const outputIfExists = (label, explanation, components) => {\n if (!components.length) return '';\n return `\\n${chalk.underline(label)}\\n(${explanation})\\n${outputComponents(components)}\\n`;\n };\n const laneStr = laneName ? ` on \"${laneName}\" lane` : '';\n\n return (\n warningsOutput +\n chalk.green(`${snappedComponents.length + autoTaggedCount} component(s) snapped${laneStr}`) +\n tagExplanation +\n outputIfExists('new components', 'first version for components', addedComponents) +\n outputIfExists('changed components', 'components that got a version bump', changedComponents)\n );\n }\n private parseData(data: string): SnapDataPerCompRaw[] {\n let dataParsed: unknown;\n try {\n dataParsed = JSON.parse(data);\n } catch (err: any) {\n throw new Error(`failed parsing the data entered as JSON. err ${err.message}`);\n }\n if (!Array.isArray(dataParsed)) {\n throw new Error('expect data to be an array');\n }\n dataParsed.forEach((dataItem) => {\n if (!dataItem.componentId) throw new Error('expect data item to have \"componentId\" prop');\n });\n return dataParsed;\n }\n}\n"],"mappings":"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"}
@@ -6,8 +6,6 @@ import { Workspace } from '@teambit/workspace';
6
6
  import { ReleaseType } from 'semver';
7
7
  import { BitId, BitIds } from '@teambit/legacy/dist/bit-id';
8
8
  import { Consumer } from '@teambit/legacy/dist/consumer';
9
- import { TagResults } from '@teambit/legacy/dist/api/consumer/lib/tag';
10
- import { SnapResults } from '@teambit/legacy/dist/api/consumer/lib/snap';
11
9
  import { Logger, LoggerMain } from '@teambit/logger';
12
10
  import ConsumerComponent from '@teambit/legacy/dist/consumer/component/consumer-component';
13
11
  import { InsightsMain } from '@teambit/insights';
@@ -21,15 +19,32 @@ import { BuilderMain } from '@teambit/builder';
21
19
  import { ExportMain } from '@teambit/export';
22
20
  import { ComponentID } from '@teambit/component-id';
23
21
  import { BitObject } from '@teambit/legacy/dist/scope/objects';
22
+ import { AutoTagResult } from '@teambit/legacy/dist/scope/component-ops/auto-tag';
24
23
  import { BasicTagParams } from './tag-model-component';
25
24
  import { TagDataPerCompRaw } from './tag-from-scope.cmd';
25
+ import { SnapDataPerCompRaw } from './snap-from-scope.cmd';
26
26
  export declare type TagDataPerComp = {
27
27
  componentId: ComponentID;
28
28
  dependencies: ComponentID[];
29
- versionToTag: string;
29
+ versionToTag?: string;
30
30
  prereleaseId?: string;
31
31
  message?: string;
32
32
  };
33
+ export declare type SnapResults = {
34
+ snappedComponents: ConsumerComponent[];
35
+ autoSnappedResults: AutoTagResult[];
36
+ warnings: string[];
37
+ newComponents: BitIds;
38
+ laneName: string | null;
39
+ };
40
+ export declare type TagResults = {
41
+ taggedComponents: ConsumerComponent[];
42
+ autoTaggedResults: AutoTagResult[];
43
+ warnings: string[];
44
+ newComponents: BitIds;
45
+ isSoftTag: boolean;
46
+ publishedPackages: string[];
47
+ };
33
48
  export declare class SnappingMain {
34
49
  private workspace;
35
50
  private logger;
@@ -65,6 +80,10 @@ export declare class SnappingMain {
65
80
  ignoreIssues?: string;
66
81
  incrementBy?: number;
67
82
  } & Partial<BasicTagParams>): Promise<TagResults | null>;
83
+ snapFromScope(snapDataPerCompRaw: SnapDataPerCompRaw[], params: {
84
+ push?: boolean;
85
+ ignoreIssues?: string;
86
+ } & Partial<BasicTagParams>): Promise<SnapResults | null>;
68
87
  /**
69
88
  * save the local changes of a component(s) into the scope. snap can be done on main or on a lane.
70
89
  * once a component is snapped on a lane, it becomes part of it.
@@ -291,6 +291,13 @@ function _tagFromScope() {
291
291
  };
292
292
  return data;
293
293
  }
294
+ function _snapFromScope() {
295
+ const data = require("./snap-from-scope.cmd");
296
+ _snapFromScope = function () {
297
+ return data;
298
+ };
299
+ return data;
300
+ }
294
301
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
295
302
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
296
303
  const HooksManagerInstance = _hooks().default.getInstance();
@@ -480,6 +487,68 @@ class SnappingMain {
480
487
  newComponents: new (_bitId().BitIds)()
481
488
  };
482
489
  }
490
+ async snapFromScope(snapDataPerCompRaw, params) {
491
+ if (this.workspace) {
492
+ throw new (_bitError().BitError)(`unable to run this command from a workspace, please create a new bare-scope and run it from there`);
493
+ }
494
+ const snapDataPerComp = await Promise.all(snapDataPerCompRaw.map(async snapData => {
495
+ return {
496
+ componentId: await this.scope.resolveComponentId(snapData.componentId),
497
+ dependencies: snapData.dependencies ? await this.scope.resolveMultipleComponentIds(snapData.dependencies) : [],
498
+ aspects: snapData.aspects,
499
+ message: snapData.message
500
+ };
501
+ }));
502
+ const componentIds = snapDataPerComp.map(t => t.componentId);
503
+ const bitIds = componentIds.map(c => c._legacy);
504
+ const componentIdsLatest = componentIds.map(id => id.changeVersion(_constants().LATEST));
505
+ const components = await this.scope.import(componentIdsLatest);
506
+ await Promise.all(components.map(async comp => {
507
+ const snapData = snapDataPerComp.find(t => {
508
+ return t.componentId.isEqual(comp.id, {
509
+ ignoreVersion: true
510
+ });
511
+ });
512
+ if (!snapData) throw new Error(`unable to find ${comp.id.toString()} in snapDataPerComp`);
513
+ if (snapData.aspects) await this.scope.addAspectsFromConfigObject(comp, snapData.aspects);
514
+ if (snapData.dependencies.length) {
515
+ await this.updateDependenciesVersionsOfComponent(comp, snapData.dependencies, bitIds);
516
+ }
517
+ }));
518
+ const consumerComponents = components.map(c => c.state._consumer);
519
+ const legacyIds = _bitId().BitIds.fromArray(componentIds.map(id => id._legacy));
520
+ const results = await (0, _tagModelComponent().tagModelComponent)(_objectSpread(_objectSpread({}, params), {}, {
521
+ scope: this.scope,
522
+ consumerComponents,
523
+ tagDataPerComp: snapDataPerComp,
524
+ snapping: this,
525
+ builder: this.builder,
526
+ dependencyResolver: this.dependencyResolver,
527
+ skipAutoTag: true,
528
+ persist: true,
529
+ isSnap: true,
530
+ ids: legacyIds,
531
+ message: params.message
532
+ }));
533
+ const {
534
+ taggedComponents
535
+ } = results;
536
+ if (params.push) {
537
+ await this.exporter.exportMany({
538
+ scope: this.scope.legacyScope,
539
+ ids: legacyIds,
540
+ idsWithFutureScope: legacyIds,
541
+ allVersions: false
542
+ });
543
+ }
544
+ return {
545
+ snappedComponents: taggedComponents,
546
+ autoSnappedResults: [],
547
+ warnings: [],
548
+ newComponents: new (_bitId().BitIds)(),
549
+ laneName: null
550
+ };
551
+ }
483
552
 
484
553
  /**
485
554
  * save the local changes of a component(s) into the scope. snap can be done on main or on a lane.
@@ -535,7 +604,6 @@ class SnappingMain {
535
604
  packageManagerConfigRootDir: this.workspace.path,
536
605
  dependencyResolver: this.dependencyResolver
537
606
  });
538
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
539
607
  const snapResults = {
540
608
  snappedComponents: taggedComponents,
541
609
  autoSnappedResults: autoTaggedResults
@@ -903,8 +971,9 @@ there are matching among unmodified components thought. consider using --unmodif
903
971
  const snapCmd = new (_snapCmd().SnapCmd)(community.getBaseDomain(), snapping, logger);
904
972
  const tagCmd = new (_tagCmd().TagCmd)(snapping, logger);
905
973
  const tagFromScopeCmd = new (_tagFromScope().TagFromScopeCmd)(snapping, logger);
974
+ const snapFromScopeCmd = new (_snapFromScope().SnapFromScopeCmd)(snapping, logger);
906
975
  const resetCmd = new (_resetCmd().default)(snapping);
907
- cli.register(tagCmd, snapCmd, resetCmd, tagFromScopeCmd);
976
+ cli.register(tagCmd, snapCmd, resetCmd, tagFromScopeCmd, snapFromScopeCmd);
908
977
  return snapping;
909
978
  }
910
979
  }