@teambit/forking 1.0.106 → 1.0.108
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/fork.cmd.d.ts +1 -1
- package/dist/forking.composition.d.ts +2 -2
- package/dist/forking.fragment.d.ts +1 -1
- package/dist/forking.graphql.js +1 -1
- package/dist/forking.graphql.js.map +1 -1
- package/dist/forking.main.runtime.d.ts +6 -5
- package/dist/forking.main.runtime.js +24 -28
- package/dist/forking.main.runtime.js.map +1 -1
- package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
- package/dist/scope-fork.cmd.d.ts +1 -1
- package/fork.cmd.ts +72 -0
- package/forking.aspect.ts +5 -0
- package/forking.fragment.ts +26 -0
- package/forking.graphql.ts +28 -0
- package/forking.main.runtime.ts +356 -0
- package/index.ts +5 -0
- package/package.json +22 -29
- package/scope-fork.cmd.ts +45 -0
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
package/dist/fork.cmd.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Command, CommandOptions } from '@teambit/cli';
|
2
2
|
import { ComponentConfig } from '@teambit/generator';
|
3
3
|
import { ForkingMain } from '.';
|
4
|
-
export
|
4
|
+
export type ForkOptions = {
|
5
5
|
scope?: string;
|
6
6
|
path?: string;
|
7
7
|
refactor?: boolean;
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
export declare const Logo: () =>
|
1
|
+
/// <reference types="react" />
|
2
|
+
export declare const Logo: () => JSX.Element;
|
@@ -10,7 +10,7 @@ export declare class ForkingFragment implements ShowFragment {
|
|
10
10
|
}>;
|
11
11
|
json(component: Component): Promise<{
|
12
12
|
title: string;
|
13
|
-
json: import("./forking.main.runtime").ForkInfo
|
13
|
+
json: import("./forking.main.runtime").ForkInfo;
|
14
14
|
}>;
|
15
15
|
weight: number;
|
16
16
|
}
|
package/dist/forking.graphql.js
CHANGED
@@ -28,7 +28,7 @@ function forkingSchema(forking) {
|
|
28
28
|
forking: component => {
|
29
29
|
const forkInfo = forking.getForkInfo(component);
|
30
30
|
return {
|
31
|
-
forkedFrom: forkInfo
|
31
|
+
forkedFrom: forkInfo?.forkedFrom.toString()
|
32
32
|
};
|
33
33
|
}
|
34
34
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_graphqlTag","data","_interopRequireDefault","require","obj","__esModule","default","forkingSchema","forking","typeDefs","gql","resolvers","Component","component","forkInfo","getForkInfo","forkedFrom","toString"],"sources":["forking.graphql.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { Schema } from '@teambit/graphql';\nimport gql from 'graphql-tag';\nimport { ForkingMain } from './forking.main.runtime';\n\nexport function forkingSchema(forking: ForkingMain): Schema {\n return {\n typeDefs: gql`\n extend type Component {\n forking: ForkingInfo\n }\n\n type ForkingInfo {\n forkedFrom: String\n }\n `,\n resolvers: {\n Component: {\n forking: (component: Component) => {\n const forkInfo = forking.getForkInfo(component);\n return {\n forkedFrom: forkInfo?.forkedFrom.toString(),\n };\n },\n },\n },\n };\n}\n"],"mappings":";;;;;;AAEA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGvB,SAASG,aAAaA,CAACC,OAAoB,EAAU;EAC1D,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,SAAS,EAAE;QACTJ,OAAO,EAAGK,SAAoB,IAAK;UACjC,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAW,CAACF,SAAS,CAAC;UAC/C,OAAO;YACLG,UAAU,EAAEF,QAAQ,
|
1
|
+
{"version":3,"names":["_graphqlTag","data","_interopRequireDefault","require","obj","__esModule","default","forkingSchema","forking","typeDefs","gql","resolvers","Component","component","forkInfo","getForkInfo","forkedFrom","toString"],"sources":["forking.graphql.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { Schema } from '@teambit/graphql';\nimport gql from 'graphql-tag';\nimport { ForkingMain } from './forking.main.runtime';\n\nexport function forkingSchema(forking: ForkingMain): Schema {\n return {\n typeDefs: gql`\n extend type Component {\n forking: ForkingInfo\n }\n\n type ForkingInfo {\n forkedFrom: String\n }\n `,\n resolvers: {\n Component: {\n forking: (component: Component) => {\n const forkInfo = forking.getForkInfo(component);\n return {\n forkedFrom: forkInfo?.forkedFrom.toString(),\n };\n },\n },\n },\n };\n}\n"],"mappings":";;;;;;AAEA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGvB,SAASG,aAAaA,CAACC,OAAoB,EAAU;EAC1D,OAAO;IACLC,QAAQ,EAAE,IAAAC,qBAAG,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,SAAS,EAAE;QACTJ,OAAO,EAAGK,SAAoB,IAAK;UACjC,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAW,CAACF,SAAS,CAAC;UAC/C,OAAO;YACLG,UAAU,EAAEF,QAAQ,EAAEE,UAAU,CAACC,QAAQ,CAAC;UAC5C,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH"}
|
@@ -11,17 +11,18 @@ import { RefactoringMain } from '@teambit/refactoring';
|
|
11
11
|
import { Workspace } from '@teambit/workspace';
|
12
12
|
import { ForkOptions } from './fork.cmd';
|
13
13
|
import { ScopeForkOptions } from './scope-fork.cmd';
|
14
|
-
export
|
14
|
+
export type ForkInfo = {
|
15
15
|
forkedFrom: ComponentID;
|
16
16
|
};
|
17
|
-
|
17
|
+
type MultipleComponentsToFork = Array<{
|
18
18
|
sourceId: string;
|
19
19
|
targetId?: string;
|
20
|
+
targetScope?: string;
|
20
21
|
path?: string;
|
21
22
|
env?: string;
|
22
23
|
config?: ComponentConfig;
|
23
24
|
}>;
|
24
|
-
|
25
|
+
type MultipleForkOptions = {
|
25
26
|
refactor?: boolean;
|
26
27
|
scope?: string;
|
27
28
|
install?: boolean;
|
@@ -64,7 +65,7 @@ export declare class ForkingMain {
|
|
64
65
|
private installDeps;
|
65
66
|
private extractDeps;
|
66
67
|
private getConfig;
|
67
|
-
static slots:
|
68
|
+
static slots: any[];
|
68
69
|
static dependencies: import("@teambit/harmony").Aspect[];
|
69
70
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
70
71
|
static provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring, pkg, install,]: [
|
@@ -79,7 +80,7 @@ export declare class ForkingMain {
|
|
79
80
|
InstallMain
|
80
81
|
]): Promise<ForkingMain>;
|
81
82
|
}
|
82
|
-
export
|
83
|
+
export type ForkConfig = {
|
83
84
|
forkedFrom: ComponentIdObj;
|
84
85
|
};
|
85
86
|
export {};
|
@@ -174,7 +174,7 @@ class ForkingMain {
|
|
174
174
|
component
|
175
175
|
} = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);
|
176
176
|
await this.saveDeps(component);
|
177
|
-
if (!
|
177
|
+
if (!options?.skipDependencyInstallation) await this.installDeps();
|
178
178
|
return targetCompId;
|
179
179
|
}
|
180
180
|
|
@@ -182,8 +182,7 @@ class ForkingMain {
|
|
182
182
|
* get the forking data, such as the source where a component was forked from
|
183
183
|
*/
|
184
184
|
getForkInfo(component) {
|
185
|
-
|
186
|
-
const forkConfig = (_component$state$aspe = component.state.aspects.get(_forking().ForkingAspect.id)) === null || _component$state$aspe === void 0 ? void 0 : _component$state$aspe.config;
|
185
|
+
const forkConfig = component.state.aspects.get(_forking().ForkingAspect.id)?.config;
|
187
186
|
if (!forkConfig) return null;
|
188
187
|
return {
|
189
188
|
forkedFrom: _componentId().ComponentID.fromObject(forkConfig.forkedFrom)
|
@@ -199,7 +198,8 @@ class ForkingMain {
|
|
199
198
|
targetId,
|
200
199
|
path,
|
201
200
|
env,
|
202
|
-
config
|
201
|
+
config,
|
202
|
+
targetScope
|
203
203
|
}) => {
|
204
204
|
const sourceCompId = await this.workspace.resolveComponentId(sourceId);
|
205
205
|
const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : _componentId().ComponentID.fromString(sourceId);
|
@@ -207,7 +207,7 @@ class ForkingMain {
|
|
207
207
|
targetCompId,
|
208
208
|
component
|
209
209
|
} = await this.forkRemoteComponent(sourceIdWithScope, targetId, {
|
210
|
-
scope,
|
210
|
+
scope: targetScope || scope,
|
211
211
|
path,
|
212
212
|
env,
|
213
213
|
config
|
@@ -315,17 +315,17 @@ class ForkingMain {
|
|
315
315
|
});
|
316
316
|
await this.refactorMultipleAndInstall(multipleForkInfo, {
|
317
317
|
refactor: true,
|
318
|
-
install: !
|
319
|
-
ast: options
|
318
|
+
install: !options?.skipDependencyInstallation,
|
319
|
+
ast: options?.ast
|
320
320
|
});
|
321
321
|
return multipleForkInfo.map(info => info.targetCompId);
|
322
322
|
}
|
323
323
|
async forkExistingInWorkspace(existing, targetId, options) {
|
324
324
|
targetId = targetId || existing.id.fullName;
|
325
|
-
const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options
|
325
|
+
const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);
|
326
326
|
const config = await this.getConfig(existing, options);
|
327
327
|
await this.newComponentHelper.writeAndAddNewComp(existing, targetCompId, options, config);
|
328
|
-
if (options
|
328
|
+
if (options?.refactor) {
|
329
329
|
const allComponents = await this.workspace.list();
|
330
330
|
const {
|
331
331
|
changedComponents
|
@@ -335,18 +335,18 @@ class ForkingMain {
|
|
335
335
|
return targetCompId;
|
336
336
|
}
|
337
337
|
async forkRemoteComponent(sourceId, targetId, options) {
|
338
|
-
if (options
|
338
|
+
if (options?.refactor) {
|
339
339
|
throw new (_bitError().BitError)(`the component ${sourceId.toStringWithoutVersion()} is not in the workspace, you can't use the --refactor flag.
|
340
340
|
the 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`);
|
341
341
|
}
|
342
342
|
const targetName = targetId || sourceId.fullName;
|
343
|
-
const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options
|
343
|
+
const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options?.scope);
|
344
344
|
const component = await this.workspace.scope.getRemoteComponent(sourceId);
|
345
345
|
await this.refactoring.replaceMultipleStrings([component], [{
|
346
346
|
oldStr: sourceId.toStringWithoutVersion(),
|
347
347
|
newStr: targetCompId.toStringWithoutVersion()
|
348
|
-
}], options
|
349
|
-
if (!
|
348
|
+
}], options?.ast ? [_typescript().importTransformer, _typescript().exportTransformer] : undefined);
|
349
|
+
if (!options?.preserve) {
|
350
350
|
await this.refactoring.refactorVariableAndClasses(component, sourceId, targetCompId);
|
351
351
|
this.refactoring.refactorFilenames(component, sourceId, targetCompId);
|
352
352
|
}
|
@@ -383,21 +383,18 @@ the reason is that the refactor changes the components using ${sourceId.toString
|
|
383
383
|
return !excludeCompIds.includes(compIdStr);
|
384
384
|
}
|
385
385
|
return !excludePackages.includes(dep.id);
|
386
|
-
}).map(dep => {
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
}
|
394
|
-
};
|
395
|
-
});
|
386
|
+
}).map(dep => ({
|
387
|
+
dependencyId: dep.getPackageName?.() || dep.id,
|
388
|
+
lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,
|
389
|
+
value: {
|
390
|
+
version: dep.version
|
391
|
+
}
|
392
|
+
}));
|
396
393
|
}
|
397
394
|
async getConfig(comp, options) {
|
398
|
-
const config =
|
399
|
-
const fromExisting = options
|
400
|
-
const linkToOriginal = options
|
395
|
+
const config = options?.config || {};
|
396
|
+
const fromExisting = options?.skipConfig ? {} : await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);
|
397
|
+
const linkToOriginal = options?.noLink ? {} : {
|
401
398
|
[_forking().ForkingAspect.id]: {
|
402
399
|
forkedFrom: comp.id.toObject()
|
403
400
|
}
|
@@ -405,13 +402,12 @@ the reason is that the refactor changes the components using ${sourceId.toString
|
|
405
402
|
return _objectSpread(_objectSpread(_objectSpread({}, fromExisting), linkToOriginal), config);
|
406
403
|
}
|
407
404
|
static async provider([cli, workspace, dependencyResolver, componentMain, newComponentHelper, graphql, refactoring, pkg, install]) {
|
408
|
-
var _scopeCommand$command;
|
409
405
|
const forkingMain = new ForkingMain(workspace, install, dependencyResolver, newComponentHelper, refactoring, pkg);
|
410
406
|
cli.register(new (_fork().ForkCmd)(forkingMain));
|
411
407
|
graphql.register((0, _forking3().forkingSchema)(forkingMain));
|
412
408
|
componentMain.registerShowFragments([new (_forking2().ForkingFragment)(forkingMain)]);
|
413
409
|
const scopeCommand = cli.getCommand('scope');
|
414
|
-
scopeCommand
|
410
|
+
scopeCommand?.commands?.push(new (_scopeFork().ScopeForkCmd)(forkingMain));
|
415
411
|
return forkingMain;
|
416
412
|
}
|
417
413
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_bitError","data","require","_cli","_typescript","_component","_interopRequireDefault","_dependencyResolver","_graphql","_install","_componentId","_newComponentHelper","_pkg","_refactoring","_workspace","_interopRequireWildcard","_lodash","_pMapSeries","_fork","_forking","_forking2","_forking3","_scopeFork","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","ForkingMain","constructor","workspace","install","dependencyResolver","newComponentHelper","refactoring","pkg","fork","sourceId","targetId","options","OutsideWorkspaceError","sourceCompId","resolveComponentId","exists","existingInWorkspace","forkExistingInWorkspace","sourceIdWithScope","_legacy","scope","ComponentID","fromString","targetCompId","component","forkRemoteComponent","saveDeps","skipDependencyInstallation","installDeps","getForkInfo","_component$state$aspe","forkConfig","state","aspects","ForkingAspect","id","config","forkedFrom","fromObject","forkMultipleFromRemote","componentsToFork","componentsToForkSorted","sortComponentsToFork","results","pMapSeries","path","env","refactorMultipleAndInstall","sort","b","oldPackages","stringsToReplace","map","oldPackageName","getPackageName","newName","fullName","replace","scopeToReplace","newPackageName","oldStr","newStr","toStringWithoutVersion","flat","allComponents","list","refactor","changedComponents","replaceMultipleStrings","ast","importTransformer","exportTransformer","undefined","Promise","all","comp","write","forkedComponents","result","policy","extractDeps","policyFlatAndUnique","uniqBy","policyWithoutWorkspaceComps","dep","includes","dependencyId","addToRootPolicy","updateExisting","persistConfig","forkScope","originalScope","newScope","pattern","allIdsFromOriginalScope","listRemoteScope","Error","getPatternWithScopeName","startsWith","patternWithScopeName","idsFromOriginalScope","filterIdsFromPoolIdsByPattern","workspaceIds","listIds","workspaceBitIds","ComponentIdList","fromArray","existInWorkspace","searchWithoutVersion","toString","multipleForkInfo","components","getManyRemoteComponents","getConfig","name","writeAndAddNewComp","info","existing","getNewComponentId","refactorDependencyName","BitError","targetName","getRemoteComponent","preserve","refactorVariableAndClasses","refactorFilenames","workspacePolicyEntries","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","deps","getDependencies","excludePackages","excludeCompIds","getCompIdsThatShouldNotBeInPolicy","source","ComponentDependency","compIdStr","componentId","_dep$getPackageName","lifecycleType","lifecycle","version","fromExisting","skipConfig","getConfigFromExistingToNewComponent","linkToOriginal","noLink","toObject","provider","cli","componentMain","graphql","_scopeCommand$command","forkingMain","register","ForkCmd","forkingSchema","registerShowFragments","ForkingFragment","scopeCommand","getCommand","commands","ScopeForkCmd","exports","CLIAspect","WorkspaceAspect","DependencyResolverAspect","ComponentAspect","NewComponentHelperAspect","GraphqlAspect","RefactoringAspect","PkgAspect","InstallAspect","MainRuntime","addRuntime"],"sources":["forking.main.runtime.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { importTransformer, exportTransformer } from '@teambit/typescript';\nimport ComponentAspect, { Component, ComponentMain } from '@teambit/component';\nimport { ComponentDependency, DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ComponentConfig } from '@teambit/generator';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport { InstallAspect, InstallMain } from '@teambit/install';\nimport { ComponentID, ComponentIdObj, ComponentIdList } from '@teambit/component-id';\nimport NewComponentHelperAspect, { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport PkgAspect, { PkgMain } from '@teambit/pkg';\nimport RefactoringAspect, { MultipleStringsReplacement, RefactoringMain } from '@teambit/refactoring';\nimport WorkspaceAspect, { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { uniqBy } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport { ForkCmd, ForkOptions } from './fork.cmd';\nimport { ForkingAspect } from './forking.aspect';\nimport { ForkingFragment } from './forking.fragment';\nimport { forkingSchema } from './forking.graphql';\nimport { ScopeForkCmd, ScopeForkOptions } from './scope-fork.cmd';\n\nexport type ForkInfo = {\n forkedFrom: ComponentID;\n};\n\ntype MultipleForkInfo = {\n targetCompId: ComponentID;\n sourceId: string;\n component: Component;\n};\n\ntype MultipleComponentsToFork = Array<{\n sourceId: string;\n targetId?: string; // if not specified, it'll be the same as the source\n path?: string; // if not specified, use the default component path\n env?: string; // if not specified, use the default env\n config?: ComponentConfig; // if specified, adds to/overrides the existing config\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 ast?: boolean; // whether to use AST to transform files instead of regex\n};\n\nexport class ForkingMain {\n constructor(\n private workspace: Workspace,\n private install: InstallMain,\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 if (!this.workspace) throw new OutsideWorkspaceError();\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 ? sourceCompId : ComponentID.fromString(sourceId);\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);\n await this.saveDeps(component);\n if (!options?.skipDependencyInstallation) 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 componentsToForkSorted = this.sortComponentsToFork(componentsToFork);\n const { scope } = options;\n const results = await pMapSeries(componentsToForkSorted, async ({ sourceId, targetId, path, env, config }) => {\n const sourceCompId = await this.workspace.resolveComponentId(sourceId);\n const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : ComponentID.fromString(sourceId);\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, {\n scope,\n path,\n env,\n config,\n });\n return { targetCompId, sourceId, component };\n });\n await this.refactorMultipleAndInstall(results, options);\n }\n\n /**\n * sort the components to fork so that components without \"env\" prop will be forked first.\n * this way, if some components are envs, their \"env\" prop is empty and will be forked first, then components that\n * depends on them.\n * otherwise, forking the components first result in errors when loading them as their envs are missing at that point\n */\n private sortComponentsToFork(componentsToFork: MultipleComponentsToFork) {\n return componentsToFork.sort((a, b) => {\n if (a.env && b.env) return 0;\n if (a.env) return 1;\n return -1;\n });\n }\n\n private async refactorMultipleAndInstall(results: MultipleForkInfo[], options: MultipleForkOptions = {}) {\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(\n allComponents,\n stringsToReplace,\n options.ast ? [importTransformer, exportTransformer] : undefined\n );\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 /**\n * fork all components of the given scope\n */\n async forkScope(\n originalScope: string,\n newScope: string,\n pattern?: string,\n options?: ScopeForkOptions\n ): Promise<ComponentID[]> {\n const allIdsFromOriginalScope = await this.workspace.scope.listRemoteScope(originalScope);\n if (!allIdsFromOriginalScope.length) {\n throw new Error(`unable to find components to fork from ${originalScope}`);\n }\n const getPatternWithScopeName = () => {\n if (!pattern) return undefined;\n if (pattern.startsWith(`${originalScope}/`)) return pattern;\n return `${originalScope}/${pattern}`;\n };\n const patternWithScopeName = getPatternWithScopeName();\n const idsFromOriginalScope = patternWithScopeName\n ? await this.workspace.scope.filterIdsFromPoolIdsByPattern(patternWithScopeName, allIdsFromOriginalScope)\n : allIdsFromOriginalScope;\n const workspaceIds = await this.workspace.listIds();\n const workspaceBitIds = ComponentIdList.fromArray(workspaceIds.map((id) => id));\n idsFromOriginalScope.forEach((id) => {\n const existInWorkspace = workspaceBitIds.searchWithoutVersion(id);\n if (existInWorkspace) {\n throw new Error(\n `unable to fork \"${id.toString()}\". the workspace has a component \"${existInWorkspace.toString()}\" with the same name and same scope`\n );\n }\n });\n const multipleForkInfo: MultipleForkInfo[] = [];\n const components = await this.workspace.scope.getManyRemoteComponents(idsFromOriginalScope);\n await pMapSeries(components, async (component) => {\n const config = await this.getConfig(component);\n const targetCompId = ComponentID.fromObject({ name: component.id.fullName }, newScope);\n await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, { scope: newScope }, config);\n multipleForkInfo.push({ targetCompId, sourceId: component.id.toStringWithoutVersion(), component });\n });\n await this.refactorMultipleAndInstall(multipleForkInfo, {\n refactor: true,\n install: !options?.skipDependencyInstallation,\n ast: options?.ast,\n });\n return multipleForkInfo.map((info) => info.targetCompId);\n }\n\n private async forkExistingInWorkspace(existing: Component, targetId?: string, options?: ForkOptions) {\n targetId = targetId || existing.id.fullName;\n const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);\n\n const config = await this.getConfig(existing, options);\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 await this.refactoring.replaceMultipleStrings(\n [component],\n [\n {\n oldStr: sourceId.toStringWithoutVersion(),\n newStr: targetCompId.toStringWithoutVersion(),\n },\n ],\n options?.ast ? [importTransformer, exportTransformer] : undefined\n );\n if (!options?.preserve) {\n await this.refactoring.refactorVariableAndClasses(component, sourceId, targetCompId);\n this.refactoring.refactorFilenames(component, sourceId, targetCompId);\n }\n const config = await this.getConfig(component, options);\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.install.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 const excludePackages = ['@teambit/legacy'];\n const excludeCompIds = this.dependencyResolver.getCompIdsThatShouldNotBeInPolicy();\n return deps\n .filter((dep) => dep.source === 'auto')\n .filter((dep) => {\n if (dep instanceof ComponentDependency) {\n const compIdStr = dep.componentId.toStringWithoutVersion();\n return !excludeCompIds.includes(compIdStr);\n }\n return !excludePackages.includes(dep.id);\n })\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, options?: ForkOptions) {\n const config = options?.config || {};\n const fromExisting = options?.skipConfig\n ? {}\n : await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);\n const linkToOriginal = options?.noLink ? {} : { [ForkingAspect.id]: { forkedFrom: comp.id.toObject() } };\n return {\n ...fromExisting,\n ...linkToOriginal,\n ...config,\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 InstallAspect,\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 install,\n ]: [\n CLIMain,\n Workspace,\n DependencyResolverMain,\n ComponentMain,\n NewComponentHelperMain,\n GraphqlMain,\n RefactoringMain,\n PkgMain,\n InstallMain\n ]) {\n const forkingMain = new ForkingMain(workspace, install, dependencyResolver, newComponentHelper, refactoring, pkg);\n cli.register(new ForkCmd(forkingMain));\n graphql.register(forkingSchema(forkingMain));\n componentMain.registerShowFragments([new ForkingFragment(forkingMain)]);\n\n const scopeCommand = cli.getCommand('scope');\n scopeCommand?.commands?.push(new ScopeForkCmd(forkingMain));\n\n return forkingMain;\n }\n}\n\nForkingAspect.addRuntime(ForkingMain);\n\nexport type ForkConfig = {\n forkedFrom: ComponentIdObj;\n};\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_bitError","data","require","_cli","_typescript","_component","_interopRequireDefault","_dependencyResolver","_graphql","_install","_componentId","_newComponentHelper","_pkg","_refactoring","_workspace","_interopRequireWildcard","_lodash","_pMapSeries","_fork","_forking","_forking2","_forking3","_scopeFork","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","ForkingMain","constructor","workspace","install","dependencyResolver","newComponentHelper","refactoring","pkg","fork","sourceId","targetId","options","OutsideWorkspaceError","sourceCompId","resolveComponentId","exists","existingInWorkspace","forkExistingInWorkspace","sourceIdWithScope","_legacy","scope","ComponentID","fromString","targetCompId","component","forkRemoteComponent","saveDeps","skipDependencyInstallation","installDeps","getForkInfo","forkConfig","state","aspects","ForkingAspect","id","config","forkedFrom","fromObject","forkMultipleFromRemote","componentsToFork","componentsToForkSorted","sortComponentsToFork","results","pMapSeries","path","env","targetScope","refactorMultipleAndInstall","sort","b","oldPackages","stringsToReplace","map","oldPackageName","getPackageName","newName","fullName","replace","scopeToReplace","newPackageName","oldStr","newStr","toStringWithoutVersion","flat","allComponents","list","refactor","changedComponents","replaceMultipleStrings","ast","importTransformer","exportTransformer","undefined","Promise","all","comp","write","forkedComponents","result","policy","extractDeps","policyFlatAndUnique","uniqBy","policyWithoutWorkspaceComps","dep","includes","dependencyId","addToRootPolicy","updateExisting","persistConfig","forkScope","originalScope","newScope","pattern","allIdsFromOriginalScope","listRemoteScope","Error","getPatternWithScopeName","startsWith","patternWithScopeName","idsFromOriginalScope","filterIdsFromPoolIdsByPattern","workspaceIds","listIds","workspaceBitIds","ComponentIdList","fromArray","existInWorkspace","searchWithoutVersion","toString","multipleForkInfo","components","getManyRemoteComponents","getConfig","name","writeAndAddNewComp","info","existing","getNewComponentId","refactorDependencyName","BitError","targetName","getRemoteComponent","preserve","refactorVariableAndClasses","refactorFilenames","workspacePolicyEntries","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","deps","getDependencies","excludePackages","excludeCompIds","getCompIdsThatShouldNotBeInPolicy","source","ComponentDependency","compIdStr","componentId","lifecycleType","lifecycle","version","fromExisting","skipConfig","getConfigFromExistingToNewComponent","linkToOriginal","noLink","toObject","provider","cli","componentMain","graphql","forkingMain","register","ForkCmd","forkingSchema","registerShowFragments","ForkingFragment","scopeCommand","getCommand","commands","ScopeForkCmd","exports","CLIAspect","WorkspaceAspect","DependencyResolverAspect","ComponentAspect","NewComponentHelperAspect","GraphqlAspect","RefactoringAspect","PkgAspect","InstallAspect","MainRuntime","addRuntime"],"sources":["forking.main.runtime.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { importTransformer, exportTransformer } from '@teambit/typescript';\nimport ComponentAspect, { Component, ComponentMain } from '@teambit/component';\nimport { ComponentDependency, DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { ComponentConfig } from '@teambit/generator';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport { InstallAspect, InstallMain } from '@teambit/install';\nimport { ComponentID, ComponentIdObj, ComponentIdList } from '@teambit/component-id';\nimport NewComponentHelperAspect, { NewComponentHelperMain } from '@teambit/new-component-helper';\nimport PkgAspect, { PkgMain } from '@teambit/pkg';\nimport RefactoringAspect, { MultipleStringsReplacement, RefactoringMain } from '@teambit/refactoring';\nimport WorkspaceAspect, { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { uniqBy } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport { ForkCmd, ForkOptions } from './fork.cmd';\nimport { ForkingAspect } from './forking.aspect';\nimport { ForkingFragment } from './forking.fragment';\nimport { forkingSchema } from './forking.graphql';\nimport { ScopeForkCmd, ScopeForkOptions } from './scope-fork.cmd';\n\nexport type ForkInfo = {\n forkedFrom: ComponentID;\n};\n\ntype MultipleForkInfo = {\n targetCompId: ComponentID;\n sourceId: string;\n component: Component;\n};\n\ntype MultipleComponentsToFork = Array<{\n sourceId: string;\n targetId?: string; // if not specified, it'll be the same as the source\n targetScope?: string; // if not specified, it'll be taken from the options or from the default scope\n path?: string; // if not specified, use the default component path\n env?: string; // if not specified, use the default env\n config?: ComponentConfig; // if specified, adds to/overrides the existing config\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 ast?: boolean; // whether to use AST to transform files instead of regex\n};\n\nexport class ForkingMain {\n constructor(\n private workspace: Workspace,\n private install: InstallMain,\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 if (!this.workspace) throw new OutsideWorkspaceError();\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 ? sourceCompId : ComponentID.fromString(sourceId);\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);\n await this.saveDeps(component);\n if (!options?.skipDependencyInstallation) 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 componentsToForkSorted = this.sortComponentsToFork(componentsToFork);\n const { scope } = options;\n const results = await pMapSeries(\n componentsToForkSorted,\n async ({ sourceId, targetId, path, env, config, targetScope }) => {\n const sourceCompId = await this.workspace.resolveComponentId(sourceId);\n const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : ComponentID.fromString(sourceId);\n const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, {\n scope: targetScope || scope,\n path,\n env,\n config,\n });\n return { targetCompId, sourceId, component };\n }\n );\n await this.refactorMultipleAndInstall(results, options);\n }\n\n /**\n * sort the components to fork so that components without \"env\" prop will be forked first.\n * this way, if some components are envs, their \"env\" prop is empty and will be forked first, then components that\n * depends on them.\n * otherwise, forking the components first result in errors when loading them as their envs are missing at that point\n */\n private sortComponentsToFork(componentsToFork: MultipleComponentsToFork) {\n return componentsToFork.sort((a, b) => {\n if (a.env && b.env) return 0;\n if (a.env) return 1;\n return -1;\n });\n }\n\n private async refactorMultipleAndInstall(results: MultipleForkInfo[], options: MultipleForkOptions = {}) {\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(\n allComponents,\n stringsToReplace,\n options.ast ? [importTransformer, exportTransformer] : undefined\n );\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 /**\n * fork all components of the given scope\n */\n async forkScope(\n originalScope: string,\n newScope: string,\n pattern?: string,\n options?: ScopeForkOptions\n ): Promise<ComponentID[]> {\n const allIdsFromOriginalScope = await this.workspace.scope.listRemoteScope(originalScope);\n if (!allIdsFromOriginalScope.length) {\n throw new Error(`unable to find components to fork from ${originalScope}`);\n }\n const getPatternWithScopeName = () => {\n if (!pattern) return undefined;\n if (pattern.startsWith(`${originalScope}/`)) return pattern;\n return `${originalScope}/${pattern}`;\n };\n const patternWithScopeName = getPatternWithScopeName();\n const idsFromOriginalScope = patternWithScopeName\n ? await this.workspace.scope.filterIdsFromPoolIdsByPattern(patternWithScopeName, allIdsFromOriginalScope)\n : allIdsFromOriginalScope;\n const workspaceIds = await this.workspace.listIds();\n const workspaceBitIds = ComponentIdList.fromArray(workspaceIds.map((id) => id));\n idsFromOriginalScope.forEach((id) => {\n const existInWorkspace = workspaceBitIds.searchWithoutVersion(id);\n if (existInWorkspace) {\n throw new Error(\n `unable to fork \"${id.toString()}\". the workspace has a component \"${existInWorkspace.toString()}\" with the same name and same scope`\n );\n }\n });\n const multipleForkInfo: MultipleForkInfo[] = [];\n const components = await this.workspace.scope.getManyRemoteComponents(idsFromOriginalScope);\n await pMapSeries(components, async (component) => {\n const config = await this.getConfig(component);\n const targetCompId = ComponentID.fromObject({ name: component.id.fullName }, newScope);\n await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, { scope: newScope }, config);\n multipleForkInfo.push({ targetCompId, sourceId: component.id.toStringWithoutVersion(), component });\n });\n await this.refactorMultipleAndInstall(multipleForkInfo, {\n refactor: true,\n install: !options?.skipDependencyInstallation,\n ast: options?.ast,\n });\n return multipleForkInfo.map((info) => info.targetCompId);\n }\n\n private async forkExistingInWorkspace(existing: Component, targetId?: string, options?: ForkOptions) {\n targetId = targetId || existing.id.fullName;\n const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);\n\n const config = await this.getConfig(existing, options);\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 await this.refactoring.replaceMultipleStrings(\n [component],\n [\n {\n oldStr: sourceId.toStringWithoutVersion(),\n newStr: targetCompId.toStringWithoutVersion(),\n },\n ],\n options?.ast ? [importTransformer, exportTransformer] : undefined\n );\n if (!options?.preserve) {\n await this.refactoring.refactorVariableAndClasses(component, sourceId, targetCompId);\n this.refactoring.refactorFilenames(component, sourceId, targetCompId);\n }\n const config = await this.getConfig(component, options);\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.install.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 const excludePackages = ['@teambit/legacy'];\n const excludeCompIds = this.dependencyResolver.getCompIdsThatShouldNotBeInPolicy();\n return deps\n .filter((dep) => dep.source === 'auto')\n .filter((dep) => {\n if (dep instanceof ComponentDependency) {\n const compIdStr = dep.componentId.toStringWithoutVersion();\n return !excludeCompIds.includes(compIdStr);\n }\n return !excludePackages.includes(dep.id);\n })\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, options?: ForkOptions) {\n const config = options?.config || {};\n const fromExisting = options?.skipConfig\n ? {}\n : await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);\n const linkToOriginal = options?.noLink ? {} : { [ForkingAspect.id]: { forkedFrom: comp.id.toObject() } };\n return {\n ...fromExisting,\n ...linkToOriginal,\n ...config,\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 InstallAspect,\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 install,\n ]: [\n CLIMain,\n Workspace,\n DependencyResolverMain,\n ComponentMain,\n NewComponentHelperMain,\n GraphqlMain,\n RefactoringMain,\n PkgMain,\n InstallMain\n ]) {\n const forkingMain = new ForkingMain(workspace, install, dependencyResolver, newComponentHelper, refactoring, pkg);\n cli.register(new ForkCmd(forkingMain));\n graphql.register(forkingSchema(forkingMain));\n componentMain.registerShowFragments([new ForkingFragment(forkingMain)]);\n\n const scopeCommand = cli.getCommand('scope');\n scopeCommand?.commands?.push(new ScopeForkCmd(forkingMain));\n\n return forkingMain;\n }\n}\n\nForkingAspect.addRuntime(ForkingMain);\n\nexport type ForkConfig = {\n forkedFrom: ComponentIdObj;\n};\n"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@1.0.108/dist/forking.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@1.0.108/dist/forking.docs.mdx';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/dist/scope-fork.cmd.d.ts
CHANGED
package/fork.cmd.ts
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
import { Command, CommandOptions } from '@teambit/cli';
|
2
|
+
import { ComponentConfig } from '@teambit/generator';
|
3
|
+
import chalk from 'chalk';
|
4
|
+
import { ForkingMain } from '.';
|
5
|
+
|
6
|
+
export type ForkOptions = {
|
7
|
+
scope?: string;
|
8
|
+
path?: string;
|
9
|
+
refactor?: boolean;
|
10
|
+
skipDependencyInstallation?: boolean;
|
11
|
+
skipConfig?: boolean;
|
12
|
+
preserve?: boolean;
|
13
|
+
noLink?: boolean;
|
14
|
+
env?: string;
|
15
|
+
config?: ComponentConfig;
|
16
|
+
ast?: boolean;
|
17
|
+
};
|
18
|
+
|
19
|
+
export class ForkCmd implements Command {
|
20
|
+
name = 'fork <source-component-id> [target-component-name]';
|
21
|
+
description = 'create a new component forked from an existing one (copies source files and configs)';
|
22
|
+
helpUrl = 'docs/getting-started/collaborate/importing-components#fork-a-component';
|
23
|
+
arguments = [
|
24
|
+
{ name: 'source-component-id', description: 'the component id of the source component' },
|
25
|
+
{
|
26
|
+
name: 'target-component-name',
|
27
|
+
description:
|
28
|
+
"the name for the new component (component name without scope, e.g. name/spaces/my-button). to set a different scope, use the '--scope' flag",
|
29
|
+
},
|
30
|
+
];
|
31
|
+
group = 'collaborate';
|
32
|
+
skipWorkspace = true;
|
33
|
+
alias = '';
|
34
|
+
|
35
|
+
options = [
|
36
|
+
['s', 'scope <string>', 'default scope for the new component'],
|
37
|
+
[
|
38
|
+
'p',
|
39
|
+
'path <string>',
|
40
|
+
'relative path in the workspace for the new component. by default the path is `<scope>/<namespace>/<name>`',
|
41
|
+
],
|
42
|
+
['r', 'refactor', 'update the import/require statements in all dependent components (in the same workspace)'],
|
43
|
+
['x', 'skip-dependency-installation', 'do not install packages of the imported components'],
|
44
|
+
['e', 'env <string>', 'set the environment for the new component'],
|
45
|
+
[
|
46
|
+
'',
|
47
|
+
'skip-config',
|
48
|
+
'do not copy the config (aspects-config, env, etc) to the new component. helpful when it fails during aspect loading',
|
49
|
+
],
|
50
|
+
['', 'preserve', 'avoid refactoring file and variable/class names according to the new component name'],
|
51
|
+
['', 'no-link', 'avoid saving a reference to the original component'],
|
52
|
+
['', 'ast', 'EXPERIMENTAL. use ast to transform files instead of regex'],
|
53
|
+
] as CommandOptions;
|
54
|
+
|
55
|
+
example: [
|
56
|
+
{
|
57
|
+
cmd: 'fork teambit.base-ui/input/button ui/button';
|
58
|
+
description: "create a component named 'ui/button', forked from the remote 'input/button' component";
|
59
|
+
}
|
60
|
+
];
|
61
|
+
loader = true;
|
62
|
+
migration = true;
|
63
|
+
remoteOp = true;
|
64
|
+
|
65
|
+
constructor(private forking: ForkingMain) {}
|
66
|
+
|
67
|
+
async report([sourceId, targetId]: [string, string], options: ForkOptions): Promise<string> {
|
68
|
+
const results = await this.forking.fork(sourceId, targetId, options);
|
69
|
+
const targetIdStr = results.toString();
|
70
|
+
return chalk.green(`successfully forked ${chalk.bold(targetIdStr)} from ${chalk.bold(sourceId)}`);
|
71
|
+
}
|
72
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { Component, ShowFragment } from '@teambit/component';
|
2
|
+
import { ForkingMain } from './forking.main.runtime';
|
3
|
+
|
4
|
+
export class ForkingFragment implements ShowFragment {
|
5
|
+
constructor(private forking: ForkingMain) {}
|
6
|
+
|
7
|
+
title = 'forking';
|
8
|
+
|
9
|
+
async renderRow(component: Component) {
|
10
|
+
const forkingInfo = this.forking.getForkInfo(component);
|
11
|
+
const content = forkingInfo ? `origin: ${forkingInfo.forkedFrom.toString()}` : '';
|
12
|
+
return {
|
13
|
+
title: this.title,
|
14
|
+
content,
|
15
|
+
};
|
16
|
+
}
|
17
|
+
|
18
|
+
async json(component: Component) {
|
19
|
+
return {
|
20
|
+
title: this.title,
|
21
|
+
json: this.forking.getForkInfo(component),
|
22
|
+
};
|
23
|
+
}
|
24
|
+
|
25
|
+
weight = 3;
|
26
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { Component } from '@teambit/component';
|
2
|
+
import { Schema } from '@teambit/graphql';
|
3
|
+
import gql from 'graphql-tag';
|
4
|
+
import { ForkingMain } from './forking.main.runtime';
|
5
|
+
|
6
|
+
export function forkingSchema(forking: ForkingMain): Schema {
|
7
|
+
return {
|
8
|
+
typeDefs: gql`
|
9
|
+
extend type Component {
|
10
|
+
forking: ForkingInfo
|
11
|
+
}
|
12
|
+
|
13
|
+
type ForkingInfo {
|
14
|
+
forkedFrom: String
|
15
|
+
}
|
16
|
+
`,
|
17
|
+
resolvers: {
|
18
|
+
Component: {
|
19
|
+
forking: (component: Component) => {
|
20
|
+
const forkInfo = forking.getForkInfo(component);
|
21
|
+
return {
|
22
|
+
forkedFrom: forkInfo?.forkedFrom.toString(),
|
23
|
+
};
|
24
|
+
},
|
25
|
+
},
|
26
|
+
},
|
27
|
+
};
|
28
|
+
}
|
@@ -0,0 +1,356 @@
|
|
1
|
+
import { BitError } from '@teambit/bit-error';
|
2
|
+
import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';
|
3
|
+
import { importTransformer, exportTransformer } from '@teambit/typescript';
|
4
|
+
import ComponentAspect, { Component, ComponentMain } from '@teambit/component';
|
5
|
+
import { ComponentDependency, DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';
|
6
|
+
import { ComponentConfig } from '@teambit/generator';
|
7
|
+
import GraphqlAspect, { GraphqlMain } from '@teambit/graphql';
|
8
|
+
import { InstallAspect, InstallMain } from '@teambit/install';
|
9
|
+
import { ComponentID, ComponentIdObj, ComponentIdList } from '@teambit/component-id';
|
10
|
+
import NewComponentHelperAspect, { NewComponentHelperMain } from '@teambit/new-component-helper';
|
11
|
+
import PkgAspect, { PkgMain } from '@teambit/pkg';
|
12
|
+
import RefactoringAspect, { MultipleStringsReplacement, RefactoringMain } from '@teambit/refactoring';
|
13
|
+
import WorkspaceAspect, { OutsideWorkspaceError, Workspace } from '@teambit/workspace';
|
14
|
+
import { uniqBy } from 'lodash';
|
15
|
+
import pMapSeries from 'p-map-series';
|
16
|
+
import { ForkCmd, ForkOptions } from './fork.cmd';
|
17
|
+
import { ForkingAspect } from './forking.aspect';
|
18
|
+
import { ForkingFragment } from './forking.fragment';
|
19
|
+
import { forkingSchema } from './forking.graphql';
|
20
|
+
import { ScopeForkCmd, ScopeForkOptions } from './scope-fork.cmd';
|
21
|
+
|
22
|
+
export type ForkInfo = {
|
23
|
+
forkedFrom: ComponentID;
|
24
|
+
};
|
25
|
+
|
26
|
+
type MultipleForkInfo = {
|
27
|
+
targetCompId: ComponentID;
|
28
|
+
sourceId: string;
|
29
|
+
component: Component;
|
30
|
+
};
|
31
|
+
|
32
|
+
type MultipleComponentsToFork = Array<{
|
33
|
+
sourceId: string;
|
34
|
+
targetId?: string; // if not specified, it'll be the same as the source
|
35
|
+
targetScope?: string; // if not specified, it'll be taken from the options or from the default scope
|
36
|
+
path?: string; // if not specified, use the default component path
|
37
|
+
env?: string; // if not specified, use the default env
|
38
|
+
config?: ComponentConfig; // if specified, adds to/overrides the existing config
|
39
|
+
}>;
|
40
|
+
|
41
|
+
type MultipleForkOptions = {
|
42
|
+
refactor?: boolean;
|
43
|
+
scope?: string; // different scope-name than the original components
|
44
|
+
install?: boolean; // whether to run "bit install" once done.
|
45
|
+
ast?: boolean; // whether to use AST to transform files instead of regex
|
46
|
+
};
|
47
|
+
|
48
|
+
export class ForkingMain {
|
49
|
+
constructor(
|
50
|
+
private workspace: Workspace,
|
51
|
+
private install: InstallMain,
|
52
|
+
private dependencyResolver: DependencyResolverMain,
|
53
|
+
private newComponentHelper: NewComponentHelperMain,
|
54
|
+
private refactoring: RefactoringMain,
|
55
|
+
private pkg: PkgMain
|
56
|
+
) {}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* create a new copy of existing/remote component.
|
60
|
+
* the new component holds a reference to the old one for future reference.
|
61
|
+
* if refactor option is enable, change the source-code to update all dependencies with the new name.
|
62
|
+
*/
|
63
|
+
async fork(sourceId: string, targetId?: string, options?: ForkOptions): Promise<ComponentID> {
|
64
|
+
if (!this.workspace) throw new OutsideWorkspaceError();
|
65
|
+
const sourceCompId = await this.workspace.resolveComponentId(sourceId);
|
66
|
+
const exists = this.workspace.exists(sourceCompId);
|
67
|
+
if (exists) {
|
68
|
+
const existingInWorkspace = await this.workspace.get(sourceCompId);
|
69
|
+
return this.forkExistingInWorkspace(existingInWorkspace, targetId, options);
|
70
|
+
}
|
71
|
+
const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : ComponentID.fromString(sourceId);
|
72
|
+
const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, options);
|
73
|
+
await this.saveDeps(component);
|
74
|
+
if (!options?.skipDependencyInstallation) await this.installDeps();
|
75
|
+
return targetCompId;
|
76
|
+
}
|
77
|
+
|
78
|
+
/**
|
79
|
+
* get the forking data, such as the source where a component was forked from
|
80
|
+
*/
|
81
|
+
getForkInfo(component: Component): ForkInfo | null {
|
82
|
+
const forkConfig = component.state.aspects.get(ForkingAspect.id)?.config as ForkConfig | undefined;
|
83
|
+
if (!forkConfig) return null;
|
84
|
+
return {
|
85
|
+
forkedFrom: ComponentID.fromObject(forkConfig.forkedFrom),
|
86
|
+
};
|
87
|
+
}
|
88
|
+
|
89
|
+
async forkMultipleFromRemote(componentsToFork: MultipleComponentsToFork, options: MultipleForkOptions = {}) {
|
90
|
+
const componentsToForkSorted = this.sortComponentsToFork(componentsToFork);
|
91
|
+
const { scope } = options;
|
92
|
+
const results = await pMapSeries(
|
93
|
+
componentsToForkSorted,
|
94
|
+
async ({ sourceId, targetId, path, env, config, targetScope }) => {
|
95
|
+
const sourceCompId = await this.workspace.resolveComponentId(sourceId);
|
96
|
+
const sourceIdWithScope = sourceCompId._legacy.scope ? sourceCompId : ComponentID.fromString(sourceId);
|
97
|
+
const { targetCompId, component } = await this.forkRemoteComponent(sourceIdWithScope, targetId, {
|
98
|
+
scope: targetScope || scope,
|
99
|
+
path,
|
100
|
+
env,
|
101
|
+
config,
|
102
|
+
});
|
103
|
+
return { targetCompId, sourceId, component };
|
104
|
+
}
|
105
|
+
);
|
106
|
+
await this.refactorMultipleAndInstall(results, options);
|
107
|
+
}
|
108
|
+
|
109
|
+
/**
|
110
|
+
* sort the components to fork so that components without "env" prop will be forked first.
|
111
|
+
* this way, if some components are envs, their "env" prop is empty and will be forked first, then components that
|
112
|
+
* depends on them.
|
113
|
+
* otherwise, forking the components first result in errors when loading them as their envs are missing at that point
|
114
|
+
*/
|
115
|
+
private sortComponentsToFork(componentsToFork: MultipleComponentsToFork) {
|
116
|
+
return componentsToFork.sort((a, b) => {
|
117
|
+
if (a.env && b.env) return 0;
|
118
|
+
if (a.env) return 1;
|
119
|
+
return -1;
|
120
|
+
});
|
121
|
+
}
|
122
|
+
|
123
|
+
private async refactorMultipleAndInstall(results: MultipleForkInfo[], options: MultipleForkOptions = {}) {
|
124
|
+
const oldPackages: string[] = [];
|
125
|
+
const stringsToReplace: MultipleStringsReplacement = results
|
126
|
+
.map(({ targetCompId, sourceId, component }) => {
|
127
|
+
const oldPackageName = this.pkg.getPackageName(component);
|
128
|
+
oldPackages.push(oldPackageName);
|
129
|
+
const newName = targetCompId.fullName.replace(/\//g, '.');
|
130
|
+
const scopeToReplace = targetCompId.scope.replace('.', '/');
|
131
|
+
const newPackageName = `@${scopeToReplace}.${newName}`;
|
132
|
+
return [
|
133
|
+
{ oldStr: oldPackageName, newStr: newPackageName },
|
134
|
+
{ oldStr: sourceId, newStr: targetCompId.toStringWithoutVersion() },
|
135
|
+
];
|
136
|
+
})
|
137
|
+
.flat();
|
138
|
+
const allComponents = await this.workspace.list();
|
139
|
+
if (options.refactor) {
|
140
|
+
const { changedComponents } = await this.refactoring.replaceMultipleStrings(
|
141
|
+
allComponents,
|
142
|
+
stringsToReplace,
|
143
|
+
options.ast ? [importTransformer, exportTransformer] : undefined
|
144
|
+
);
|
145
|
+
await Promise.all(changedComponents.map((comp) => this.workspace.write(comp)));
|
146
|
+
}
|
147
|
+
const forkedComponents = results.map((result) => result.component);
|
148
|
+
const policy = await Promise.all(forkedComponents.map((comp) => this.extractDeps(comp)));
|
149
|
+
const policyFlatAndUnique = uniqBy(policy.flat(), 'dependencyId');
|
150
|
+
const policyWithoutWorkspaceComps = policyFlatAndUnique.filter((dep) => !oldPackages.includes(dep.dependencyId));
|
151
|
+
this.dependencyResolver.addToRootPolicy(policyWithoutWorkspaceComps, { updateExisting: true });
|
152
|
+
await this.dependencyResolver.persistConfig(this.workspace.path);
|
153
|
+
if (options.install) {
|
154
|
+
await this.installDeps();
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
/**
|
159
|
+
* fork all components of the given scope
|
160
|
+
*/
|
161
|
+
async forkScope(
|
162
|
+
originalScope: string,
|
163
|
+
newScope: string,
|
164
|
+
pattern?: string,
|
165
|
+
options?: ScopeForkOptions
|
166
|
+
): Promise<ComponentID[]> {
|
167
|
+
const allIdsFromOriginalScope = await this.workspace.scope.listRemoteScope(originalScope);
|
168
|
+
if (!allIdsFromOriginalScope.length) {
|
169
|
+
throw new Error(`unable to find components to fork from ${originalScope}`);
|
170
|
+
}
|
171
|
+
const getPatternWithScopeName = () => {
|
172
|
+
if (!pattern) return undefined;
|
173
|
+
if (pattern.startsWith(`${originalScope}/`)) return pattern;
|
174
|
+
return `${originalScope}/${pattern}`;
|
175
|
+
};
|
176
|
+
const patternWithScopeName = getPatternWithScopeName();
|
177
|
+
const idsFromOriginalScope = patternWithScopeName
|
178
|
+
? await this.workspace.scope.filterIdsFromPoolIdsByPattern(patternWithScopeName, allIdsFromOriginalScope)
|
179
|
+
: allIdsFromOriginalScope;
|
180
|
+
const workspaceIds = await this.workspace.listIds();
|
181
|
+
const workspaceBitIds = ComponentIdList.fromArray(workspaceIds.map((id) => id));
|
182
|
+
idsFromOriginalScope.forEach((id) => {
|
183
|
+
const existInWorkspace = workspaceBitIds.searchWithoutVersion(id);
|
184
|
+
if (existInWorkspace) {
|
185
|
+
throw new Error(
|
186
|
+
`unable to fork "${id.toString()}". the workspace has a component "${existInWorkspace.toString()}" with the same name and same scope`
|
187
|
+
);
|
188
|
+
}
|
189
|
+
});
|
190
|
+
const multipleForkInfo: MultipleForkInfo[] = [];
|
191
|
+
const components = await this.workspace.scope.getManyRemoteComponents(idsFromOriginalScope);
|
192
|
+
await pMapSeries(components, async (component) => {
|
193
|
+
const config = await this.getConfig(component);
|
194
|
+
const targetCompId = ComponentID.fromObject({ name: component.id.fullName }, newScope);
|
195
|
+
await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, { scope: newScope }, config);
|
196
|
+
multipleForkInfo.push({ targetCompId, sourceId: component.id.toStringWithoutVersion(), component });
|
197
|
+
});
|
198
|
+
await this.refactorMultipleAndInstall(multipleForkInfo, {
|
199
|
+
refactor: true,
|
200
|
+
install: !options?.skipDependencyInstallation,
|
201
|
+
ast: options?.ast,
|
202
|
+
});
|
203
|
+
return multipleForkInfo.map((info) => info.targetCompId);
|
204
|
+
}
|
205
|
+
|
206
|
+
private async forkExistingInWorkspace(existing: Component, targetId?: string, options?: ForkOptions) {
|
207
|
+
targetId = targetId || existing.id.fullName;
|
208
|
+
const targetCompId = this.newComponentHelper.getNewComponentId(targetId, undefined, options?.scope);
|
209
|
+
|
210
|
+
const config = await this.getConfig(existing, options);
|
211
|
+
await this.newComponentHelper.writeAndAddNewComp(existing, targetCompId, options, config);
|
212
|
+
if (options?.refactor) {
|
213
|
+
const allComponents = await this.workspace.list();
|
214
|
+
const { changedComponents } = await this.refactoring.refactorDependencyName(allComponents, existing.id, targetId);
|
215
|
+
await Promise.all(changedComponents.map((comp) => this.workspace.write(comp)));
|
216
|
+
}
|
217
|
+
return targetCompId;
|
218
|
+
}
|
219
|
+
|
220
|
+
private async forkRemoteComponent(
|
221
|
+
sourceId: ComponentID,
|
222
|
+
targetId?: string,
|
223
|
+
options?: ForkOptions
|
224
|
+
): Promise<{
|
225
|
+
targetCompId: ComponentID;
|
226
|
+
component: Component;
|
227
|
+
}> {
|
228
|
+
if (options?.refactor) {
|
229
|
+
throw new BitError(`the component ${sourceId.toStringWithoutVersion()} is not in the workspace, you can't use the --refactor flag.
|
230
|
+
the 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`);
|
231
|
+
}
|
232
|
+
const targetName = targetId || sourceId.fullName;
|
233
|
+
const targetCompId = this.newComponentHelper.getNewComponentId(targetName, undefined, options?.scope);
|
234
|
+
const component = await this.workspace.scope.getRemoteComponent(sourceId);
|
235
|
+
await this.refactoring.replaceMultipleStrings(
|
236
|
+
[component],
|
237
|
+
[
|
238
|
+
{
|
239
|
+
oldStr: sourceId.toStringWithoutVersion(),
|
240
|
+
newStr: targetCompId.toStringWithoutVersion(),
|
241
|
+
},
|
242
|
+
],
|
243
|
+
options?.ast ? [importTransformer, exportTransformer] : undefined
|
244
|
+
);
|
245
|
+
if (!options?.preserve) {
|
246
|
+
await this.refactoring.refactorVariableAndClasses(component, sourceId, targetCompId);
|
247
|
+
this.refactoring.refactorFilenames(component, sourceId, targetCompId);
|
248
|
+
}
|
249
|
+
const config = await this.getConfig(component, options);
|
250
|
+
await this.newComponentHelper.writeAndAddNewComp(component, targetCompId, options, config);
|
251
|
+
|
252
|
+
return { targetCompId, component };
|
253
|
+
}
|
254
|
+
|
255
|
+
private async saveDeps(component: Component) {
|
256
|
+
const workspacePolicyEntries = await this.extractDeps(component);
|
257
|
+
this.dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });
|
258
|
+
await this.dependencyResolver.persistConfig(this.workspace.path);
|
259
|
+
}
|
260
|
+
|
261
|
+
private async installDeps() {
|
262
|
+
await this.install.install(undefined, {
|
263
|
+
dedupe: true,
|
264
|
+
import: false,
|
265
|
+
copyPeerToRuntimeOnRoot: true,
|
266
|
+
copyPeerToRuntimeOnComponents: false,
|
267
|
+
updateExisting: false,
|
268
|
+
});
|
269
|
+
}
|
270
|
+
|
271
|
+
private async extractDeps(component: Component) {
|
272
|
+
const deps = await this.dependencyResolver.getDependencies(component);
|
273
|
+
const excludePackages = ['@teambit/legacy'];
|
274
|
+
const excludeCompIds = this.dependencyResolver.getCompIdsThatShouldNotBeInPolicy();
|
275
|
+
return deps
|
276
|
+
.filter((dep) => dep.source === 'auto')
|
277
|
+
.filter((dep) => {
|
278
|
+
if (dep instanceof ComponentDependency) {
|
279
|
+
const compIdStr = dep.componentId.toStringWithoutVersion();
|
280
|
+
return !excludeCompIds.includes(compIdStr);
|
281
|
+
}
|
282
|
+
return !excludePackages.includes(dep.id);
|
283
|
+
})
|
284
|
+
.map((dep) => ({
|
285
|
+
dependencyId: dep.getPackageName?.() || dep.id,
|
286
|
+
lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,
|
287
|
+
value: {
|
288
|
+
version: dep.version,
|
289
|
+
},
|
290
|
+
}));
|
291
|
+
}
|
292
|
+
|
293
|
+
private async getConfig(comp: Component, options?: ForkOptions) {
|
294
|
+
const config = options?.config || {};
|
295
|
+
const fromExisting = options?.skipConfig
|
296
|
+
? {}
|
297
|
+
: await this.newComponentHelper.getConfigFromExistingToNewComponent(comp);
|
298
|
+
const linkToOriginal = options?.noLink ? {} : { [ForkingAspect.id]: { forkedFrom: comp.id.toObject() } };
|
299
|
+
return {
|
300
|
+
...fromExisting,
|
301
|
+
...linkToOriginal,
|
302
|
+
...config,
|
303
|
+
};
|
304
|
+
}
|
305
|
+
|
306
|
+
static slots = [];
|
307
|
+
static dependencies = [
|
308
|
+
CLIAspect,
|
309
|
+
WorkspaceAspect,
|
310
|
+
DependencyResolverAspect,
|
311
|
+
ComponentAspect,
|
312
|
+
NewComponentHelperAspect,
|
313
|
+
GraphqlAspect,
|
314
|
+
RefactoringAspect,
|
315
|
+
PkgAspect,
|
316
|
+
InstallAspect,
|
317
|
+
];
|
318
|
+
static runtime = MainRuntime;
|
319
|
+
static async provider([
|
320
|
+
cli,
|
321
|
+
workspace,
|
322
|
+
dependencyResolver,
|
323
|
+
componentMain,
|
324
|
+
newComponentHelper,
|
325
|
+
graphql,
|
326
|
+
refactoring,
|
327
|
+
pkg,
|
328
|
+
install,
|
329
|
+
]: [
|
330
|
+
CLIMain,
|
331
|
+
Workspace,
|
332
|
+
DependencyResolverMain,
|
333
|
+
ComponentMain,
|
334
|
+
NewComponentHelperMain,
|
335
|
+
GraphqlMain,
|
336
|
+
RefactoringMain,
|
337
|
+
PkgMain,
|
338
|
+
InstallMain
|
339
|
+
]) {
|
340
|
+
const forkingMain = new ForkingMain(workspace, install, dependencyResolver, newComponentHelper, refactoring, pkg);
|
341
|
+
cli.register(new ForkCmd(forkingMain));
|
342
|
+
graphql.register(forkingSchema(forkingMain));
|
343
|
+
componentMain.registerShowFragments([new ForkingFragment(forkingMain)]);
|
344
|
+
|
345
|
+
const scopeCommand = cli.getCommand('scope');
|
346
|
+
scopeCommand?.commands?.push(new ScopeForkCmd(forkingMain));
|
347
|
+
|
348
|
+
return forkingMain;
|
349
|
+
}
|
350
|
+
}
|
351
|
+
|
352
|
+
ForkingAspect.addRuntime(ForkingMain);
|
353
|
+
|
354
|
+
export type ForkConfig = {
|
355
|
+
forkedFrom: ComponentIdObj;
|
356
|
+
};
|
package/index.ts
ADDED
package/package.json
CHANGED
@@ -1,48 +1,44 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/forking",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.108",
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/forking",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "forking",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.108"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
13
13
|
"graphql-tag": "2.12.1",
|
14
14
|
"lodash": "4.17.21",
|
15
15
|
"p-map-series": "2.1.0",
|
16
|
-
"core-js": "^3.0.0",
|
17
|
-
"@babel/runtime": "7.20.0",
|
18
16
|
"@teambit/harmony": "0.4.6",
|
19
17
|
"@teambit/bit-error": "0.0.404",
|
20
18
|
"@teambit/component-id": "1.2.0",
|
21
|
-
"@teambit/cli": "0.0.
|
22
|
-
"@teambit/generator": "1.0.
|
23
|
-
"@teambit/component": "1.0.
|
24
|
-
"@teambit/graphql": "1.0.
|
25
|
-
"@teambit/dependency-resolver": "1.0.
|
26
|
-
"@teambit/install": "1.0.
|
27
|
-
"@teambit/new-component-helper": "1.0.
|
28
|
-
"@teambit/pkg": "1.0.
|
29
|
-
"@teambit/refactoring": "1.0.
|
30
|
-
"@teambit/typescript": "1.0.
|
31
|
-
"@teambit/workspace": "1.0.
|
19
|
+
"@teambit/cli": "0.0.840",
|
20
|
+
"@teambit/generator": "1.0.109",
|
21
|
+
"@teambit/component": "1.0.108",
|
22
|
+
"@teambit/graphql": "1.0.108",
|
23
|
+
"@teambit/dependency-resolver": "1.0.108",
|
24
|
+
"@teambit/install": "1.0.108",
|
25
|
+
"@teambit/new-component-helper": "1.0.108",
|
26
|
+
"@teambit/pkg": "1.0.108",
|
27
|
+
"@teambit/refactoring": "1.0.108",
|
28
|
+
"@teambit/typescript": "1.0.108",
|
29
|
+
"@teambit/workspace": "1.0.108"
|
32
30
|
},
|
33
31
|
"devDependencies": {
|
34
|
-
"@types/react": "^17.0.8",
|
35
32
|
"@types/lodash": "4.14.165",
|
36
33
|
"@types/mocha": "9.1.0",
|
37
|
-
"@types/
|
38
|
-
"@types/
|
39
|
-
"@
|
40
|
-
"@types/testing-library__jest-dom": "5.9.5"
|
34
|
+
"@types/jest": "^29.2.2",
|
35
|
+
"@types/testing-library__jest-dom": "^5.9.5",
|
36
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.13"
|
41
37
|
},
|
42
38
|
"peerDependencies": {
|
43
|
-
"
|
44
|
-
"react": "^
|
45
|
-
"
|
39
|
+
"react": "^17.0.0 || ^18.0.0",
|
40
|
+
"@types/react": "^18.2.12",
|
41
|
+
"@teambit/legacy": "1.0.624"
|
46
42
|
},
|
47
43
|
"license": "Apache-2.0",
|
48
44
|
"optionalDependencies": {},
|
@@ -56,7 +52,7 @@
|
|
56
52
|
},
|
57
53
|
"private": false,
|
58
54
|
"engines": {
|
59
|
-
"node": ">=
|
55
|
+
"node": ">=16.0.0"
|
60
56
|
},
|
61
57
|
"repository": {
|
62
58
|
"type": "git",
|
@@ -65,12 +61,9 @@
|
|
65
61
|
"keywords": [
|
66
62
|
"bit",
|
67
63
|
"bit-aspect",
|
64
|
+
"bit-core-aspect",
|
68
65
|
"components",
|
69
66
|
"collaboration",
|
70
|
-
"web"
|
71
|
-
"react",
|
72
|
-
"react-components",
|
73
|
-
"angular",
|
74
|
-
"angular-components"
|
67
|
+
"web"
|
75
68
|
]
|
76
69
|
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { Command, CommandOptions } from '@teambit/cli';
|
2
|
+
import { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';
|
3
|
+
import chalk from 'chalk';
|
4
|
+
import { ForkingMain } from './forking.main.runtime';
|
5
|
+
|
6
|
+
export type ScopeForkOptions = {
|
7
|
+
ast?: boolean;
|
8
|
+
skipDependencyInstallation?: boolean;
|
9
|
+
};
|
10
|
+
export class ScopeForkCmd implements Command {
|
11
|
+
name = 'fork <original-scope> <new-scope> [pattern]';
|
12
|
+
arguments = [
|
13
|
+
{
|
14
|
+
name: 'original-scope',
|
15
|
+
description: 'the original scope to fork',
|
16
|
+
},
|
17
|
+
{
|
18
|
+
name: 'new-scope',
|
19
|
+
description: 'the new scope to fork to',
|
20
|
+
},
|
21
|
+
{
|
22
|
+
name: 'pattern',
|
23
|
+
description: COMPONENT_PATTERN_HELP,
|
24
|
+
},
|
25
|
+
];
|
26
|
+
description = 'fork all components of the original-scope and refactor the source-code to use the new scope name';
|
27
|
+
extendedDescription = 'optionally, provide [pattern] to limit the fork to specific components';
|
28
|
+
options = [
|
29
|
+
['', 'ast', 'EXPERIMENTAL. use ast to transform files instead of regex'],
|
30
|
+
['x', 'skip-dependency-installation', 'do not install packages of the imported components'],
|
31
|
+
] as CommandOptions;
|
32
|
+
group = 'development';
|
33
|
+
|
34
|
+
constructor(private forking: ForkingMain) {}
|
35
|
+
|
36
|
+
async report([originalScope, newScope, pattern]: [string, string, string], options: ScopeForkOptions) {
|
37
|
+
const forkedIds = await this.forking.forkScope(originalScope, newScope, pattern, options);
|
38
|
+
const title = chalk.green(
|
39
|
+
`successfully forked ${chalk.bold(originalScope)} into ${chalk.bold(
|
40
|
+
newScope
|
41
|
+
)}. the following components were created`
|
42
|
+
);
|
43
|
+
return `${title}\n${forkedIds.map((id) => id.toString()).join('\n')}`;
|
44
|
+
}
|
45
|
+
}
|
package/tsconfig.json
CHANGED
@@ -1,38 +1,33 @@
|
|
1
1
|
{
|
2
2
|
"compilerOptions": {
|
3
3
|
"lib": [
|
4
|
-
"
|
5
|
-
"
|
6
|
-
"
|
7
|
-
"DOM.Iterable",
|
8
|
-
"ScriptHost"
|
4
|
+
"esnext",
|
5
|
+
"dom",
|
6
|
+
"dom.Iterable"
|
9
7
|
],
|
10
|
-
"target": "
|
11
|
-
"module": "
|
12
|
-
"jsx": "react",
|
13
|
-
"allowJs": true,
|
14
|
-
"composite": true,
|
8
|
+
"target": "es2020",
|
9
|
+
"module": "es2020",
|
10
|
+
"jsx": "react-jsx",
|
15
11
|
"declaration": true,
|
16
12
|
"sourceMap": true,
|
17
|
-
"skipLibCheck": true,
|
18
13
|
"experimentalDecorators": true,
|
19
|
-
"
|
14
|
+
"skipLibCheck": true,
|
20
15
|
"moduleResolution": "node",
|
21
16
|
"esModuleInterop": true,
|
22
|
-
"rootDir": ".",
|
23
17
|
"resolveJsonModule": true,
|
24
|
-
"
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"strictPropertyInitialization": false,
|
28
|
-
"strict": true,
|
29
|
-
"noImplicitAny": false,
|
30
|
-
"preserveConstEnums": true
|
18
|
+
"allowJs": true,
|
19
|
+
"outDir": "dist",
|
20
|
+
"emitDeclarationOnly": true
|
31
21
|
},
|
32
22
|
"exclude": [
|
23
|
+
"artifacts",
|
24
|
+
"public",
|
33
25
|
"dist",
|
26
|
+
"node_modules",
|
27
|
+
"package.json",
|
34
28
|
"esm.mjs",
|
35
|
-
"
|
29
|
+
"**/*.cjs",
|
30
|
+
"./dist"
|
36
31
|
],
|
37
32
|
"include": [
|
38
33
|
"**/*",
|
package/types/asset.d.ts
CHANGED
@@ -5,12 +5,12 @@ declare module '*.png' {
|
|
5
5
|
declare module '*.svg' {
|
6
6
|
import type { FunctionComponent, SVGProps } from 'react';
|
7
7
|
|
8
|
-
export const ReactComponent: FunctionComponent<
|
8
|
+
export const ReactComponent: FunctionComponent<
|
9
|
+
SVGProps<SVGSVGElement> & { title?: string }
|
10
|
+
>;
|
9
11
|
const src: string;
|
10
12
|
export default src;
|
11
13
|
}
|
12
|
-
|
13
|
-
// @TODO Gilad
|
14
14
|
declare module '*.jpg' {
|
15
15
|
const value: any;
|
16
16
|
export = value;
|
@@ -27,3 +27,15 @@ declare module '*.bmp' {
|
|
27
27
|
const value: any;
|
28
28
|
export = value;
|
29
29
|
}
|
30
|
+
declare module '*.otf' {
|
31
|
+
const value: any;
|
32
|
+
export = value;
|
33
|
+
}
|
34
|
+
declare module '*.woff' {
|
35
|
+
const value: any;
|
36
|
+
export = value;
|
37
|
+
}
|
38
|
+
declare module '*.woff2' {
|
39
|
+
const value: any;
|
40
|
+
export = value;
|
41
|
+
}
|