@teambit/forking 0.0.118 → 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.
- package/dist/forking.main.runtime.d.ts +30 -4
- package/dist/forking.main.runtime.js +159 -26
- package/dist/forking.main.runtime.js.map +1 -1
- package/package-tar/teambit-forking-0.0.119.tgz +0 -0
- package/package.json +12 -8
- package/{preview-1650684349376.js → preview-1650770571653.js} +2 -2
- package/package-tar/teambit-forking-0.0.118.tgz +0 -0
@@ -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
|
-
|
19
|
-
|
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
|
-
|
171
|
-
|
172
|
-
const
|
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(
|
220
|
+
const existingInWorkspace = await this.workspace.get(sourceCompId);
|
176
221
|
return this.forkExistingInWorkspace(existingInWorkspace, targetId, options);
|
177
222
|
}
|
178
223
|
|
179
|
-
const sourceIdWithScope =
|
180
|
-
|
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
|
223
|
-
const
|
224
|
-
|
225
|
-
|
226
|
-
|
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
|
-
|
229
|
-
|
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
|
-
|
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"]}
|
Binary file
|
package/package.json
CHANGED
@@ -1,32 +1,36 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/forking",
|
3
|
-
"version": "0.0.
|
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.
|
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
19
|
"@teambit/cli": "0.0.476",
|
18
|
-
"@teambit/component": "0.0.
|
19
|
-
"@teambit/graphql": "0.0.
|
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.
|
24
|
+
"@teambit/dependency-resolver": "0.0.715",
|
23
25
|
"@teambit/legacy-bit-id": "0.0.399",
|
24
|
-
"@teambit/new-component-helper": "0.0.
|
25
|
-
"@teambit/
|
26
|
-
"@teambit/
|
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",
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_forking@0.0.
|
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')]
|
Binary file
|