@teambit/dependencies 0.0.11 → 0.0.14

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.
@@ -45,6 +45,20 @@ export declare class DependenciesSetCmd implements Command {
45
45
  constructor(deps: DependenciesMain);
46
46
  report([pattern, packages]: [string, string[]], setDepsFlags: SetDependenciesFlags): Promise<string>;
47
47
  }
48
+ export declare class DependenciesRemoveCmd implements Command {
49
+ private deps;
50
+ name: string;
51
+ arguments: {
52
+ name: string;
53
+ description: string;
54
+ }[];
55
+ group: string;
56
+ description: string;
57
+ alias: string;
58
+ options: CommandOptions;
59
+ constructor(deps: DependenciesMain);
60
+ report([pattern, packages]: [string, string[]]): Promise<string>;
61
+ }
48
62
  export declare class DependenciesCmd implements Command {
49
63
  name: string;
50
64
  alias: string;
@@ -9,7 +9,7 @@ require("core-js/modules/es.promise.js");
9
9
  Object.defineProperty(exports, "__esModule", {
10
10
  value: true
11
11
  });
12
- exports.DependenciesSetCmd = exports.DependenciesGetCmd = exports.DependenciesDebugCmd = exports.DependenciesCmd = void 0;
12
+ exports.DependenciesSetCmd = exports.DependenciesRemoveCmd = exports.DependenciesGetCmd = exports.DependenciesDebugCmd = exports.DependenciesCmd = void 0;
13
13
 
14
14
  function _defineProperty2() {
15
15
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -184,7 +184,7 @@ class DependenciesSetCmd {
184
184
  description: _constants().COMPONENT_PATTERN_HELP
185
185
  }, {
186
186
  name: 'package',
187
- description: 'package name with version, e.g. "lodash@1.0.0"'
187
+ description: 'package name with or without a version, e.g. "lodash@1.0.0" or just "lodash" which will be resolved to the latest'
188
188
  }]);
189
189
  (0, _defineProperty2().default)(this, "group", 'info');
190
190
  (0, _defineProperty2().default)(this, "description", 'set a dependency to component(s)');
