@teambit/generator 0.0.714 → 0.0.715
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/workspace-generator.d.ts +1 -4
- package/dist/workspace-generator.js +21 -152
- package/dist/workspace-generator.js.map +1 -1
- package/package-tar/teambit-generator-0.0.715.tgz +0 -0
- package/package.json +13 -16
- package/{preview-1650684349376.js → preview-1650770571653.js} +2 -2
- package/package-tar/teambit-generator-0.0.714.tgz +0 -0
|
@@ -18,6 +18,7 @@ export declare class WorkspaceGenerator {
|
|
|
18
18
|
private workspace;
|
|
19
19
|
private importer;
|
|
20
20
|
private logger;
|
|
21
|
+
private forking;
|
|
21
22
|
constructor(workspaceName: string, options: NewOptions, template: WorkspaceTemplate, aspectComponent?: Component | undefined);
|
|
22
23
|
generate(): Promise<string>;
|
|
23
24
|
private initGit;
|
|
@@ -30,8 +31,4 @@ export declare class WorkspaceGenerator {
|
|
|
30
31
|
private forkComponentsFromRemote;
|
|
31
32
|
private importComponentsFromRemote;
|
|
32
33
|
private compileComponents;
|
|
33
|
-
private getNewPackageNames;
|
|
34
|
-
private getNewComponentIds;
|
|
35
|
-
private resolveNewCompId;
|
|
36
|
-
private replaceOriginalPackageNameWithNew;
|
|
37
34
|
}
|
|
@@ -6,12 +6,6 @@ require("core-js/modules/es.array.iterator.js");
|
|
|
6
6
|
|
|
7
7
|
require("core-js/modules/es.promise.js");
|
|
8
8
|
|
|
9
|
-
require("core-js/modules/es.regexp.constructor.js");
|
|
10
|
-
|
|
11
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
12
|
-
|
|
13
|
-
require("core-js/modules/es.string.replace.js");
|
|
14
|
-
|
|
15
9
|
Object.defineProperty(exports, "__esModule", {
|
|
16
10
|
value: true
|
|
17
11
|
});
|
|
@@ -37,16 +31,6 @@ function _fsExtra() {
|
|
|
37
31
|
return data;
|
|
38
32
|
}
|
|
39
33
|
|
|
40
|
-
function _isbinaryfile() {
|
|
41
|
-
const data = require("isbinaryfile");
|
|
42
|
-
|
|
43
|
-
_isbinaryfile = function () {
|
|
44
|
-
return data;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
34
|
function _bit() {
|
|
51
35
|
const data = require("@teambit/bit");
|
|
52
36
|
|
|
@@ -67,16 +51,6 @@ function _execa() {
|
|
|
67
51
|
return data;
|
|
68
52
|
}
|
|
69
53
|
|
|
70
|
-
function _legacyBitId() {
|
|
71
|
-
const data = require("@teambit/legacy-bit-id");
|
|
72
|
-
|
|
73
|
-
_legacyBitId = function () {
|
|
74
|
-
return data;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
return data;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
54
|
function _pMapSeries() {
|
|
81
55
|
const data = _interopRequireDefault(require("p-map-series"));
|
|
82
56
|
|
|
@@ -117,10 +91,10 @@ function _workspace() {
|
|
|
117
91
|
return data;
|
|
118
92
|
}
|
|
119
93
|
|
|
120
|
-
function
|
|
121
|
-
const data = require("@teambit/
|
|
94
|
+
function _forking() {
|
|
95
|
+
const data = _interopRequireDefault(require("@teambit/forking"));
|
|
122
96
|
|
|
123
|
-
|
|
97
|
+
_forking = function () {
|
|
124
98
|
return data;
|
|
125
99
|
};
|
|
126
100
|
|
|
@@ -178,7 +152,7 @@ function _gitNotFound() {
|
|
|
178
152
|
}
|
|
179
153
|
|
|
180
154
|
function _path() {
|
|
181
|
-
const data =
|
|
155
|
+
const data = require("path");
|
|
182
156
|
|
|
183
157
|
_path = function () {
|
|
184
158
|
return data;
|
|
@@ -187,26 +161,6 @@ function _path() {
|
|
|
187
161
|
return data;
|
|
188
162
|
}
|
|
189
163
|
|
|
190
|
-
function _dependencyResolver() {
|
|
191
|
-
const data = require("@teambit/dependency-resolver");
|
|
192
|
-
|
|
193
|
-
_dependencyResolver = function () {
|
|
194
|
-
return data;
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
return data;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
function _componentId() {
|
|
201
|
-
const data = require("@teambit/component-id");
|
|
202
|
-
|
|
203
|
-
_componentId = function () {
|
|
204
|
-
return data;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
return data;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
164
|
function _generator() {
|
|
211
165
|
const data = require("./generator.aspect");
|
|
212
166
|
|
|
@@ -228,7 +182,8 @@ class WorkspaceGenerator {
|
|
|
228
182
|
(0, _defineProperty2().default)(this, "workspace", void 0);
|
|
229
183
|
(0, _defineProperty2().default)(this, "importer", void 0);
|
|
230
184
|
(0, _defineProperty2().default)(this, "logger", void 0);
|
|
231
|
-
|
|
185
|
+
(0, _defineProperty2().default)(this, "forking", void 0);
|
|
186
|
+
this.workspacePath = (0, _path().resolve)(this.workspaceName);
|
|
232
187
|
}
|
|
233
188
|
|
|
234
189
|
async generate() {
|
|
@@ -295,7 +250,7 @@ class WorkspaceGenerator {
|
|
|
295
250
|
};
|
|
296
251
|
const templateFiles = await this.template.generateFiles(workspaceContext);
|
|
297
252
|
await Promise.all(templateFiles.map(async templateFile => {
|
|
298
|
-
await _fsExtra().default.outputFile(_path().
|
|
253
|
+
await _fsExtra().default.outputFile((0, _path().join)(this.workspacePath, templateFile.relativePath), templateFile.content);
|
|
299
254
|
}));
|
|
300
255
|
}
|
|
301
256
|
|
|
@@ -305,6 +260,7 @@ class WorkspaceGenerator {
|
|
|
305
260
|
const loggerMain = this.harmony.get(_logger().LoggerAspect.id);
|
|
306
261
|
this.logger = loggerMain.createLogger(_generator().GeneratorAspect.id);
|
|
307
262
|
this.importer = this.harmony.get(_importer().default.id);
|
|
263
|
+
this.forking = this.harmony.get(_forking().default.id);
|
|
308
264
|
}
|
|
309
265
|
|
|
310
266
|
async forkComponentsFromRemote() {
|
|
@@ -313,48 +269,20 @@ class WorkspaceGenerator {
|
|
|
313
269
|
if (this.options.empty) return;
|
|
314
270
|
const componentsToFork = ((_this$template = this.template) === null || _this$template === void 0 ? void 0 : (_this$template$import = _this$template.importComponents) === null || _this$template$import === void 0 ? void 0 : _this$template$import.call(_this$template)) || ((_this$template2 = this.template) === null || _this$template2 === void 0 ? void 0 : (_this$template2$fork = _this$template2.fork) === null || _this$template2$fork === void 0 ? void 0 : _this$template2$fork.call(_this$template2)) || [];
|
|
315
271
|
if (!componentsToFork.length) return;
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
path
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
const compData = componentsToImportResolved.find(c => c.id._legacy.isEqualWithoutVersion(comp.id._legacy));
|
|
330
|
-
if (!compData) throw new Error(`workspace-generator, unable to find ${comp.id.toString()} in the given ids`);
|
|
331
|
-
await this.workspace.write(comp, compData.path);
|
|
332
|
-
await this.workspace.track({
|
|
333
|
-
rootDir: compData.path,
|
|
334
|
-
componentName: compData.targetName || compData.id.fullName,
|
|
335
|
-
mainFile: comp.state._consumer.mainFile
|
|
336
|
-
});
|
|
337
|
-
const deps = await dependencyResolver.getDependencies(comp);
|
|
338
|
-
const currentPackages = Object.keys(oldAndNewPackageNames); // only bring auto-resolved dependencies, others should be set in the workspace.jsonc template
|
|
339
|
-
|
|
340
|
-
const workspacePolicyEntries = deps.filter(dep => dep.source === 'auto').map(dep => {
|
|
341
|
-
var _dep$getPackageName;
|
|
342
|
-
|
|
343
|
-
return {
|
|
344
|
-
dependencyId: ((_dep$getPackageName = dep.getPackageName) === null || _dep$getPackageName === void 0 ? void 0 : _dep$getPackageName.call(dep)) || dep.id,
|
|
345
|
-
lifecycleType: dep.lifecycle === 'dev' ? 'runtime' : dep.lifecycle,
|
|
346
|
-
value: {
|
|
347
|
-
version: dep.version
|
|
348
|
-
}
|
|
349
|
-
};
|
|
350
|
-
}).filter(entry => !currentPackages.includes(entry.dependencyId)); // remove components that are now imported
|
|
351
|
-
|
|
352
|
-
dependencyResolver.addToRootPolicy(workspacePolicyEntries, {
|
|
353
|
-
updateExisting: true
|
|
354
|
-
});
|
|
272
|
+
const componentsToForkRestructured = componentsToFork.map(({
|
|
273
|
+
id,
|
|
274
|
+
targetName,
|
|
275
|
+
path
|
|
276
|
+
}) => ({
|
|
277
|
+
sourceId: id,
|
|
278
|
+
targetId: targetName,
|
|
279
|
+
path
|
|
280
|
+
}));
|
|
281
|
+
await this.forking.forkMultipleFromRemote(componentsToForkRestructured, {
|
|
282
|
+
scope: this.workspace.defaultScope,
|
|
283
|
+
refactor: true,
|
|
284
|
+
install: false
|
|
355
285
|
});
|
|
356
|
-
await this.workspace.bitMap.write();
|
|
357
|
-
await dependencyResolver.persistConfig(this.workspace.path);
|
|
358
286
|
this.workspace.clearCache();
|
|
359
287
|
await this.compileComponents();
|
|
360
288
|
}
|
|
@@ -387,65 +315,6 @@ class WorkspaceGenerator {
|
|
|
387
315
|
await compiler.compileOnWorkspace();
|
|
388
316
|
}
|
|
389
317
|
|
|
390
|
-
getNewPackageNames(components, compsData) {
|
|
391
|
-
const pkg = this.harmony.get(_pkg().PkgAspect.id);
|
|
392
|
-
const packageToReplace = {};
|
|
393
|
-
const scopeToReplace = this.workspace.defaultScope.replace('.', '/');
|
|
394
|
-
components.forEach(comp => {
|
|
395
|
-
const newId = this.resolveNewCompId(comp, compsData);
|
|
396
|
-
const currentPackageName = pkg.getPackageName(comp);
|
|
397
|
-
const newName = newId.fullName.replace(/\//g, '.');
|
|
398
|
-
const newPackageName = `@${scopeToReplace}.${newName}`;
|
|
399
|
-
packageToReplace[currentPackageName] = newPackageName;
|
|
400
|
-
});
|
|
401
|
-
return packageToReplace;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
getNewComponentIds(components, compsData) {
|
|
405
|
-
const componentToReplace = {};
|
|
406
|
-
components.forEach(comp => {
|
|
407
|
-
const newId = this.resolveNewCompId(comp, compsData);
|
|
408
|
-
componentToReplace[comp.id.toStringWithoutVersion()] = newId.toStringWithoutVersion();
|
|
409
|
-
});
|
|
410
|
-
return componentToReplace;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
resolveNewCompId(comp, compsData) {
|
|
414
|
-
const scopeToReplace = this.workspace.defaultScope;
|
|
415
|
-
const compData = compsData.find(c => c.id._legacy.isEqualWithoutScopeAndVersion(comp.id._legacy));
|
|
416
|
-
|
|
417
|
-
if (!compData) {
|
|
418
|
-
throw new Error(`workspace-generator: unable to find data for "${comp.id._legacy.toString()}"`);
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
return compData.targetName ? _componentId().ComponentID.fromLegacy(_legacyBitId().BitId.parse(compData.targetName, false).changeScope(scopeToReplace)) : comp.id.changeScope(scopeToReplace);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
async replaceOriginalPackageNameWithNew(comp, packageToReplace, oldAndNewComponentIds) {
|
|
425
|
-
await Promise.all(comp.filesystem.files.map(async file => {
|
|
426
|
-
const isBinary = await (0, _isbinaryfile().isBinaryFile)(file.contents);
|
|
427
|
-
if (isBinary) return;
|
|
428
|
-
const strContent = file.contents.toString();
|
|
429
|
-
let newContent = strContent;
|
|
430
|
-
Object.keys(packageToReplace).forEach(currentPackage => {
|
|
431
|
-
if (strContent.includes(currentPackage)) {
|
|
432
|
-
const currentPkgRegex = new RegExp(currentPackage, 'g');
|
|
433
|
-
newContent = newContent.replace(currentPkgRegex, packageToReplace[currentPackage]);
|
|
434
|
-
}
|
|
435
|
-
});
|
|
436
|
-
Object.keys(oldAndNewComponentIds).forEach(currentId => {
|
|
437
|
-
if (strContent.includes(currentId)) {
|
|
438
|
-
const currentIdRegex = new RegExp(currentId, 'g');
|
|
439
|
-
newContent = newContent.replace(currentIdRegex, oldAndNewComponentIds[currentId]);
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
|
|
443
|
-
if (strContent !== newContent) {
|
|
444
|
-
file.contents = Buffer.from(newContent);
|
|
445
|
-
}
|
|
446
|
-
}));
|
|
447
|
-
}
|
|
448
|
-
|
|
449
318
|
}
|
|
450
319
|
|
|
451
320
|
exports.WorkspaceGenerator = WorkspaceGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["workspace-generator.ts"],"names":["WorkspaceGenerator","constructor","workspaceName","options","template","aspectComponent","workspacePath","path","resolve","generate","fs","existsSync","Error","ensureDir","process","chdir","initGit","skipGit","writeWorkspaceFiles","reloadBitInWorkspaceDir","forkComponentsFromRemote","importComponentsFromRemote","workspace","install","undefined","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","updateExisting","err","remove","gitExecutablePath","params","exitCodeName","GitNotFound","buildUI","uiMain","harmony","get","UIAspect","id","createRuntime","workspaceContext","name","defaultScope","empty","templateFiles","generateFiles","Promise","all","map","templateFile","outputFile","join","relativePath","content","WorkspaceAspect","loggerMain","LoggerAspect","logger","createLogger","GeneratorAspect","importer","ImporterAspect","componentsToFork","importComponents","fork","length","dependencyResolver","DependencyResolverAspect","componentsToImportResolved","c","ComponentID","fromLegacy","BitId","parse","targetName","componentIds","components","scope","getRemoteComponent","oldAndNewPackageNames","getNewPackageNames","oldAndNewComponentIds","getNewComponentIds","comp","replaceOriginalPackageNameWithNew","compData","find","_legacy","isEqualWithoutVersion","toString","write","track","rootDir","componentName","fullName","mainFile","state","_consumer","deps","getDependencies","currentPackages","Object","keys","workspacePolicyEntries","filter","dep","source","dependencyId","getPackageName","lifecycleType","lifecycle","value","version","entry","includes","addToRootPolicy","bitMap","persistConfig","clearCache","compileComponents","componentsToImport","componentToImport","ids","verbose","objectsOnly","override","writeDists","writeConfig","installNpmPackages","writeToPath","compiler","CompilerAspect","compileOnWorkspace","compsData","pkg","PkgAspect","packageToReplace","scopeToReplace","replace","forEach","newId","resolveNewCompId","currentPackageName","newName","newPackageName","componentToReplace","toStringWithoutVersion","isEqualWithoutScopeAndVersion","changeScope","filesystem","files","file","isBinary","contents","strContent","newContent","currentPackage","currentPkgRegex","RegExp","currentId","currentIdRegex","Buffer","from"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { loadBit } from '@teambit/bit';\nimport { Harmony } from '@teambit/harmony';\nimport { Component } from '@teambit/component';\nimport execa from 'execa';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport pMapSeries from 'p-map-series';\nimport UIAspect, { UiMain } from '@teambit/ui';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { PkgAspect, PkgMain } from '@teambit/pkg';\nimport { init } from '@teambit/legacy/dist/api/consumer';\nimport ImporterAspect, { ImporterMain } from '@teambit/importer';\nimport { CompilerAspect, CompilerMain } from '@teambit/compiler';\nimport getGitExecutablePath from '@teambit/legacy/dist/utils/git/git-executable';\nimport GitNotFound from '@teambit/legacy/dist/utils/git/exceptions/git-not-found';\nimport path from 'path';\nimport { DependencyResolverMain, DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewOptions } from './new.cmd';\nimport { GeneratorAspect } from './generator.aspect';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\ntype CompToImportResolved = {\n id: ComponentID;\n path: string;\n targetName?: string;\n};\n\nexport class WorkspaceGenerator {\n private workspacePath: string;\n private harmony: Harmony;\n private workspace: Workspace;\n private importer: ImporterMain;\n private logger: Logger;\n constructor(\n private workspaceName: string,\n private options: NewOptions,\n private template: WorkspaceTemplate,\n private aspectComponent?: Component\n ) {\n this.workspacePath = path.resolve(this.workspaceName);\n }\n\n async generate(): Promise<string> {\n if (fs.existsSync(this.workspacePath)) {\n throw new Error(`unable to create a workspace at \"${this.workspaceName}\", this path already exist`);\n }\n await fs.ensureDir(this.workspacePath);\n try {\n process.chdir(this.workspacePath);\n await this.initGit();\n await init(this.workspacePath, this.options.skipGit, false, false, false, false, {});\n await this.writeWorkspaceFiles();\n await this.reloadBitInWorkspaceDir();\n await this.forkComponentsFromRemote();\n await this.importComponentsFromRemote();\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n // await this.buildUI(); // disabled for now. it takes too long\n } catch (err: any) {\n await fs.remove(this.workspacePath);\n throw err;\n }\n\n return this.workspacePath;\n }\n\n private async initGit() {\n if (this.options.skipGit) return;\n const gitExecutablePath = getGitExecutablePath();\n const params = ['init'];\n try {\n await execa(gitExecutablePath, params);\n } catch (err: any) {\n if (err.exitCodeName === 'ENOENT') {\n throw new GitNotFound(gitExecutablePath, err);\n }\n throw err;\n }\n }\n\n private async buildUI() {\n const uiMain = this.harmony.get<UiMain>(UIAspect.id);\n await uiMain.createRuntime({});\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeWorkspaceFiles(): Promise<void> {\n const workspaceContext = {\n name: this.workspaceName,\n defaultScope: this.options.defaultScope,\n empty: this.options.empty,\n aspectComponent: this.aspectComponent,\n };\n const templateFiles = await this.template.generateFiles(workspaceContext);\n await Promise.all(\n templateFiles.map(async (templateFile) => {\n await fs.outputFile(path.join(this.workspacePath, templateFile.relativePath), templateFile.content);\n })\n );\n }\n\n private async reloadBitInWorkspaceDir() {\n this.harmony = await loadBit(this.workspacePath);\n this.workspace = this.harmony.get<Workspace>(WorkspaceAspect.id);\n const loggerMain = this.harmony.get<LoggerMain>(LoggerAspect.id);\n this.logger = loggerMain.createLogger(GeneratorAspect.id);\n this.importer = this.harmony.get<ImporterMain>(ImporterAspect.id);\n }\n\n private async forkComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToFork = this.template?.importComponents?.() || this.template?.fork?.() || [];\n if (!componentsToFork.length) return;\n const dependencyResolver = this.harmony.get<DependencyResolverMain>(DependencyResolverAspect.id);\n\n const componentsToImportResolved = await Promise.all(\n componentsToFork.map(async (c) => ({\n id: ComponentID.fromLegacy(BitId.parse(c.id, true)),\n path: c.path,\n targetName: c.targetName,\n }))\n );\n const componentIds = componentsToImportResolved.map((c) => c.id);\n // @todo: improve performance by changing `getRemoteComponent` api to accept multiple ids\n const components = await Promise.all(componentIds.map((id) => this.workspace.scope.getRemoteComponent(id)));\n const oldAndNewPackageNames = this.getNewPackageNames(components, componentsToImportResolved);\n const oldAndNewComponentIds = this.getNewComponentIds(components, componentsToImportResolved);\n await Promise.all(\n components.map((comp) =>\n this.replaceOriginalPackageNameWithNew(comp, oldAndNewPackageNames, oldAndNewComponentIds)\n )\n );\n await pMapSeries(components, async (comp) => {\n const compData = componentsToImportResolved.find((c) => c.id._legacy.isEqualWithoutVersion(comp.id._legacy));\n if (!compData) throw new Error(`workspace-generator, unable to find ${comp.id.toString()} in the given ids`);\n await this.workspace.write(comp, compData.path);\n await this.workspace.track({\n rootDir: compData.path,\n componentName: compData.targetName || compData.id.fullName,\n mainFile: comp.state._consumer.mainFile,\n });\n const deps = await dependencyResolver.getDependencies(comp);\n\n const currentPackages = Object.keys(oldAndNewPackageNames);\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 .filter((entry) => !currentPackages.includes(entry.dependencyId)); // remove components that are now imported\n dependencyResolver.addToRootPolicy(workspacePolicyEntries, { updateExisting: true });\n });\n await this.workspace.bitMap.write();\n await dependencyResolver.persistConfig(this.workspace.path);\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async importComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToImport = this.template?.import?.() || [];\n\n if (!componentsToImport.length) return;\n\n await pMapSeries(componentsToImport, async (componentToImport) => {\n await this.importer.import(\n {\n ids: [componentToImport.id],\n verbose: false,\n objectsOnly: false,\n override: false,\n writeDists: false,\n writeConfig: false,\n installNpmPackages: false,\n writeToPath: componentToImport.path,\n },\n []\n );\n });\n\n await this.workspace.bitMap.write();\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async compileComponents() {\n const compiler = this.harmony.get<CompilerMain>(CompilerAspect.id);\n await compiler.compileOnWorkspace();\n }\n\n private getNewPackageNames(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldPackageName: string]: string } {\n const pkg = this.harmony.get<PkgMain>(PkgAspect.id);\n const packageToReplace = {};\n const scopeToReplace = this.workspace.defaultScope.replace('.', '/');\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n const currentPackageName = pkg.getPackageName(comp);\n const newName = newId.fullName.replace(/\\//g, '.');\n const newPackageName = `@${scopeToReplace}.${newName}`;\n packageToReplace[currentPackageName] = newPackageName;\n });\n return packageToReplace;\n }\n\n private getNewComponentIds(\n components: Component[],\n compsData: CompToImportResolved[]\n ): { [oldComponentId: string]: string } {\n const componentToReplace = {};\n components.forEach((comp) => {\n const newId = this.resolveNewCompId(comp, compsData);\n componentToReplace[comp.id.toStringWithoutVersion()] = newId.toStringWithoutVersion();\n });\n return componentToReplace;\n }\n\n private resolveNewCompId(comp: Component, compsData: CompToImportResolved[]): ComponentID {\n const scopeToReplace = this.workspace.defaultScope;\n const compData = compsData.find((c) => c.id._legacy.isEqualWithoutScopeAndVersion(comp.id._legacy));\n if (!compData) {\n throw new Error(`workspace-generator: unable to find data for \"${comp.id._legacy.toString()}\"`);\n }\n return compData.targetName\n ? ComponentID.fromLegacy(BitId.parse(compData.targetName, false).changeScope(scopeToReplace))\n : comp.id.changeScope(scopeToReplace);\n }\n\n private async replaceOriginalPackageNameWithNew(\n comp: Component,\n packageToReplace: Record<string, string>,\n oldAndNewComponentIds: Record<string, string>\n ) {\n await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return;\n const strContent = file.contents.toString();\n let newContent = strContent;\n Object.keys(packageToReplace).forEach((currentPackage) => {\n if (strContent.includes(currentPackage)) {\n const currentPkgRegex = new RegExp(currentPackage, 'g');\n newContent = newContent.replace(currentPkgRegex, packageToReplace[currentPackage]);\n }\n });\n Object.keys(oldAndNewComponentIds).forEach((currentId) => {\n if (strContent.includes(currentId)) {\n const currentIdRegex = new RegExp(currentId, 'g');\n newContent = newContent.replace(currentIdRegex, oldAndNewComponentIds[currentId]);\n }\n });\n if (strContent !== newContent) {\n file.contents = Buffer.from(newContent);\n }\n })\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["workspace-generator.ts"],"names":["WorkspaceGenerator","constructor","workspaceName","options","template","aspectComponent","workspacePath","generate","fs","existsSync","Error","ensureDir","process","chdir","initGit","skipGit","writeWorkspaceFiles","reloadBitInWorkspaceDir","forkComponentsFromRemote","importComponentsFromRemote","workspace","install","undefined","dedupe","import","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","updateExisting","err","remove","gitExecutablePath","params","exitCodeName","GitNotFound","buildUI","uiMain","harmony","get","UIAspect","id","createRuntime","workspaceContext","name","defaultScope","empty","templateFiles","generateFiles","Promise","all","map","templateFile","outputFile","relativePath","content","WorkspaceAspect","loggerMain","LoggerAspect","logger","createLogger","GeneratorAspect","importer","ImporterAspect","forking","ForkingAspect","componentsToFork","importComponents","fork","length","componentsToForkRestructured","targetName","path","sourceId","targetId","forkMultipleFromRemote","scope","refactor","clearCache","compileComponents","componentsToImport","componentToImport","ids","verbose","objectsOnly","override","writeDists","writeConfig","installNpmPackages","writeToPath","bitMap","write","compiler","CompilerAspect","compileOnWorkspace"],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport { loadBit } from '@teambit/bit';\nimport { Harmony } from '@teambit/harmony';\nimport { Component } from '@teambit/component';\nimport execa from 'execa';\nimport pMapSeries from 'p-map-series';\nimport UIAspect, { UiMain } from '@teambit/ui';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport ForkingAspect, { ForkingMain } from '@teambit/forking';\nimport { init } from '@teambit/legacy/dist/api/consumer';\nimport ImporterAspect, { ImporterMain } from '@teambit/importer';\nimport { CompilerAspect, CompilerMain } from '@teambit/compiler';\nimport getGitExecutablePath from '@teambit/legacy/dist/utils/git/git-executable';\nimport GitNotFound from '@teambit/legacy/dist/utils/git/exceptions/git-not-found';\nimport { resolve, join } from 'path';\nimport { ComponentID } from '@teambit/component-id';\nimport { WorkspaceTemplate } from './workspace-template';\nimport { NewOptions } from './new.cmd';\nimport { GeneratorAspect } from './generator.aspect';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\nexport class WorkspaceGenerator {\n private workspacePath: string;\n private harmony: Harmony;\n private workspace: Workspace;\n private importer: ImporterMain;\n private logger: Logger;\n private forking: ForkingMain;\n constructor(\n private workspaceName: string,\n private options: NewOptions,\n private template: WorkspaceTemplate,\n private aspectComponent?: Component\n ) {\n this.workspacePath = resolve(this.workspaceName);\n }\n\n async generate(): Promise<string> {\n if (fs.existsSync(this.workspacePath)) {\n throw new Error(`unable to create a workspace at \"${this.workspaceName}\", this path already exist`);\n }\n await fs.ensureDir(this.workspacePath);\n try {\n process.chdir(this.workspacePath);\n await this.initGit();\n await init(this.workspacePath, this.options.skipGit, false, false, false, false, {});\n await this.writeWorkspaceFiles();\n await this.reloadBitInWorkspaceDir();\n await this.forkComponentsFromRemote();\n await this.importComponentsFromRemote();\n await this.workspace.install(undefined, {\n dedupe: true,\n import: false,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n updateExisting: false,\n });\n // await this.buildUI(); // disabled for now. it takes too long\n } catch (err: any) {\n await fs.remove(this.workspacePath);\n throw err;\n }\n\n return this.workspacePath;\n }\n\n private async initGit() {\n if (this.options.skipGit) return;\n const gitExecutablePath = getGitExecutablePath();\n const params = ['init'];\n try {\n await execa(gitExecutablePath, params);\n } catch (err: any) {\n if (err.exitCodeName === 'ENOENT') {\n throw new GitNotFound(gitExecutablePath, err);\n }\n throw err;\n }\n }\n\n private async buildUI() {\n const uiMain = this.harmony.get<UiMain>(UIAspect.id);\n await uiMain.createRuntime({});\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeWorkspaceFiles(): Promise<void> {\n const workspaceContext = {\n name: this.workspaceName,\n defaultScope: this.options.defaultScope,\n empty: this.options.empty,\n aspectComponent: this.aspectComponent,\n };\n const templateFiles = await this.template.generateFiles(workspaceContext);\n await Promise.all(\n templateFiles.map(async (templateFile) => {\n await fs.outputFile(join(this.workspacePath, templateFile.relativePath), templateFile.content);\n })\n );\n }\n\n private async reloadBitInWorkspaceDir() {\n this.harmony = await loadBit(this.workspacePath);\n this.workspace = this.harmony.get<Workspace>(WorkspaceAspect.id);\n const loggerMain = this.harmony.get<LoggerMain>(LoggerAspect.id);\n this.logger = loggerMain.createLogger(GeneratorAspect.id);\n this.importer = this.harmony.get<ImporterMain>(ImporterAspect.id);\n this.forking = this.harmony.get<ForkingMain>(ForkingAspect.id);\n }\n\n private async forkComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToFork = this.template?.importComponents?.() || this.template?.fork?.() || [];\n if (!componentsToFork.length) return;\n const componentsToForkRestructured = componentsToFork.map(({ id, targetName, path }) => ({\n sourceId: id,\n targetId: targetName,\n path,\n }));\n await this.forking.forkMultipleFromRemote(componentsToForkRestructured, {\n scope: this.workspace.defaultScope,\n refactor: true,\n install: false,\n });\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async importComponentsFromRemote() {\n if (this.options.empty) return;\n const componentsToImport = this.template?.import?.() || [];\n\n if (!componentsToImport.length) return;\n\n await pMapSeries(componentsToImport, async (componentToImport) => {\n await this.importer.import(\n {\n ids: [componentToImport.id],\n verbose: false,\n objectsOnly: false,\n override: false,\n writeDists: false,\n writeConfig: false,\n installNpmPackages: false,\n writeToPath: componentToImport.path,\n },\n []\n );\n });\n\n await this.workspace.bitMap.write();\n this.workspace.clearCache();\n await this.compileComponents();\n }\n\n private async compileComponents() {\n const compiler = this.harmony.get<CompilerMain>(CompilerAspect.id);\n await compiler.compileOnWorkspace();\n }\n}\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/generator",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.715",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/generator/generator",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.generator",
|
|
8
8
|
"name": "generator",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.715"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"camelcase": "6.2.0",
|
|
@@ -17,28 +17,25 @@
|
|
|
17
17
|
"graphql-tag": "2.12.1",
|
|
18
18
|
"lodash": "4.17.21",
|
|
19
19
|
"execa": "2.1.0",
|
|
20
|
-
"isbinaryfile": "4.0.6",
|
|
21
20
|
"@babel/runtime": "7.12.18",
|
|
22
21
|
"core-js": "^3.0.0",
|
|
23
22
|
"@teambit/harmony": "0.3.3",
|
|
24
23
|
"@teambit/bit-error": "0.0.394",
|
|
25
24
|
"@teambit/component-id": "0.0.402",
|
|
26
|
-
"@teambit/envs": "0.0.
|
|
27
|
-
"@teambit/new-component-helper": "0.0.
|
|
28
|
-
"@teambit/workspace": "0.0.
|
|
25
|
+
"@teambit/envs": "0.0.715",
|
|
26
|
+
"@teambit/new-component-helper": "0.0.119",
|
|
27
|
+
"@teambit/workspace": "0.0.715",
|
|
29
28
|
"@teambit/cli": "0.0.476",
|
|
30
|
-
"@teambit/graphql": "0.0.
|
|
31
|
-
"@teambit/aspect-loader": "0.0.
|
|
32
|
-
"@teambit/bit": "0.0.
|
|
29
|
+
"@teambit/graphql": "0.0.715",
|
|
30
|
+
"@teambit/aspect-loader": "0.0.715",
|
|
31
|
+
"@teambit/bit": "0.0.717",
|
|
33
32
|
"@teambit/community": "0.0.24",
|
|
34
|
-
"@teambit/component": "0.0.
|
|
35
|
-
"@teambit/importer": "0.0.
|
|
36
|
-
"@teambit/compiler": "0.0.
|
|
37
|
-
"@teambit/
|
|
38
|
-
"@teambit/legacy-bit-id": "0.0.399",
|
|
33
|
+
"@teambit/component": "0.0.715",
|
|
34
|
+
"@teambit/importer": "0.0.144",
|
|
35
|
+
"@teambit/compiler": "0.0.715",
|
|
36
|
+
"@teambit/forking": "0.0.119",
|
|
39
37
|
"@teambit/logger": "0.0.568",
|
|
40
|
-
"@teambit/
|
|
41
|
-
"@teambit/ui": "0.0.714"
|
|
38
|
+
"@teambit/ui": "0.0.715"
|
|
42
39
|
},
|
|
43
40
|
"devDependencies": {
|
|
44
41
|
"@types/fs-extra": "9.0.7",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.generator_generator@0.0.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.generator_generator@0.0.
|
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.generator_generator@0.0.715/dist/generator.composition.js')]
|
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.generator_generator@0.0.715/dist/generator.docs.mdx')]
|
|
Binary file
|