@teambit/forking 0.0.116 → 0.0.119

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.
@@ -5,35 +5,61 @@ import { Component, ComponentID, ComponentMain } from '@teambit/component';
5
5
  import { ComponentIdObj } from '@teambit/component-id';
6
6
  import { GraphqlMain } from '@teambit/graphql';
7
7
  import { RefactoringMain } from '@teambit/refactoring';
8
+ import { PkgMain } from '@teambit/pkg';
8
9
  import { NewComponentHelperMain } from '@teambit/new-component-helper';
9
10
  import { ForkOptions } from './fork.cmd';
10
11
  export declare type ForkInfo = {
11
12
  forkedFrom: ComponentID;
12
13
  };
14
+ declare type MultipleComponentsToFork = Array<{
15
+ sourceId: string;
16
+ targetId?: string;
17
+ path?: string;
18
+ }>;
19
+ declare type MultipleForkOptions = {
20
+ refactor?: boolean;
21
+ scope?: string;
22
+ install?: boolean;
23
+ };
13
24
  export declare class ForkingMain {
14
25
  private workspace;
15
26
  private dependencyResolver;
16
27
  private newComponentHelper;
17
28
  private refactoring;
18
- constructor(workspace: Workspace, dependencyResolver: DependencyResolverMain, newComponentHelper: NewComponentHelperMain, refactoring: RefactoringMain);
19
- fork(sourceIdStr: string, targetId?: string, options?: ForkOptions): Promise<ComponentID>;
29
+ private pkg;
30
+ constructor(workspace: Workspace, dependencyResolver: DependencyResolverMain, newComponentHelper: NewComponentHelperMain, refactoring: RefactoringMain, pkg: PkgMain);
31
+ /**
32
+ * create a new copy of existing/remote component.
33
+ * the new component holds a reference to the old one for future reference.
34
+ * if refactor option is enable, change the source-code to update all dependencies with the new name.
35
+ */
36
+ fork(sourceId: string, targetId?: string, options?: ForkOptions): Promise<ComponentID>;
37
+ /**
38
+ * get the forking data, such as the source where a component was forked from
39
+ */
20
40
  getForkInfo(component: Component): ForkInfo | null;
41
+ forkMultipleFromRemote(componentsToFork: MultipleComponentsToFork, options?: MultipleForkOptions): Promise<void>;
21
42
  private forkExistingInWorkspace;
22
43
  private forkRemoteComponent;
44
+ private saveDeps;
45
+ private installDeps;
46
+ private extractDeps;
23
47
  private getConfig;
24
48
  static slots: never[];
25
49
  static dependencies: import("@teambit/harmony").Aspect[];
26
50
  static runtime: import("@teambit/harmony").RuntimeDefinition;
27
- static provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring]: [
51
+ static provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring, pkg,]: [
28
52
  CLIMain,
29
53
  Workspace,
30
54
  DependencyResolverMain,
31
55
  ComponentMain,
32
56
  NewComponentHelperMain,
33
57
  GraphqlMain,
34
- RefactoringMain
58
+ RefactoringMain,
59
+ PkgMain
35
60
  ]): Promise<ForkingMain>;
36
61
  }
37
62
  export declare type ForkConfig = {
38
63
  forkedFrom: ComponentIdObj;
39
64
  };
65
+ export {};
@@ -2,10 +2,18 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ require("core-js/modules/es.array.flat.js");
6
+
5
7
  require("core-js/modules/es.array.iterator.js");
6
8
 
9
+ require("core-js/modules/es.array.unscopables.flat.js");
10
+
7
11
  require("core-js/modules/es.promise.js");
8
12
 
13
+ require("core-js/modules/es.regexp.exec.js");
14
+
15
+ require("core-js/modules/es.string.replace.js");
16
+
9
17
  Object.defineProperty(exports, "__esModule", {
10
18
  value: true
11
19
  });
@@ -61,6 +69,16 @@ function _workspace() {
61
69
  return data;
62
70
  }
63
71
 