@@ -209,6 +209,41 @@ ${JSON.stringify(addedPackages, undefined, 4)}`;
209
209
 
210
210
  exports.DependenciesSetCmd = DependenciesSetCmd;
211
211
 
212
+ class DependenciesRemoveCmd {
213
+ constructor(deps) {
214
+ this.deps = deps;
215
+ (0, _defineProperty2().default)(this, "name", 'remove <component-pattern> <package...>');
216
+ (0, _defineProperty2().default)(this, "arguments", [{
217
+ name: 'component-pattern',
218
+ description: _constants().COMPONENT_PATTERN_HELP
219
+ }, {
220
+ name: 'package',
221
+ description: 'package name with or without a version, e.g. "lodash@1.0.0" or just "lodash" which will remove all lodash instances of any version'
222
+ }]);
223
+ (0, _defineProperty2().default)(this, "group", 'info');
224
+ (0, _defineProperty2().default)(this, "description", 'remove a dependency to component(s)');
225
+ (0, _defineProperty2().default)(this, "alias", '');
226
+ (0, _defineProperty2().default)(this, "options", []);
227
+ }
228
+
229
+ async report([pattern, packages]) {
230
+ const results = await this.deps.removeDependency(pattern, packages);
231
+
232
+ if (!results.length) {
233
+ return _chalk().default.yellow('the specified component-pattern do not use the entered packages. nothing to remove');
234
+ }
235
+
236
+ const output = results.map(({
237
+ id,
238
+ removedPackages
239
+ }) => `${_chalk().default.underline(id.toString())}\n${removedPackages.join('\n')}`).join('\n\n');
240
+ return `${_chalk().default.green('successfully removed dependencies')}\n${output}`;
241
+ }
242
+
243
+ }
244
+
245
+ exports.DependenciesRemoveCmd = DependenciesRemoveCmd;
246
+
212
247
  class DependenciesCmd {
213
248
  constructor() {
214
249
  (0, _defineProperty2().default)(this, "name", 'dependencies <sub-command>');
@@ -1 +1 @@
1
- {"version":3,"names":["DependenciesGetCmd","name","description","report","id","tree","results","dependencies","idWithVersion","workspaceGraph","_getIdWithLatestVersion","getGraphAsTree","graph","graphAsTree","getDependenciesAsObjectTree","toString","archy","err","constructor","chalk","red","workspaceTree","scopeTree","scopeGraph","green","getDependenciesInfo","getScopeDependencies","IdNotFoundInGraph","length","toStringWithoutVersion","scopeTable","generateDependenciesInfoTable","workspaceTable","bold","DependenciesDebugCmd","JSON","stringify","undefined","DependenciesSetCmd","deps","COMPONENT_PATTERN_HELP","pattern","packages","setDepsFlags","changedComps","addedPackages","setDependency","join","DependenciesCmd","unrecognizedSubcommand"],"sources":["dependencies-cmd.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport archy from 'archy';\nimport {\n dependencies,\n DependenciesResultsDebug,\n DependenciesResults,\n} from '@teambit/legacy/dist/api/consumer/lib/dependencies';\nimport { generateDependenciesInfoTable } from '@teambit/legacy/dist/cli/templates/component-template';\nimport { IdNotFoundInGraph } from '@teambit/legacy/dist/scope/exceptions/id-not-found-in-graph';\nimport DependencyGraph from '@teambit/legacy/dist/scope/graph/scope-graph';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { DependenciesMain } from './dependencies.main.runtime';\n\ntype GetDependenciesFlags = {\n tree: boolean;\n};\n\nexport type SetDependenciesFlags = {\n dev?: boolean;\n peer?: boolean;\n};\n\nexport class DependenciesGetCmd implements Command {\n name = 'get <component-name>';\n arguments = [{ name: 'component-name', description: 'component name or component id' }];\n group = 'info';\n description = 'show direct and indirect dependencies of the given component';\n alias = '';\n options = [['t', 'tree', 'EXPERIMENTAL. render dependencies as a tree, similar to \"npm ls\"']] as CommandOptions;\n\n async report([id]: [string], { tree = false }: GetDependenciesFlags) {\n const results = (await dependencies(id, false)) as DependenciesResults;\n\n if (tree) {\n const idWithVersion = results.workspaceGraph._getIdWithLatestVersion(results.id);\n const getGraphAsTree = (graph: DependencyGraph) => {\n try {\n const graphAsTree = graph.getDependenciesAsObjectTree(idWithVersion.toString());\n return archy(graphAsTree);\n } catch (err: any) {\n if (err.constructor.name === 'RangeError') {\n return `${chalk.red('unable to generate a tree representation, the graph is too big or has cycles')}`;\n }\n throw err;\n }\n };\n const workspaceTree = getGraphAsTree(results.workspaceGraph);\n const scopeTree = getGraphAsTree(results.scopeGraph);\n return `${chalk.green('workspace')}:\\n${workspaceTree}\\n\\n${chalk.green('scope')}:\\n${scopeTree}`;\n }\n const workspaceGraph = results.workspaceGraph.getDependenciesInfo(results.id);\n const getScopeDependencies = () => {\n try {\n return results.scopeGraph.getDependenciesInfo(results.id);\n } catch (err) {\n if (err instanceof IdNotFoundInGraph) return []; // component might be new\n throw err;\n }\n };\n const scopeGraph = getScopeDependencies();\n if (!scopeGraph.length && !workspaceGraph.length) {\n return `no dependencies found for ${results.id.toString()}.\ntry running \"bit cat-component ${results.id.toStringWithoutVersion()}\" to see whether the component/version exists locally`;\n }\n\n const scopeTable = generateDependenciesInfoTable(scopeGraph, results.id);\n const workspaceTable = generateDependenciesInfoTable(workspaceGraph, results.id);\n return `${chalk.bold('Dependencies originated from workspace')}\n${workspaceTable || '<none>'}\n\n${chalk.bold('Dependencies originated from scope')}\n${scopeTable || '<none>'}`;\n }\n}\n\nexport class DependenciesDebugCmd implements Command {\n name = 'debug <component-name>';\n arguments = [{ name: 'component-name', description: 'component name or component id' }];\n group = 'info';\n description = 'show the immediate dependencies and how their versions were determined';\n alias = '';\n options = [] as CommandOptions;\n\n async report([id]: [string]) {\n const results = (await dependencies(id, true)) as DependenciesResultsDebug;\n return JSON.stringify(results, undefined, 4);\n }\n}\n\nexport class DependenciesSetCmd implements Command {\n name = 'set <component-pattern> <package...>';\n arguments = [\n { name: 'component-pattern', description: COMPONENT_PATTERN_HELP },\n { name: 'package', description: 'package name with version, e.g. \"lodash@1.0.0\"' },\n ];\n group = 'info';\n description = 'set a dependency to component(s)';\n alias = '';\n options = [\n ['d', 'dev', 'add to the devDependencies'],\n ['p', 'peer', 'add to the peerDependencies'],\n ] as CommandOptions;\n\n constructor(private deps: DependenciesMain) {}\n\n async report([pattern, packages]: [string, string[]], setDepsFlags: SetDependenciesFlags) {\n const { changedComps, addedPackages } = await this.deps.setDependency(pattern, packages, setDepsFlags);\n\n return `${chalk.green('successfully updated dependencies')}\n${chalk.bold('changed components')}\n${changedComps.join('\\n')}\n\n${chalk.bold('added packages')}\n${JSON.stringify(addedPackages, undefined, 4)}`;\n }\n}\n\nexport class DependenciesCmd implements Command {\n name = 'dependencies <sub-command>';\n alias = 'deps';\n description = 'manage dependencies';\n options = [];\n group = 'info';\n commands: Command[] = [];\n\n async report([unrecognizedSubcommand]: [string]) {\n return chalk.red(\n `\"${unrecognizedSubcommand}\" is not a subcommand of \"dependencies\", please run \"bit dependencies --help\" to list the subcommands`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["DependenciesGetCmd","name","description","report","id","tree","results","dependencies","idWithVersion","workspaceGraph","_getIdWithLatestVersion","getGraphAsTree","graph","graphAsTree","getDependenciesAsObjectTree","toString","archy","err","constructor","chalk","red","workspaceTree","scopeTree","scopeGraph","green","getDependenciesInfo","getScopeDependencies","IdNotFoundInGraph","length","toStringWithoutVersion","scopeTable","generateDependenciesInfoTable","workspaceTable","bold","DependenciesDebugCmd","JSON","stringify","undefined","DependenciesSetCmd","deps","COMPONENT_PATTERN_HELP","pattern","packages","setDepsFlags","changedComps","addedPackages","setDependency","join","DependenciesRemoveCmd","removeDependency","yellow","output","map","removedPackages","underline","DependenciesCmd","unrecognizedSubcommand"],"sources":["dependencies-cmd.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport archy from 'archy';\nimport {\n dependencies,\n DependenciesResultsDebug,\n DependenciesResults,\n} from '@teambit/legacy/dist/api/consumer/lib/dependencies';\nimport { generateDependenciesInfoTable } from '@teambit/legacy/dist/cli/templates/component-template';\nimport { IdNotFoundInGraph } from '@teambit/legacy/dist/scope/exceptions/id-not-found-in-graph';\nimport DependencyGraph from '@teambit/legacy/dist/scope/graph/scope-graph';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { DependenciesMain } from './dependencies.main.runtime';\n\ntype GetDependenciesFlags = {\n tree: boolean;\n};\n\nexport type SetDependenciesFlags = {\n dev?: boolean;\n peer?: boolean;\n};\n\nexport class DependenciesGetCmd implements Command {\n name = 'get <component-name>';\n arguments = [{ name: 'component-name', description: 'component name or component id' }];\n group = 'info';\n description = 'show direct and indirect dependencies of the given component';\n alias = '';\n options = [['t', 'tree', 'EXPERIMENTAL. render dependencies as a tree, similar to \"npm ls\"']] as CommandOptions;\n\n async report([id]: [string], { tree = false }: GetDependenciesFlags) {\n const results = (await dependencies(id, false)) as DependenciesResults;\n\n if (tree) {\n const idWithVersion = results.workspaceGraph._getIdWithLatestVersion(results.id);\n const getGraphAsTree = (graph: DependencyGraph) => {\n try {\n const graphAsTree = graph.getDependenciesAsObjectTree(idWithVersion.toString());\n return archy(graphAsTree);\n } catch (err: any) {\n if (err.constructor.name === 'RangeError') {\n return `${chalk.red('unable to generate a tree representation, the graph is too big or has cycles')}`;\n }\n throw err;\n }\n };\n const workspaceTree = getGraphAsTree(results.workspaceGraph);\n const scopeTree = getGraphAsTree(results.scopeGraph);\n return `${chalk.green('workspace')}:\\n${workspaceTree}\\n\\n${chalk.green('scope')}:\\n${scopeTree}`;\n }\n const workspaceGraph = results.workspaceGraph.getDependenciesInfo(results.id);\n const getScopeDependencies = () => {\n try {\n return results.scopeGraph.getDependenciesInfo(results.id);\n } catch (err) {\n if (err instanceof IdNotFoundInGraph) return []; // component might be new\n throw err;\n }\n };\n const scopeGraph = getScopeDependencies();\n if (!scopeGraph.length && !workspaceGraph.length) {\n return `no dependencies found for ${results.id.toString()}.\ntry running \"bit cat-component ${results.id.toStringWithoutVersion()}\" to see whether the component/version exists locally`;\n }\n\n const scopeTable = generateDependenciesInfoTable(scopeGraph, results.id);\n const workspaceTable = generateDependenciesInfoTable(workspaceGraph, results.id);\n return `${chalk.bold('Dependencies originated from workspace')}\n${workspaceTable || '<none>'}\n\n${chalk.bold('Dependencies originated from scope')}\n${scopeTable || '<none>'}`;\n }\n}\n\nexport class DependenciesDebugCmd implements Command {\n name = 'debug <component-name>';\n arguments = [{ name: 'component-name', description: 'component name or component id' }];\n group = 'info';\n description = 'show the immediate dependencies and how their versions were determined';\n alias = '';\n options = [] as CommandOptions;\n\n async report([id]: [string]) {\n const results = (await dependencies(id, true)) as DependenciesResultsDebug;\n return JSON.stringify(results, undefined, 4);\n }\n}\n\nexport class DependenciesSetCmd implements Command {\n name = 'set <component-pattern> <package...>';\n arguments = [\n { name: 'component-pattern', description: COMPONENT_PATTERN_HELP },\n {\n name: 'package',\n description:\n 'package name with or without a version, e.g. \"lodash@1.0.0\" or just \"lodash\" which will be resolved to the latest',\n },\n ];\n group = 'info';\n description = 'set a dependency to component(s)';\n alias = '';\n options = [\n ['d', 'dev', 'add to the devDependencies'],\n ['p', 'peer', 'add to the peerDependencies'],\n ] as CommandOptions;\n\n constructor(private deps: DependenciesMain) {}\n\n async report([pattern, packages]: [string, string[]], setDepsFlags: SetDependenciesFlags) {\n const { changedComps, addedPackages } = await this.deps.setDependency(pattern, packages, setDepsFlags);\n\n return `${chalk.green('successfully updated dependencies')}\n${chalk.bold('changed components')}\n${changedComps.join('\\n')}\n\n${chalk.bold('added packages')}\n${JSON.stringify(addedPackages, undefined, 4)}`;\n }\n}\n\nexport class DependenciesRemoveCmd implements Command {\n name = 'remove <component-pattern> <package...>';\n arguments = [\n { name: 'component-pattern', description: COMPONENT_PATTERN_HELP },\n {\n name: 'package',\n description:\n 'package name with or without a version, e.g. \"lodash@1.0.0\" or just \"lodash\" which will remove all lodash instances of any version',\n },\n ];\n group = 'info';\n description = 'remove a dependency to component(s)';\n alias = '';\n options = [] as CommandOptions;\n\n constructor(private deps: DependenciesMain) {}\n\n async report([pattern, packages]: [string, string[]]) {\n const results = await this.deps.removeDependency(pattern, packages);\n if (!results.length) {\n return chalk.yellow('the specified component-pattern do not use the entered packages. nothing to remove');\n }\n\n const output = results\n .map(({ id, removedPackages }) => `${chalk.underline(id.toString())}\\n${removedPackages.join('\\n')}`)\n .join('\\n\\n');\n\n return `${chalk.green('successfully removed dependencies')}\\n${output}`;\n }\n}\n\nexport class DependenciesCmd implements Command {\n name = 'dependencies <sub-command>';\n alias = 'deps';\n description = 'manage dependencies';\n options = [];\n group = 'info';\n commands: Command[] = [];\n\n async report([unrecognizedSubcommand]: [string]) {\n return chalk.red(\n `\"${unrecognizedSubcommand}\" is not a subcommand of \"dependencies\", please run \"bit dependencies --help\" to list the subcommands`\n );\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { CLIMain } from '@teambit/cli';
2
+ import { ComponentID } from '@teambit/component-id';
2
3
  import { DependencyResolverMain } from '@teambit/dependency-resolver';
3
4
  import { Workspace } from '@teambit/workspace';
4
5
  import { SetDependenciesFlags } from './dependencies-cmd';
6
+ export declare type RemoveDependencyResult = {
7
+ id: ComponentID;
8
+ removedPackages: string[];
9
+ };
5
10
  export declare class DependenciesMain {
6
11
  private workspace;
7
12
  private dependencyResolver;
@@ -10,6 +15,7 @@ export declare class DependenciesMain {
10
15
  changedComps: string[];
11
16
  addedPackages: Record<string, string>;
12
17
  }>;
18
+ removeDependency(componentPattern: string, packages: string[]): Promise<RemoveDependencyResult[]>;
13
19
  private getPackageNameAndVerResolved;
14
20
  private splitPkgToNameAndVer;
15
21
  static slots: never[];
@@ -53,6 +53,26 @@ function _workspace() {
53
53
  return data;
54
54
  }
55
55
 
56
+ function _lodash() {
57
+ const data = require("lodash");
58
+
59
+ _lodash = function () {
60
+ return data;
61
+ };
62
+
63
+ return data;
64
+ }
65
+
66
+ function _pMapSeries() {
67
+ const data = _interopRequireDefault(require("p-map-series"));
68
+
69
+ _pMapSeries = function () {
70
+ return data;
71
+ };
72
+
73
+ return data;
74
+ }
75
+
56
76
  function _dependenciesCmd() {
57
77
  const data = require("./dependencies-cmd");
58
78
 
@@ -108,6 +128,49 @@ class DependenciesMain {
108
128
  };
109
129
  }
110
130
 
131
+ async removeDependency(componentPattern, packages) {
132
+ const compIds = await this.workspace.idsByPattern(componentPattern);
133
+ const results = await Promise.all(compIds.map(async compId => {
134
+ const component = await this.workspace.get(compId);
135
+ const depList = await this.dependencyResolver.getDependencies(component);
136
+ const currentDepResolverConfig = await this.workspace.getSpecificComponentConfig(compId, _dependencyResolver().DependencyResolverAspect.id);
137
+ const newDepResolverConfig = (0, _lodash().cloneDeep)(currentDepResolverConfig || {});
138
+ const removedPackagesWithNulls = await (0, _pMapSeries().default)(packages, async pkg => {
139
+ var _newDepResolverConfig, _newDepResolverConfig2;
140
+
141
+ const [name, version] = this.splitPkgToNameAndVer(pkg);
142
+ const ignoreVersion = !version;
143
+ const pkgToFind = ignoreVersion ? pkg : name;
144
+ const dependency = depList.findDependency(pkgToFind, {
145
+ ignoreVersion
146
+ });
147
+ if (!dependency) return null;
148
+
149
+ const depField = _dependencyResolver().KEY_NAME_BY_LIFECYCLE_TYPE[dependency.lifecycle];
150
+
151
+ const existsInSpecificConfig = (_newDepResolverConfig = newDepResolverConfig.policy) === null || _newDepResolverConfig === void 0 ? void 0 : (_newDepResolverConfig2 = _newDepResolverConfig[depField]) === null || _newDepResolverConfig2 === void 0 ? void 0 : _newDepResolverConfig2[name];
152
+
153
+ if (existsInSpecificConfig) {
154
+ if (existsInSpecificConfig === '-') return null;
155
+ delete newDepResolverConfig.policy[depField][name];
156
+ } else {
157
+ (0, _lodash().set)(newDepResolverConfig, ['policy', depField, name], '-');
158
+ }
159
+
160
+ return `${dependency.id}@${dependency.version}`;
161
+ });
162
+ const removedPackages = (0, _lodash().compact)(removedPackagesWithNulls);
163
+ if (!removedPackages.length) return null;
164
+ await this.workspace.addSpecificComponentConfig(compId, _dependencyResolver().DependencyResolverAspect.id, newDepResolverConfig);
165
+ return {
166
+ id: compId,
167
+ removedPackages
168
+ };
169
+ }));
170
+ await this.workspace.bitMap.write();
171
+ return (0, _lodash().compact)(results);
172
+ }
173
+
111
174
  async getPackageNameAndVerResolved(pkg) {
112
175
  const resolveLatest = async pkgName => {
113
176
  const versionResolver = await this.dependencyResolver.getVersionResolver({});
@@ -139,7 +202,7 @@ class DependenciesMain {
139
202
  static async provider([cli, workspace, depsResolver]) {
140
203
  const depsMain = new DependenciesMain(workspace, depsResolver);
141
204
  const depsCmd = new (_dependenciesCmd().DependenciesCmd)();
142
- depsCmd.commands = [new (_dependenciesCmd().DependenciesGetCmd)(), new (_dependenciesCmd().DependenciesDebugCmd)(), new (_dependenciesCmd().DependenciesSetCmd)(depsMain)];
205
+ depsCmd.commands = [new (_dependenciesCmd().DependenciesGetCmd)(), new (_dependenciesCmd().DependenciesRemoveCmd)(depsMain), new (_dependenciesCmd().DependenciesDebugCmd)(), new (_dependenciesCmd().DependenciesSetCmd)(depsMain)];
143
206
  cli.register(depsCmd);
144
207
  return depsMain;
145
208
  }
@@ -1 +1 @@
1
- {"version":3,"names":["DependenciesMain","constructor","workspace","dependencyResolver","setDependency","componentPattern","packages","options","compIds","idsByPattern","getDepField","dev","peer","packagesObj","Promise","all","map","pkg","name","version","getPackageNameAndVerResolved","config","policy","compId","addSpecificComponentConfig","DependencyResolverAspect","id","bitMap","write","changedComps","toStringWithoutVersion","addedPackages","resolveLatest","pkgName","versionResolver","getVersionResolver","resolved","resolveRemoteVersion","rootDir","Error","splitPkgToNameAndVer","versionResolved","packageSplit","split","startsWith","length","provider","cli","depsResolver","depsMain","depsCmd","DependenciesCmd","commands","DependenciesGetCmd","DependenciesDebugCmd","DependenciesSetCmd","register","CLIAspect","WorkspaceAspect","MainRuntime","DependenciesAspect","addRuntime"],"sources":["dependencies.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport {\n DependenciesCmd,\n DependenciesDebugCmd,\n DependenciesGetCmd,\n DependenciesSetCmd,\n SetDependenciesFlags,\n} from './dependencies-cmd';\nimport { DependenciesAspect } from './dependencies.aspect';\n\nexport class DependenciesMain {\n constructor(private workspace: Workspace, private dependencyResolver: DependencyResolverMain) {}\n\n async setDependency(\n componentPattern: string,\n packages: string[],\n options: SetDependenciesFlags\n ): Promise<{ changedComps: string[]; addedPackages: Record<string, string> }> {\n const compIds = await this.workspace.idsByPattern(componentPattern);\n const getDepField = () => {\n if (options.dev) return 'devDependencies';\n if (options.peer) return 'peerDependencies';\n return 'dependencies';\n };\n const packagesObj = {};\n await Promise.all(\n packages.map(async (pkg) => {\n const [name, version] = await this.getPackageNameAndVerResolved(pkg);\n packagesObj[name] = version;\n })\n );\n const config = {\n policy: {\n [getDepField()]: packagesObj,\n },\n };\n await Promise.all(\n compIds.map(async (compId) => {\n await this.workspace.addSpecificComponentConfig(compId, DependencyResolverAspect.id, config, true);\n })\n );\n\n await this.workspace.bitMap.write();\n\n return {\n changedComps: compIds.map((compId) => compId.toStringWithoutVersion()),\n addedPackages: packagesObj,\n };\n }\n\n private async getPackageNameAndVerResolved(pkg: string): Promise<[string, string]> {\n const resolveLatest = async (pkgName: string) => {\n const versionResolver = await this.dependencyResolver.getVersionResolver({});\n const resolved = await versionResolver.resolveRemoteVersion(pkgName, { rootDir: '' });\n if (!resolved.version) throw new Error(`unable to resolve version for ${pkgName}`);\n return resolved.version;\n };\n const [name, version] = this.splitPkgToNameAndVer(pkg);\n const versionResolved = !version || version === 'latest' ? await resolveLatest(name) : version;\n return [name, versionResolved];\n }\n\n private splitPkgToNameAndVer(pkg: string): [string, string | undefined] {\n const packageSplit = pkg.split('@');\n if (pkg.startsWith('@')) {\n // scoped package\n if (packageSplit.length > 3) throw new Error(`invalid package \"${pkg}\" syntax, expected \"package[@version]\"`);\n return [`@${packageSplit[1]}`, packageSplit[2]];\n }\n if (packageSplit.length > 2) throw new Error(`invalid package \"${pkg}\" syntax, expected \"package[@version]\"`);\n return [packageSplit[0], packageSplit[1]];\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, DependencyResolverAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace, depsResolver]: [CLIMain, Workspace, DependencyResolverMain]) {\n const depsMain = new DependenciesMain(workspace, depsResolver);\n const depsCmd = new DependenciesCmd();\n depsCmd.commands = [new DependenciesGetCmd(), new DependenciesDebugCmd(), new DependenciesSetCmd(depsMain)];\n cli.register(depsCmd);\n\n return depsMain;\n }\n}\n\nDependenciesAspect.addRuntime(DependenciesMain);\n\nexport default DependenciesMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["DependenciesMain","constructor","workspace","dependencyResolver","setDependency","componentPattern","packages","options","compIds","idsByPattern","getDepField","dev","peer","packagesObj","Promise","all","map","pkg","name","version","getPackageNameAndVerResolved","config","policy","compId","addSpecificComponentConfig","DependencyResolverAspect","id","bitMap","write","changedComps","toStringWithoutVersion","addedPackages","removeDependency","results","component","get","depList","getDependencies","currentDepResolverConfig","getSpecificComponentConfig","newDepResolverConfig","cloneDeep","removedPackagesWithNulls","pMapSeries","splitPkgToNameAndVer","ignoreVersion","pkgToFind","dependency","findDependency","depField","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","existsInSpecificConfig","set","removedPackages","compact","length","resolveLatest","pkgName","versionResolver","getVersionResolver","resolved","resolveRemoteVersion","rootDir","Error","versionResolved","packageSplit","split","startsWith","provider","cli","depsResolver","depsMain","depsCmd","DependenciesCmd","commands","DependenciesGetCmd","DependenciesRemoveCmd","DependenciesDebugCmd","DependenciesSetCmd","register","CLIAspect","WorkspaceAspect","MainRuntime","DependenciesAspect","addRuntime"],"sources":["dependencies.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n} from '@teambit/dependency-resolver';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { cloneDeep, compact, set } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport {\n DependenciesCmd,\n DependenciesDebugCmd,\n DependenciesGetCmd,\n DependenciesRemoveCmd,\n DependenciesSetCmd,\n SetDependenciesFlags,\n} from './dependencies-cmd';\nimport { DependenciesAspect } from './dependencies.aspect';\n\nexport type RemoveDependencyResult = { id: ComponentID; removedPackages: string[] };\n\nexport class DependenciesMain {\n constructor(private workspace: Workspace, private dependencyResolver: DependencyResolverMain) {}\n\n async setDependency(\n componentPattern: string,\n packages: string[],\n options: SetDependenciesFlags\n ): Promise<{ changedComps: string[]; addedPackages: Record<string, string> }> {\n const compIds = await this.workspace.idsByPattern(componentPattern);\n const getDepField = () => {\n if (options.dev) return 'devDependencies';\n if (options.peer) return 'peerDependencies';\n return 'dependencies';\n };\n const packagesObj = {};\n await Promise.all(\n packages.map(async (pkg) => {\n const [name, version] = await this.getPackageNameAndVerResolved(pkg);\n packagesObj[name] = version;\n })\n );\n const config = {\n policy: {\n [getDepField()]: packagesObj,\n },\n };\n await Promise.all(\n compIds.map(async (compId) => {\n await this.workspace.addSpecificComponentConfig(compId, DependencyResolverAspect.id, config, true);\n })\n );\n\n await this.workspace.bitMap.write();\n\n return {\n changedComps: compIds.map((compId) => compId.toStringWithoutVersion()),\n addedPackages: packagesObj,\n };\n }\n\n async removeDependency(componentPattern: string, packages: string[]): Promise<RemoveDependencyResult[]> {\n const compIds = await this.workspace.idsByPattern(componentPattern);\n const results = await Promise.all(\n compIds.map(async (compId) => {\n const component = await this.workspace.get(compId);\n const depList = await this.dependencyResolver.getDependencies(component);\n const currentDepResolverConfig = await this.workspace.getSpecificComponentConfig(\n compId,\n DependencyResolverAspect.id\n );\n const newDepResolverConfig = cloneDeep(currentDepResolverConfig || {});\n const removedPackagesWithNulls = await pMapSeries(packages, async (pkg) => {\n const [name, version] = this.splitPkgToNameAndVer(pkg);\n const ignoreVersion = !version;\n const pkgToFind = ignoreVersion ? pkg : name;\n const dependency = depList.findDependency(pkgToFind, { ignoreVersion });\n if (!dependency) return null;\n const depField = KEY_NAME_BY_LIFECYCLE_TYPE[dependency.lifecycle];\n const existsInSpecificConfig = newDepResolverConfig.policy?.[depField]?.[name];\n if (existsInSpecificConfig) {\n if (existsInSpecificConfig === '-') return null;\n delete newDepResolverConfig.policy[depField][name];\n } else {\n set(newDepResolverConfig, ['policy', depField, name], '-');\n }\n return `${dependency.id}@${dependency.version}`;\n });\n const removedPackages = compact(removedPackagesWithNulls);\n if (!removedPackages.length) return null;\n await this.workspace.addSpecificComponentConfig(compId, DependencyResolverAspect.id, newDepResolverConfig);\n return { id: compId, removedPackages };\n })\n );\n await this.workspace.bitMap.write();\n\n return compact(results);\n }\n\n private async getPackageNameAndVerResolved(pkg: string): Promise<[string, string]> {\n const resolveLatest = async (pkgName: string) => {\n const versionResolver = await this.dependencyResolver.getVersionResolver({});\n const resolved = await versionResolver.resolveRemoteVersion(pkgName, { rootDir: '' });\n if (!resolved.version) throw new Error(`unable to resolve version for ${pkgName}`);\n return resolved.version;\n };\n const [name, version] = this.splitPkgToNameAndVer(pkg);\n const versionResolved = !version || version === 'latest' ? await resolveLatest(name) : version;\n return [name, versionResolved];\n }\n\n private splitPkgToNameAndVer(pkg: string): [string, string | undefined] {\n const packageSplit = pkg.split('@');\n if (pkg.startsWith('@')) {\n // scoped package\n if (packageSplit.length > 3) throw new Error(`invalid package \"${pkg}\" syntax, expected \"package[@version]\"`);\n return [`@${packageSplit[1]}`, packageSplit[2]];\n }\n if (packageSplit.length > 2) throw new Error(`invalid package \"${pkg}\" syntax, expected \"package[@version]\"`);\n return [packageSplit[0], packageSplit[1]];\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, DependencyResolverAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace, depsResolver]: [CLIMain, Workspace, DependencyResolverMain]) {\n const depsMain = new DependenciesMain(workspace, depsResolver);\n const depsCmd = new DependenciesCmd();\n depsCmd.commands = [\n new DependenciesGetCmd(),\n new DependenciesRemoveCmd(depsMain),\n new DependenciesDebugCmd(),\n new DependenciesSetCmd(depsMain),\n ];\n cli.register(depsCmd);\n\n return depsMain;\n }\n}\n\nDependenciesAspect.addRuntime(DependenciesMain);\n\nexport default DependenciesMain;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,24 +1,28 @@
1
1
  {
2
2
  "name": "@teambit/dependencies",
3
- "version": "0.0.11",
3
+ "version": "0.0.14",
4
4
  "homepage": "https://bit.dev/teambit/dependencies/dependencies",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.dependencies",
8
8
  "name": "dependencies",
9
- "version": "0.0.11"
9
+ "version": "0.0.14"
10
10
  },
11
11
  "dependencies": {
12
12
  "archy": "1.0.0",
13
13
  "chalk": "2.4.2",
14
+ "lodash": "4.17.21",
15
+ "p-map-series": "2.1.0",
14
16
  "@babel/runtime": "7.12.18",
15
17
  "core-js": "^3.0.0",
16
18
  "@teambit/harmony": "0.3.3",
17
- "@teambit/cli": "0.0.546",
18
- "@teambit/dependency-resolver": "0.0.818",
19
- "@teambit/workspace": "0.0.818"
19
+ "@teambit/cli": "0.0.549",
20
+ "@teambit/component-id": "0.0.405",
21
+ "@teambit/dependency-resolver": "0.0.821",
22
+ "@teambit/workspace": "0.0.821"
20
23
  },
21
24
  "devDependencies": {
25
+ "@types/lodash": "4.14.165",
22
26
  "@types/mocha": "9.1.0",
23
27
  "@types/testing-library__jest-dom": "5.9.5",
24
28
  "@types/jest": "^26.0.0",
@@ -27,7 +31,7 @@
27
31
  "@types/node": "12.20.4"
28
32
  },
29
33
  "peerDependencies": {
30
- "@teambit/legacy": "1.0.329",
34
+ "@teambit/legacy": "1.0.332",
31
35
  "react-dom": "^16.8.0 || ^17.0.0",
32
36
  "react": "^16.8.0 || ^17.0.0"
33
37
  },