@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.
@@ -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 _pkg() {
121
- const data = require("@teambit/pkg");
94
+ function _forking() {
95
+ const data = _interopRequireDefault(require("@teambit/forking"));
122
96
 
123
- _pkg = function () {
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 = _interopRequireDefault(require("path"));
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
- this.workspacePath = _path().default.resolve(this.workspaceName);
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().default.join(this.workspacePath, templateFile.relativePath), templateFile.content);
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 dependencyResolver = this.harmony.get(_dependencyResolver().DependencyResolverAspect.id);
317
- const componentsToImportResolved = await Promise.all(componentsToFork.map(async c => ({
318
- id: _componentId().ComponentID.fromLegacy(_legacyBitId().BitId.parse(c.id, true)),
319
- path: c.path,
320
- targetName: c.targetName
321
- })));
322
- const componentIds = componentsToImportResolved.map(c => c.id); // @todo: improve performance by changing `getRemoteComponent` api to accept multiple ids
323
-
324
- const components = await Promise.all(componentIds.map(id => this.workspace.scope.getRemoteComponent(id)));
325
- const oldAndNewPackageNames = this.getNewPackageNames(components, componentsToImportResolved);
326
- const oldAndNewComponentIds = this.getNewComponentIds(components, componentsToImportResolved);
327
- await Promise.all(components.map(comp => this.replaceOriginalPackageNameWithNew(comp, oldAndNewPackageNames, oldAndNewComponentIds)));
328
- await (0, _pMapSeries().default)(components, async comp => {
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"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/generator",
3
- "version": "0.0.714",
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.714"
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.714",
27
- "@teambit/new-component-helper": "0.0.118",
28
- "@teambit/workspace": "0.0.714",
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.714",
31
- "@teambit/aspect-loader": "0.0.714",
32
- "@teambit/bit": "0.0.716",
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.714",
35
- "@teambit/importer": "0.0.143",
36
- "@teambit/compiler": "0.0.714",
37
- "@teambit/dependency-resolver": "0.0.714",
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/pkg": "0.0.714",
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.714/dist/generator.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.generator_generator@0.0.714/dist/generator.docs.mdx')]
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')]