72
+ function _lodash() {
73
+ const data = require("lodash");
74
+
75
+ _lodash = function () {
76
+ return data;
77
+ };
78
+
79
+ return data;
80
+ }
81
+
64
82
  function _component() {
65
83
  const data = _interopRequireWildcard(require("@teambit/component"));
66
84
 
@@ -91,6 +109,26 @@ function _refactoring() {
91
109
  return data;
92
110
  }
93
111
 
112
+ function _pMapSeries() {
113
+ const data = _interopRequireDefault(require("p-map-series"));
114
+
115
+ _pMapSeries = function () {
116
+ return data;
117
+ };
118
+
119
+ return data;
120
+ }
121
+
122
+ function _pkg() {
123
+ const data = _interopRequireDefault(require("@teambit/pkg"));
124
+
125
+ _pkg = function () {
126
+ return data;
127
+ };
128
+
129
+ return data;
130
+ }
131
+
94
132
  function _bitError() {
95
133
  const data = require("@teambit/bit-error");
96
134
 
@@ -160,25 +198,42 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
160
198
  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; }
161
199
 
162
200
  class ForkingMain {
163
- constructor(workspace, dependencyResolver, newComponentHelper, refactoring) {
201
+ constructor(workspace, dependencyResolver, newComponentHelper, refactoring, pkg) {
164
202
  this.workspace = workspace;
165
203
  this.dependencyResolver = dependencyResolver;
166
204
  this.newComponentHelper = newComponentHelper;
167
205
  this.refactoring = refactoring;
206
+ this.pkg = pkg;
168
207
  }
208
+ /**
209
+ * create a new copy of existing/remote component.
210
+ * the new component holds a reference to the old one for future reference.
211
+ * if refactor option is enable, change the source-code to update all dependencies with the new name.
212
+ */
169
213
 
170
- async fork(sourceIdStr, targetId, options) {
171
- const sourceId = await this.workspace.resolveComponentId(sourceIdStr);
172
- const exists = this.workspace.exists(sourceId);
214
+
215
+ async fork(sourceId, targetId, options) {
216
+ const sourceCompId = await this.workspace.resolveComponentId(sourceId);
217
+ const exists = this.workspace.exists(sourceCompId);
173
218
 
174
219
  if (exists) {
175
- const existingInWorkspace = await this.workspace.get(sourceId);
220
+ const existingInWorkspace = await this.workspace.get(sourceCompId);
176
221
  return this.forkExistingInWorkspace(existingInWorkspace, targetId, options);
177
222
  }
178
223
 
179
- const sourceIdWithScope = sourceId._legacy.scope ? sourceId : _component().ComponentID.fromLegacy(_legacyBitId().BitId.parse(sourceIdStr, true));
180
- return this.forkRemoteComponent(sourceIdWithScope, targetId, options);
224
+ const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : _component().ComponentID.fromLegacy(_legacyBitId().BitId.parse(sourceId, true));
225
+ const {
226
+ targetCompId,
227
+ component
228
+ } = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);
229
+ await this.saveDeps(component);
230
+ await this.installDeps();
231
+ return targetCompId;
181
232
  }
233
+ /**
234
+ * get the forking data, such as the source where a component was forked from
235
+ */
236
+
182
237
 
183
238
  getForkInfo(component) {
184
239
  var _component$state$aspe;
@@ -190,6 +245,72 @@ class ForkingMain {
190
245
  };
191
246
  }
192
247
 
248
+ async forkMultipleFromRemote(componentsToFork, options = {}) {
249
+ const {
250
+ scope
251
+ } = options;
252
+ const results = await (0, _pMapSeries().default)(componentsToFork, async ({
253
+ sourceId,
254
+ targetId,
255
+ path
256
+ }) => {
257
+ const sourceCompId = await this.workspace.resolveComponentId(sourceId);
258
+ const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : _component().ComponentID.fromLegacy(_legacyBitId().BitId.parse(sourceId, true));
259
+ const {
260
+ targetCompId,
261
+ component
262
+ } = await this.forkRemoteComponent(sourceIdWithScope, targetId, {
263
+ scope,
264
+ path
265
+ });
266
+ return {
267
+ targetCompId,
268
+ sourceId,
269
+ component
270
+ };
271
+ });
272
+ const oldPackages = [];
273
+ const stringsToReplace = results.map(({
274
+ targetCompId,
275
+ sourceId,
276
+ component
277
+ }) => {
278
+ const oldPackageName = this.pkg.getPackageName(component);
279
+ oldPackages.push(oldPackageName);
280
+ const newName = targetCompId.fullName.replace(/\//g, '.');
281
+ const scopeToReplace = targetCompId.scope.replace('.', '/');
282
+ const newPackageName = `@${scopeToReplace}.${newName}`;
283
+ return [{
284
+ oldStr: oldPackageName,
285
+ newStr: newPackageName
286
+ }, {
287
+ oldStr: sourceId,
288
+ newStr: targetCompId.toStringWithoutVersion()
289
+ }];
290
+ }).flat();
291
+ const allComponents = await this.workspace.list();
292
+
293
+ if (options.refactor) {
294
+ const {
295
+ changedComponents
296
+ } = await this.refactoring.replaceMultipleStrings(allComponents, stringsToReplace);
297
+ await Promise.all(changedComponents.map(comp => this.workspace.write(comp)));
298
+ }
299
+
300
+ const forkedComponents = results.map(result => result.component);
301
+ const policy = await Promise.all(forkedComponents.map(comp => this.extractDeps(comp)));
302
+ const policyFlatAndUnique = (0, _lodash().uniqBy)(policy.flat(), 'dependencyId');
303
+ const policyWithoutWorkspaceComps = policyFlatAndUnique.filter(dep => !oldPackages.includes(dep.dependencyId));
304
+ this.dependencyResolver.addToRootPolicy(policyWithoutWorkspaceComps, {
305
+ updateExisting: true
306
+ });
307
+ await this.dependencyResolver.persistConfig(this.workspace.path);
308
+
309
+ if (options.install) {
310
+ await this.installDeps();
311
+ }
312
+ }
313
+
193
314
  async forkExistingInWorkspace(existing, targetId, options) {
194
315
  if (!targetId) {
195
316
  throw new Error(`error: unable to create "${existing.id.toStringWithoutVersion()}" component, a component with the same name already exists.
@@ -219,26 +340,24 @@ the reason is that the refactor changes the components using ${sourceId.toString
219
340
 
220
341
  const targetName = targetId || sourceId.fullName;
221
342
  const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options === null || options === void 0 ? void 0 : options.scope);
222
- const comp = await this.workspace.scope.getRemoteComponent(sourceId);
223
- const deps = await this.dependencyResolver.getDependencies(comp); // only bring auto-resolved dependencies, others should be set in the workspace.jsonc template
224
-
225
- const workspacePolicyEntries = deps.filter(dep => dep.source === 'auto').map(dep => {
226
- var _dep$getPackageName;
343
+ const component = await this.workspace.scope.getRemoteComponent(sourceId);
344
+ const config = await this.getConfig(component);
345
+ await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, options, config);
346
+ return {
347
+ targetCompId,
348
+ component
349
+ };
350
+ }
227
351
 
228
- return {
229
- dependencyId: ((_dep$getPackageName = dep.getPackageName) === null || _dep$getPackageName === void 0 ? void 0 : _dep$getPackageName.call(dep)) || dep.id,
230
- lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,
231
- value: {
232
- version: dep.version
233
- }
234
- };
235
- });
352
+ async saveDeps(component) {
353
+ const workspacePolicyEntries = await this.extractDeps(component);
236
354
  this.dependencyResolver.addToRootPolicy(workspacePolicyEntries, {
237
355
  updateExisting: true
238
356
  });
239
- const config = await this.getConfig(comp);
240
- await this.newComponentHelper.writeAndAddNewComp(comp, targetCompId, options, config);
241
357
  await this.dependencyResolver.persistConfig(this.workspace.path);
358
+ }
359
+
360
+ async installDeps() {
242
361
  await this.workspace.install(undefined, {
243
362
  dedupe: true,
244
363
  import: false,
@@ -246,7 +365,21 @@ the reason is that the refactor changes the components using ${sourceId.toString
246
365
  copyPeerToRuntimeOnComponents: false,
247
366
  updateExisting: false
248
367
  });
249
- return targetCompId;
368
+ }
369
+
370
+ async extractDeps(component) {
371
+ const deps = await this.dependencyResolver.getDependencies(component);
372
+ return deps.filter(dep => dep.source === 'auto').map(dep => {
373
+ var _dep$getPackageName;
374
+
375
+ return {
376
+ dependencyId: ((_dep$getPackageName = dep.getPackageName) === null || _dep$getPackageName === void 0 ? void 0 : _dep$getPackageName.call(dep)) || dep.id,
377
+ lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,
378
+ value: {
379
+ version: dep.version
380
+ }
381
+ };
382
+ });
250
383
  }
251
384
 
252
385
  async getConfig(comp) {
@@ -258,8 +391,8 @@ the reason is that the refactor changes the components using ${sourceId.toString
258
391
  });
259
392
  }
260
393
 
261
- static async provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring]) {
262
- const forkingMain = new ForkingMain(workspace, dependencyResolver, newComponentHelper, refactoring);
394
+ static async provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring, pkg]) {
395
+ const forkingMain = new ForkingMain(workspace, dependencyResolver, newComponentHelper, refactoring, pkg);
263
396
  cli.register(new (_fork().ForkCmd)(forkingMain));
264
397
  graphql.register((0, _forking3().forkingSchema)(forkingMain));
265
398
  componentMain.registerShowFragments([new (_forking2().ForkingFragment)(forkingMain)]);
@@ -270,7 +403,7 @@ the reason is that the refactor changes the components using ${sourceId.toString
270
403
 
271
404
  exports.ForkingMain = ForkingMain;
272
405
  (0, _defineProperty2().default)(ForkingMain, "slots", []);
273
- (0, _defineProperty2().default)(ForkingMain, "dependencies", [_cli().CLIAspect, _workspace().default, _dependencyResolver().DependencyResolverAspect, _component().default, _newComponentHelper().default, _graphql().default, _refactoring().default]);
406
+ (0, _defineProperty2().default)(ForkingMain, "dependencies", [_cli().CLIAspect, _workspace().default, _dependencyResolver().DependencyResolverAspect, _component().default, _newComponentHelper().default, _graphql().default, _refactoring().default, _pkg().default]);
274
407
  (0, _defineProperty2().default)(ForkingMain, "runtime", _cli().MainRuntime);
275
408
 
276
409
  _forking().ForkingAspect.addRuntime(ForkingMain);
@@ -1 +1 @@
1
- {"version":3,"sources":["forking.main.runtime.ts"],"names":["ForkingMain","constructor","workspace","dependencyResolver","newComponentHelper","refactoring","fork","sourceIdStr","targetId","options","sourceId","resolveComponentId","exists","existingInWorkspace","get","forkExistingInWorkspace","sourceIdWithScope","_legacy","scope","ComponentID","fromLegacy","BitId","parse","forkRemoteComponent","getForkInfo","component","forkConfig","state","aspects","ForkingAspect","id","config","forkedFrom","fromObject","existing","Error","toStringWithoutVersion","targetCompId","getNewComponentId","undefined","getConfig","writeAndAddNewComp","refactor","allComponents","list","changedComponents","refactorDependencyName","Promise","all","map","comp","write","BitError","targetName","fullName","getRemoteComponent","deps","getDependencies","workspacePolicyEntries","filter","dep","source","dependencyId","getPackageName","lifecycleType","lifecycle","value","version","addToRootPolicy","updateExisting","persistConfig","path","install","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","fromExisting","getConfigFromExistingToNewComponent","toObject","provider","cli","componentMain","graphql","forkingMain","register","ForkCmd","registerShowFragments","ForkingFragment","CLIAspect","WorkspaceAspect","DependencyResolverAspect","ComponentAspect","NewComponentHelperAspect","GraphqlAspect","RefactoringAspect","MainRuntime","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport ComponentAspect, { Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { ComponentIdObj } from '@teambit/component-id';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport RefactoringAspect, { RefactoringMain } from '@teambit/refactoring';\nimport { BitError } from '@teambit/bit-error';\nimport NewComponentHelperAspect, { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { ForkCmd, ForkOptions } from './fork.cmd';\nimport { ForkingAspect } from './forking.aspect';\nimport { ForkingFragment } from './forking.fragment';\nimport { forkingSchema } from './forking.graphql';\n\nexport type ForkInfo = {\n forkedFrom: ComponentID;\n};\n\nexport class ForkingMain {\n constructor(\n private workspace: Workspace,\n private dependencyResolver: DependencyResolverMain,\n private newComponentHelper: NewComponentHelperMain,\n private refactoring: RefactoringMain\n ) {}\n\n async fork(sourceIdStr: string, targetId?: string, options?: ForkOptions): Promise<ComponentID> {\n const sourceId = await this.workspace.resolveComponentId(sourceIdStr);\n const exists = this.workspace.exists(sourceId);\n if (exists) {\n const existingInWorkspace = await this.workspace.get(sourceId);\n return this.forkExistingInWorkspace(existingInWorkspace, targetId, options);\n }\n const sourceIdWithScope = sourceId._legacy.scope\n ? sourceId\n : ComponentID.fromLegacy(BitId.parse(sourceIdStr, true));\n return this.forkRemoteComponent(sourceIdWithScope, targetId, options);\n }\n\n getForkInfo(component: Component): ForkInfo | null {\n const forkConfig = component.state.aspects.get(ForkingAspect.id)?.config as ForkConfig | undefined;\n if (!forkConfig) return null;\n return {\n forkedFrom: ComponentID.fromObject(forkConfig.forkedFrom),\n };\n }\n\n private async forkExistingInWorkspace(existing: Component, targetId?: string, options?: ForkOptions) {\n if (!targetId) {\n throw new Error(`error: unable to create \"${existing.id.toStringWithoutVersion()}\" component, a component with the same name already exists.\nplease specify the target-id arg`);\n }\n const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);\n\n const config = await this.getConfig(existing);\n await this.newComponentHelper.writeAndAddNewComp(existing, targetCompId, options, config);\n if (options?.refactor) {\n const allComponents = await this.workspace.list();\n const { changedComponents } = await this.refactoring.refactorDependencyName(allComponents, existing.id, targetId);\n await Promise.all(changedComponents.map((comp) => this.workspace.write(comp)));\n }\n return targetCompId;\n }\n private async forkRemoteComponent(sourceId: ComponentID, targetId?: string, options?: ForkOptions) {\n if (options?.refactor) {\n throw new BitError(`the component ${sourceId.toStringWithoutVersion()} is not in the workspace, you can't use the --refactor flag.\nthe reason is that the refactor changes the components using ${sourceId.toStringWithoutVersion()}, since it's not in the workspace, no components were using it, so nothing to refactor`);\n }\n const targetName = targetId || sourceId.fullName;\n const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options?.scope);\n const comp = await this.workspace.scope.getRemoteComponent(sourceId);\n\n const deps = await this.dependencyResolver.getDependencies(comp);\n // only bring auto-resolved dependencies, others should be set in the workspace.jsonc template\n const workspacePolicyEntries = deps\n .filter((dep) => dep.source === 'auto')\n .map((dep) => ({\n dependencyId: dep.getPackageName?.() || dep.id,\n lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,\n value: {\n version: dep.version,\n },\n }));\n this.dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });\n const config = await this.getConfig(comp);\n await this.newComponentHelper.writeAndAddNewComp(comp, targetCompId, options, config);\n await this.dependencyResolver.persistConfig(this.workspace.path);\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n\n return targetCompId;\n }\n\n private async getConfig(comp: Component) {\n const fromExisting = await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);\n return {\n ...fromExisting,\n [ForkingAspect.id]: {\n forkedFrom: comp.id.toObject(),\n },\n };\n }\n\n static slots = [];\n static dependencies = [\n CLIAspect,\n WorkspaceAspect,\n DependencyResolverAspect,\n ComponentAspect,\n NewComponentHelperAspect,\n GraphqlAspect,\n RefactoringAspect,\n ];\n static runtime = MainRuntime;\n static async provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring]: [\n CLIMain,\n Workspace,\n DependencyResolverMain,\n ComponentMain,\n NewComponentHelperMain,\n GraphqlMain,\n RefactoringMain\n ]) {\n const forkingMain = new ForkingMain(workspace, dependencyResolver, newComponentHelper, refactoring);\n cli.register(new ForkCmd(forkingMain));\n graphql.register(forkingSchema(forkingMain));\n componentMain.registerShowFragments([new ForkingFragment(forkingMain)]);\n return forkingMain;\n }\n}\n\nForkingAspect.addRuntime(ForkingMain);\n\nexport type ForkConfig = {\n forkedFrom: ComponentIdObj;\n};\n"]}
1
+ {"version":3,"sources":["forking.main.runtime.ts"],"names":["ForkingMain","constructor","workspace","dependencyResolver","newComponentHelper","refactoring","pkg","fork","sourceId","targetId","options","sourceCompId","resolveComponentId","exists","existingInWorkspace","get","forkExistingInWorkspace","sourceIdWithScope","_legacy","scope","ComponentID","fromLegacy","BitId","parse","targetCompId","component","forkRemoteComponent","saveDeps","installDeps","getForkInfo","forkConfig","state","aspects","ForkingAspect","id","config","forkedFrom","fromObject","forkMultipleFromRemote","componentsToFork","results","path","oldPackages","stringsToReplace","map","oldPackageName","getPackageName","push","newName","fullName","replace","scopeToReplace","newPackageName","oldStr","newStr","toStringWithoutVersion","flat","allComponents","list","refactor","changedComponents","replaceMultipleStrings","Promise","all","comp","write","forkedComponents","result","policy","extractDeps","policyFlatAndUnique","policyWithoutWorkspaceComps","filter","dep","includes","dependencyId","addToRootPolicy","updateExisting","persistConfig","install","existing","Error","getNewComponentId","undefined","getConfig","writeAndAddNewComp","refactorDependencyName","BitError","targetName","getRemoteComponent","workspacePolicyEntries","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","deps","getDependencies","source","lifecycleType","lifecycle","value","version","fromExisting","getConfigFromExistingToNewComponent","toObject","provider","cli","componentMain","graphql","forkingMain","register","ForkCmd","registerShowFragments","ForkingFragment","CLIAspect","WorkspaceAspect","DependencyResolverAspect","ComponentAspect","NewComponentHelperAspect","GraphqlAspect","RefactoringAspect","PkgAspect","MainRuntime","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { uniqBy } from 'lodash';\nimport ComponentAspect, { Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { ComponentIdObj } from '@teambit/component-id';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport RefactoringAspect, { MultipleStringsReplacement, RefactoringMain } from '@teambit/refactoring';\nimport pMapSeries from 'p-map-series';\nimport PkgAspect, { PkgMain } from '@teambit/pkg';\nimport { BitError } from '@teambit/bit-error';\nimport NewComponentHelperAspect, { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport { ForkCmd, ForkOptions } from './fork.cmd';\nimport { ForkingAspect } from './forking.aspect';\nimport { ForkingFragment } from './forking.fragment';\nimport { forkingSchema } from './forking.graphql';\n\nexport type ForkInfo = {\n forkedFrom: ComponentID;\n};\n\ntype MultipleComponentsToFork = Array<{\n sourceId: string;\n targetId?: string; // if not specify, it'll be the same as the source\n path?: string; // if not specify, use the default component path\n}>;\n\ntype MultipleForkOptions = {\n refactor?: boolean;\n scope?: string; // different scope-name than the original components\n install?: boolean; // whether to run \"bit install\" once done.\n};\n\nexport class ForkingMain {\n constructor(\n private workspace: Workspace,\n private dependencyResolver: DependencyResolverMain,\n private newComponentHelper: NewComponentHelperMain,\n private refactoring: RefactoringMain,\n private pkg: PkgMain\n ) {}\n\n /**\n * create a new copy of existing/remote component.\n * the new component holds a reference to the old one for future reference.\n * if refactor option is enable, change the source-code to update all dependencies with the new name.\n */\n async fork(sourceId: string, targetId?: string, options?: ForkOptions): Promise<ComponentID> {\n const sourceCompId = await this.workspace.resolveComponentId(sourceId);\n const exists = this.workspace.exists(sourceCompId);\n if (exists) {\n const existingInWorkspace = await this.workspace.get(sourceCompId);\n return this.forkExistingInWorkspace(existingInWorkspace, targetId, options);\n }\n const sourceIdWithScope = sourceCompId._legacy.scope\n ? sourceCompId\n : ComponentID.fromLegacy(BitId.parse(sourceId, true));\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);\n await this.saveDeps(component);\n await this.installDeps();\n return targetCompId;\n }\n\n /**\n * get the forking data, such as the source where a component was forked from\n */\n getForkInfo(component: Component): ForkInfo | null {\n const forkConfig = component.state.aspects.get(ForkingAspect.id)?.config as ForkConfig | undefined;\n if (!forkConfig) return null;\n return {\n forkedFrom: ComponentID.fromObject(forkConfig.forkedFrom),\n };\n }\n\n async forkMultipleFromRemote(componentsToFork: MultipleComponentsToFork, options: MultipleForkOptions = {}) {\n const { scope } = options;\n const results = await pMapSeries(componentsToFork, async ({ sourceId, targetId, path }) => {\n const sourceCompId = await this.workspace.resolveComponentId(sourceId);\n const sourceIdWithScope = sourceCompId._legacy.scope\n ? sourceCompId\n : ComponentID.fromLegacy(BitId.parse(sourceId, true));\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, { scope, path });\n return { targetCompId, sourceId, component };\n });\n const oldPackages: string[] = [];\n const stringsToReplace: MultipleStringsReplacement = results\n .map(({ targetCompId, sourceId, component }) => {\n const oldPackageName = this.pkg.getPackageName(component);\n oldPackages.push(oldPackageName);\n const newName = targetCompId.fullName.replace(/\\//g, '.');\n const scopeToReplace = targetCompId.scope.replace('.', '/');\n const newPackageName = `@${scopeToReplace}.${newName}`;\n return [\n { oldStr: oldPackageName, newStr: newPackageName },\n { oldStr: sourceId, newStr: targetCompId.toStringWithoutVersion() },\n ];\n })\n .flat();\n const allComponents = await this.workspace.list();\n if (options.refactor) {\n const { changedComponents } = await this.refactoring.replaceMultipleStrings(allComponents, stringsToReplace);\n await Promise.all(changedComponents.map((comp) => this.workspace.write(comp)));\n }\n const forkedComponents = results.map((result) => result.component);\n const policy = await Promise.all(forkedComponents.map((comp) => this.extractDeps(comp)));\n const policyFlatAndUnique = uniqBy(policy.flat(), 'dependencyId');\n const policyWithoutWorkspaceComps = policyFlatAndUnique.filter((dep) => !oldPackages.includes(dep.dependencyId));\n this.dependencyResolver.addToRootPolicy(policyWithoutWorkspaceComps, { updateExisting: true });\n await this.dependencyResolver.persistConfig(this.workspace.path);\n if (options.install) {\n await this.installDeps();\n }\n }\n\n private async forkExistingInWorkspace(existing: Component, targetId?: string, options?: ForkOptions) {\n if (!targetId) {\n throw new Error(`error: unable to create \"${existing.id.toStringWithoutVersion()}\" component, a component with the same name already exists.\nplease specify the target-id arg`);\n }\n const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);\n\n const config = await this.getConfig(existing);\n await this.newComponentHelper.writeAndAddNewComp(existing, targetCompId, options, config);\n if (options?.refactor) {\n const allComponents = await this.workspace.list();\n const { changedComponents } = await this.refactoring.refactorDependencyName(allComponents, existing.id, targetId);\n await Promise.all(changedComponents.map((comp) => this.workspace.write(comp)));\n }\n return targetCompId;\n }\n\n private async forkRemoteComponent(\n sourceId: ComponentID,\n targetId?: string,\n options?: ForkOptions\n ): Promise<{\n targetCompId: ComponentID;\n component: Component;\n }> {\n if (options?.refactor) {\n throw new BitError(`the component ${sourceId.toStringWithoutVersion()} is not in the workspace, you can't use the --refactor flag.\nthe reason is that the refactor changes the components using ${sourceId.toStringWithoutVersion()}, since it's not in the workspace, no components were using it, so nothing to refactor`);\n }\n const targetName = targetId || sourceId.fullName;\n const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options?.scope);\n const component = await this.workspace.scope.getRemoteComponent(sourceId);\n const config = await this.getConfig(component);\n await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, options, config);\n\n return { targetCompId, component };\n }\n\n private async saveDeps(component: Component) {\n const workspacePolicyEntries = await this.extractDeps(component);\n this.dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });\n await this.dependencyResolver.persistConfig(this.workspace.path);\n }\n\n private async installDeps() {\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n }\n\n private async extractDeps(component: Component) {\n const deps = await this.dependencyResolver.getDependencies(component);\n return deps\n .filter((dep) => dep.source === 'auto')\n .map((dep) => ({\n dependencyId: dep.getPackageName?.() || dep.id,\n lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,\n value: {\n version: dep.version,\n },\n }));\n }\n\n private async getConfig(comp: Component) {\n const fromExisting = await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);\n return {\n ...fromExisting,\n [ForkingAspect.id]: {\n forkedFrom: comp.id.toObject(),\n },\n };\n }\n\n static slots = [];\n static dependencies = [\n CLIAspect,\n WorkspaceAspect,\n DependencyResolverAspect,\n ComponentAspect,\n NewComponentHelperAspect,\n GraphqlAspect,\n RefactoringAspect,\n PkgAspect,\n ];\n static runtime = MainRuntime;\n static async provider([\n cli,\n workspace,\n dependencyResolver,\n componentMain,\n newComponentHelper,\n graphql,\n refactoring,\n pkg,\n ]: [\n CLIMain,\n Workspace,\n DependencyResolverMain,\n ComponentMain,\n NewComponentHelperMain,\n GraphqlMain,\n RefactoringMain,\n PkgMain\n ]) {\n const forkingMain = new ForkingMain(workspace, dependencyResolver, newComponentHelper, refactoring, pkg);\n cli.register(new ForkCmd(forkingMain));\n graphql.register(forkingSchema(forkingMain));\n componentMain.registerShowFragments([new ForkingFragment(forkingMain)]);\n return forkingMain;\n }\n}\n\nForkingAspect.addRuntime(ForkingMain);\n\nexport type ForkConfig = {\n forkedFrom: ComponentIdObj;\n};\n"]}
package/package.json CHANGED
@@ -1,32 +1,36 @@
1
1
  {
2
2
  "name": "@teambit/forking",
3
- "version": "0.0.116",
3
+ "version": "0.0.119",
4
4
  "homepage": "https://bit.dev/teambit/component/forking",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "forking",
9
- "version": "0.0.116"
9
+ "version": "0.0.119"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
13
13
  "graphql-tag": "2.12.1",
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.474",
18
- "@teambit/component": "0.0.712",
19
- "@teambit/graphql": "0.0.712",
19
+ "@teambit/cli": "0.0.476",
20
+ "@teambit/component": "0.0.715",
21
+ "@teambit/graphql": "0.0.715",
20
22
  "@teambit/bit-error": "0.0.394",
21
23
  "@teambit/component-id": "0.0.402",
22
- "@teambit/dependency-resolver": "0.0.712",
24
+ "@teambit/dependency-resolver": "0.0.715",
23
25
  "@teambit/legacy-bit-id": "0.0.399",
24
- "@teambit/new-component-helper": "0.0.116",
25
- "@teambit/refactoring": "0.0.9",
26
- "@teambit/workspace": "0.0.712"
26
+ "@teambit/new-component-helper": "0.0.119",
27
+ "@teambit/pkg": "0.0.715",
28
+ "@teambit/refactoring": "0.0.12",
29
+ "@teambit/workspace": "0.0.715"
27
30
  },
28
31
  "devDependencies": {
29
32
  "@types/react": "^17.0.8",
33
+ "@types/lodash": "4.14.165",
30
34
  "@types/mocha": "9.1.0",
31
35
  "@types/testing-library__jest-dom": "5.9.5",
32
36
  "@types/jest": "^26.0.0",
@@ -34,7 +38,7 @@
34
38
  "@types/node": "12.20.4"
35
39
  },
36
40
  "peerDependencies": {
37
- "@teambit/legacy": "1.0.254",
41
+ "@teambit/legacy": "1.0.256",
38
42
  "react-dom": "^16.8.0 || ^17.0.0",
39
43
  "react": "^16.8.0 || ^17.0.0"
40
44
  },
@@ -62,7 +66,7 @@
62
66
  "react": "-"
63
67
  },
64
68
  "peerDependencies": {
65
- "@teambit/legacy": "1.0.254",
69
+ "@teambit/legacy": "1.0.256",
66
70
  "react-dom": "^16.8.0 || ^17.0.0",
67
71
  "react": "^16.8.0 || ^17.0.0"
68
72
  }
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.116/dist/forking.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.116/dist/forking.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.119/dist/forking.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.119/dist/forking.docs.mdx')]