@teambit/tracker 1.0.487 → 1.0.488

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.
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <testsuites tests="0" failures="0" errors="0" skipped="0">
3
- <testsuite name="teambit.component/tracker@1.0.487" tests="0" failures="0" errors="0" skipped="0"/>
3
+ <testsuite name="teambit.component/tracker@1.0.488" tests="0" failures="0" errors="0" skipped="0"/>
4
4
  </testsuites>
@@ -117,7 +117,7 @@
117
117
  "_legacy": {
118
118
  "scope": "teambit.component",
119
119
  "name": "tracker",
120
- "version": "1.0.487"
120
+ "version": "1.0.488"
121
121
  },
122
122
  "_scope": "teambit.component"
123
123
  }
@@ -251,7 +251,7 @@
251
251
  "_legacy": {
252
252
  "scope": "teambit.component",
253
253
  "name": "tracker",
254
- "version": "1.0.487"
254
+ "version": "1.0.488"
255
255
  },
256
256
  "_scope": "teambit.component"
257
257
  }
@@ -365,7 +365,7 @@
365
365
  "_legacy": {
366
366
  "scope": "teambit.component",
367
367
  "name": "tracker",
368
- "version": "1.0.487"
368
+ "version": "1.0.488"
369
369
  },
370
370
  "_scope": "teambit.component"
371
371
  }
@@ -479,7 +479,7 @@
479
479
  "_legacy": {
480
480
  "scope": "teambit.component",
481
481
  "name": "tracker",
482
- "version": "1.0.487"
482
+ "version": "1.0.488"
483
483
  },
484
484
  "_scope": "teambit.component"
485
485
  }
@@ -593,7 +593,7 @@
593
593
  "_legacy": {
594
594
  "scope": "teambit.component",
595
595
  "name": "tracker",
596
- "version": "1.0.487"
596
+ "version": "1.0.488"
597
597
  },
598
598
  "_scope": "teambit.component"
599
599
  }
@@ -1877,7 +1877,7 @@
1877
1877
  "componentId": {
1878
1878
  "scope": "teambit.component",
1879
1879
  "name": "tracker",
1880
- "version": "1.0.487"
1880
+ "version": "1.0.488"
1881
1881
  },
1882
1882
  "taggedModuleExports": []
1883
1883
  }
@@ -1,6 +1,6 @@
1
1
  import { ComponentID } from '@teambit/component-id';
2
2
  import { BitMap, ComponentMap, ComponentMapFile, Config } from '@teambit/legacy.bit-map';
3
- import Consumer from '@teambit/legacy/dist/consumer/consumer';
3
+ import { Consumer } from '@teambit/legacy.consumer';
4
4
  import { PathLinux, PathOsBased } from '@teambit/legacy.utils';
5
5
  import { Workspace } from '@teambit/workspace';
6
6
  export type AddResult = {
@@ -74,16 +74,16 @@ function _legacyBitId() {
74
74
  };
75
75
  return data;
76
76
  }
77
- function _constants() {
78
- const data = require("@teambit/legacy/dist/constants");
79
- _constants = function () {
77
+ function _legacy2() {
78
+ const data = require("@teambit/legacy.constants");
79
+ _legacy2 = function () {
80
80
  return data;
81
81
  };
82
82
  return data;
83
83
  }
84
- function _legacy2() {
84
+ function _legacy3() {
85
85
  const data = require("@teambit/legacy.bit-map");
86
- _legacy2 = function () {
86
+ _legacy3 = function () {
87
87
  return data;
88
88
  };
89
89
  return data;
@@ -137,16 +137,16 @@ function _bitError() {
137
137
  };
138
138
  return data;
139
139
  }
140
- function _logger() {
141
- const data = _interopRequireDefault(require("@teambit/legacy/dist/logger/logger"));
142
- _logger = function () {
140
+ function _legacy4() {
141
+ const data = require("@teambit/legacy.logger");
142
+ _legacy4 = function () {
143
143
  return data;
144
144
  };
145
145
  return data;
146
146
  }
147
- function _legacy3() {
147
+ function _legacy5() {
148
148
  const data = require("@teambit/legacy.utils");
149
- _legacy3 = function () {
149
+ _legacy5 = function () {
150
150
  return data;
151
151
  };
152
152
  return data;
@@ -231,7 +231,7 @@ class AddComponents {
231
231
  const filesListMatch = files.map(async file => {
232
232
  const fileInfo = calculateFileInfo(file);
233
233
  const generatedFile = (0, _stringFormat().default)(dsl, fileInfo);
234
- const matches = await (0, _legacy3().glob)(generatedFile);
234
+ const matches = await (0, _legacy5().glob)(generatedFile);
235
235
  const matchesAfterGitIgnore = this.gitIgnore.filter(matches);
236
236
  return matchesAfterGitIgnore.filter(match => _fsExtra().default.existsSync(match));
237
237
  });
@@ -241,10 +241,10 @@ class AddComponents {
241
241
  const filesListUnique = (0, _lodash().uniq)(filesListFlatten);
242
242
  return filesListUnique.map(file => {
243
243
  // when files array has the test file with different letter case, use the one from the file array
244
- const fileNormalized = (0, _legacy3().pathNormalizeToLinux)(file);
244
+ const fileNormalized = (0, _legacy5().pathNormalizeToLinux)(file);
245
245
  const fileWithCorrectCase = files.find(f => f.toLowerCase() === fileNormalized.toLowerCase()) || fileNormalized;
246
246
  const relativeToConsumer = this.consumer.getPathRelativeToConsumer(fileWithCorrectCase);
247
- return (0, _legacy3().pathNormalizeToLinux)(relativeToConsumer);
247
+ return (0, _legacy5().pathNormalizeToLinux)(relativeToConsumer);
248
248
  });
249
249
  }
250
250
 
@@ -256,7 +256,7 @@ class AddComponents {
256
256
  if (!componentMap.rootDir) {
257
257
  throw new Error('_isPackageJsonOnRootDir should not get called on non imported components');
258
258
  }
259
- return path().join(componentMap.rootDir, _constants().PACKAGE_JSON) === path().normalize(pathRelativeToConsumerRoot);
259
+ return path().join(componentMap.rootDir, _legacy2().PACKAGE_JSON) === path().normalize(pathRelativeToConsumerRoot);
260
260
  }
261
261
 
262
262
  /**
@@ -352,13 +352,13 @@ class AddComponents {
352
352
  if (this.trackDirFeature) throw new Error('track dir should not calculate the rootDir');
353
353
  if (foundComponentFromBitMap) return foundComponentFromBitMap.rootDir;
354
354
  if (!trackDir) throw new Error(`addOrUpdateComponentInBitMap expect to have trackDir for non-legacy workspace`);
355
- const fileNotInsideTrackDir = componentFiles.find(file => !(0, _legacy3().pathNormalizeToLinux)(file.relativePath).startsWith(`${(0, _legacy3().pathNormalizeToLinux)(trackDir)}/`));
355
+ const fileNotInsideTrackDir = componentFiles.find(file => !(0, _legacy5().pathNormalizeToLinux)(file.relativePath).startsWith(`${(0, _legacy5().pathNormalizeToLinux)(trackDir)}/`));
356
356
  if (fileNotInsideTrackDir) {
357
357
  // we check for this error before. however, it's possible that a user have one trackDir
358
358
  // and another dir for the tests.
359
359
  throw new (_addingIndividualFiles().AddingIndividualFiles)(fileNotInsideTrackDir.relativePath);
360
360
  }
361
- return (0, _legacy3().pathNormalizeToLinux)(trackDir);
361
+ return (0, _legacy5().pathNormalizeToLinux)(trackDir);
362
362
  };
363
363
  const getComponentMap = async () => {
364
364
  if (this.trackDirFeature) {
@@ -398,19 +398,19 @@ class AddComponents {
398
398
  _updateFilesAccordingToExistingRootDir(foundComponentFromBitMap, componentFiles, component) {
399
399
  const existingRootDir = foundComponentFromBitMap.rootDir;
400
400
  if (!existingRootDir) return; // nothing to do.
401
- const areFilesInsideExistingRootDir = componentFiles.every(file => (0, _legacy3().pathNormalizeToLinux)(file.relativePath).startsWith(`${existingRootDir}/`));
401
+ const areFilesInsideExistingRootDir = componentFiles.every(file => (0, _legacy5().pathNormalizeToLinux)(file.relativePath).startsWith(`${existingRootDir}/`));
402
402
  if (areFilesInsideExistingRootDir) {
403
- _legacy2().ComponentMap.changeFilesPathAccordingToItsRootDir(existingRootDir, componentFiles);
403
+ _legacy3().ComponentMap.changeFilesPathAccordingToItsRootDir(existingRootDir, componentFiles);
404
404
  return;
405
405
  }
406
406
  // some (or all) added files are outside the existing rootDir, the rootDir needs to be changed
407
407
  // if a directory was added and it's a parent of the existing rootDir, change the rootDir to
408
408
  // the currently added rootDir.
409
- const currentlyAddedDir = (0, _legacy3().pathNormalizeToLinux)(component.trackDir);
409
+ const currentlyAddedDir = (0, _legacy5().pathNormalizeToLinux)(component.trackDir);
410
410
  const currentlyAddedDirParentOfRootDir = currentlyAddedDir && existingRootDir.startsWith(`${currentlyAddedDir}/`);
411
411
  if (currentlyAddedDirParentOfRootDir) {
412
412
  foundComponentFromBitMap.changeRootDirAndUpdateFilesAccordingly(currentlyAddedDir);
413
- _legacy2().ComponentMap.changeFilesPathAccordingToItsRootDir(currentlyAddedDir, componentFiles);
413
+ _legacy3().ComponentMap.changeFilesPathAccordingToItsRootDir(currentlyAddedDir, componentFiles);
414
414
  return;
415
415
  }
416
416
  throw new (_bitError().BitError)(`unable to add individual files outside the root dir (${existingRootDir}) of ${component.componentId}.
@@ -454,7 +454,7 @@ you can add the directory these files are located at and it'll change the root d
454
454
  _getIdAccordingToExistingComponent(currentId) {
455
455
  const idWithScope = this.defaultScope ? `${this.defaultScope}/${currentId}` : currentId;
456
456
  const existingComponentId = this.bitMap.getExistingBitId(idWithScope, false);
457
- if (currentId.includes(_constants().VERSION_DELIMITER)) {
457
+ if (currentId.includes(_legacy2().VERSION_DELIMITER)) {
458
458
  if (!existingComponentId ||
459
459
  // this id is new, it shouldn't have a version
460
460
  !existingComponentId.hasVersion() ||
@@ -467,7 +467,7 @@ you can add the directory these files are located at and it'll change the root d
467
467
  return existingComponentId;
468
468
  }
469
469
  _getIdAccordingToTrackDir(dir) {
470
- const dirNormalizedToLinux = (0, _legacy3().pathNormalizeToLinux)(dir);
470
+ const dirNormalizedToLinux = (0, _legacy5().pathNormalizeToLinux)(dir);
471
471
  const trackDirs = this.bitMap.getAllTrackDirs();
472
472
  if (!trackDirs) return null;
473
473
  return trackDirs[dirNormalizedToLinux];
@@ -494,7 +494,7 @@ you can add the directory these files are located at and it'll change the root d
494
494
  throw new (_exceptions().ExcludedMainFile)(generatedFile);
495
495
  }
496
496
  files.push({
497
- relativePath: (0, _legacy3().pathNormalizeToLinux)(generatedFile),
497
+ relativePath: (0, _legacy5().pathNormalizeToLinux)(generatedFile),
498
498
  test: false,
499
499
  name: path().basename(generatedFile)
500
500
  });
@@ -508,7 +508,7 @@ you can add the directory these files are located at and it'll change the root d
508
508
  if (_fsExtra().default.existsSync(mainPath)) {
509
509
  const shouldIgnore = this.gitIgnore.ignores(mainFileRelativeToConsumer);
510
510
  if (shouldIgnore) throw new (_exceptions().ExcludedMainFile)(mainFileRelativeToConsumer);
511
- if ((0, _legacy3().isDir)(mainPath)) {
511
+ if ((0, _legacy5().isDir)(mainPath)) {
512
512
  throw new (_exceptions().MainFileIsDir)(mainPath);
513
513
  }
514
514
  const foundFile = this._findMainFileInFiles(mainFileRelativeToConsumer, files);
@@ -516,7 +516,7 @@ you can add the directory these files are located at and it'll change the root d
516
516
  return foundFile.relativePath;
517
517
  }
518
518
  files.push({
519
- relativePath: (0, _legacy3().pathNormalizeToLinux)(mainFileRelativeToConsumer),
519
+ relativePath: (0, _legacy5().pathNormalizeToLinux)(mainFileRelativeToConsumer),
520
520
  test: false,
521
521
  name: path().basename(mainFileRelativeToConsumer)
522
522
  });
@@ -525,7 +525,7 @@ you can add the directory these files are located at and it'll change the root d
525
525
  return mainFile;
526
526
  }
527
527
  _findMainFileInFiles(mainFile, files) {
528
- const normalizedMainFile = (0, _legacy3().pathNormalizeToLinux)(mainFile).toLowerCase();
528
+ const normalizedMainFile = (0, _legacy5().pathNormalizeToLinux)(mainFile).toLowerCase();
529
529
  return files.find(file => file.relativePath.toLowerCase() === normalizedMainFile);
530
530
  }
531
531
  async getDefaultScope(rootDir, componentName) {
@@ -547,7 +547,7 @@ you can add the directory these files are located at and it'll change the root d
547
547
  const relativeComponentPath = this.consumer.getPathRelativeToConsumer(componentPath);
548
548
  this._throwForOutsideConsumer(relativeComponentPath);
549
549
  this.throwForExistingParentDir(relativeComponentPath);
550
- const matches = await (0, _legacy3().glob)(path().join(relativeComponentPath, '**'), {
550
+ const matches = await (0, _legacy5().glob)(path().join(relativeComponentPath, '**'), {
551
551
  cwd: this.consumer.getPath(),
552
552
  nodir: true
553
553
  });
@@ -558,7 +558,7 @@ you can add the directory these files are located at and it'll change the root d
558
558
  }
559
559
  const filteredMatchedFiles = filteredMatches.map(match => {
560
560
  return {
561
- relativePath: (0, _legacy3().pathNormalizeToLinux)(match),
561
+ relativePath: (0, _legacy5().pathNormalizeToLinux)(match),
562
562
  test: false,
563
563
  name: path().basename(match)
564
564
  };
@@ -601,14 +601,14 @@ you can add the directory these files are located at and it'll change the root d
601
601
  }
602
602
  async getIgnoreList() {
603
603
  const consumerPath = this.consumer.getPath();
604
- return (0, _legacy2().getIgnoreListHarmony)(consumerPath);
604
+ return (0, _legacy3().getIgnoreListHarmony)(consumerPath);
605
605
  }
606
606
  async add() {
607
607
  this.ignoreList = await this.getIgnoreList();
608
608
  this.gitIgnore = (0, _ignore().default)().add(this.ignoreList); // add ignore list
609
609
 
610
610
  let componentPathsStats = {};
611
- const resolvedComponentPathsWithoutGitIgnore = (await Promise.all(this.componentPaths.map(componentPath => (0, _legacy3().glob)(componentPath)))).flat();
611
+ const resolvedComponentPathsWithoutGitIgnore = (await Promise.all(this.componentPaths.map(componentPath => (0, _legacy5().glob)(componentPath)))).flat();
612
612
  this.gitIgnore = (0, _ignore().default)().add(this.ignoreList); // add ignore list
613
613
 
614
614
  const resolvedComponentPathsWithGitIgnore = this.gitIgnore.filter(resolvedComponentPathsWithoutGitIgnore);
@@ -636,7 +636,7 @@ you can add the directory these files are located at and it'll change the root d
636
636
  if (isMultipleComponents) {
637
637
  await this.addMultipleComponents(componentPathsStats);
638
638
  } else {
639
- _logger().default.debugAndAddBreadCrumb('add-components', 'adding one component');
639
+ _legacy4().logger.debugAndAddBreadCrumb('add-components', 'adding one component');
640
640
  // when a user enters more than one directory, he would like to keep the directories names
641
641
  // so then when a component is imported, it will write the files into the original directories
642
642
  const addedOne = await this.addOneComponent(Object.keys(componentPathsStats)[0]);
@@ -662,7 +662,7 @@ you can add the directory these files are located at and it'll change the root d
662
662
  await (0, _workspaceModules().linkToNodeModulesByIds)(this.workspace, ids);
663
663
  }
664
664
  async addMultipleComponents(componentPathsStats) {
665
- _logger().default.debugAndAddBreadCrumb('add-components', 'adding multiple components');
665
+ _legacy4().logger.debugAndAddBreadCrumb('add-components', 'adding multiple components');
666
666
  this._removeDirectoriesWhenTheirFilesAreAdded(componentPathsStats);
667
667
  const added = await this._tryAddingMultiple(componentPathsStats);
668
668
  validateNoDuplicateIds(added);
@@ -680,7 +680,7 @@ you can add the directory these files are located at and it'll change the root d
680
680
  allPaths.forEach(componentPath => {
681
681
  const foundDir = allPaths.find(p => p === path().dirname(componentPath));
682
682
  if (foundDir && componentPathsStats[foundDir]) {
683
- _logger().default.debug(`add-components._removeDirectoriesWhenTheirFilesAreAdded, ignoring ${foundDir}`);
683
+ _legacy4().logger.debug(`add-components._removeDirectoriesWhenTheirFilesAreAdded, ignoring ${foundDir}`);
684
684
  delete componentPathsStats[foundDir];
685
685
  }
686
686
  });
@@ -693,7 +693,7 @@ you can add the directory these files are located at and it'll change the root d
693
693
  const addedComponent = await this.addOrUpdateComponentInBitMap(component);
694
694
  if (addedComponent && addedComponent.files.length) this.addedComponents.push(addedComponent);
695
695
  } catch (err) {
696
- if (!(err instanceof _legacy2().MissingMainFile)) throw err;
696
+ if (!(err instanceof _legacy3().MissingMainFile)) throw err;
697
697
  // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
698
698
  missingMainFiles.push(err);
699
699
  }
@@ -767,7 +767,7 @@ function validatePaths(fileArray) {
767
767
  throw new (_exceptions().PathsNotExist)([componentPath]);
768
768
  }
769
769
  componentPathsStats[componentPath] = {
770
- isDir: (0, _legacy3().isDir)(componentPath)
770
+ isDir: (0, _legacy5().isDir)(componentPath)
771
771
  };
772
772
  });
773
773
  return componentPathsStats;
@@ -807,7 +807,7 @@ function calculateFileInfo(relativePath) {
807
807
  }
808
808
  async function isAutoGeneratedFile(filePath) {
809
809
  const line = await (0, _firstline().default)(filePath);
810
- return line.includes(_constants().AUTO_GENERATED_STAMP);
810
+ return line.includes(_legacy2().AUTO_GENERATED_STAMP);
811
811
  }
812
812
 
813
813
  //# sourceMappingURL=add-components.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_arrayDifference","data","_interopRequireDefault","require","_firstline","_fsExtra","_ignore","path","_interopRequireWildcard","_lodash","_stringFormat","_legacy","_componentId","_legacyBitId","_constants","_legacy2","_exceptions","_addingIndividualFiles","_missingMainFileMultipleComponents","_parentDirTracked","_pathOutsideConsumer","_versionShouldBeRemoved","_bitError","_logger","_legacy3","_workspaceModules","_determineMainFile","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","REGEX_DSL_PATTERN","AddComponents","constructor","context","addProps","workspace","consumer","bitMap","componentPaths","id","main","namespace","override","trackDirFeature","warnings","alreadyUsed","emptyDirectory","existInScope","addedComponents","defaultScope","config","shouldHandleOutOfSync","getFilesAccordingToDsl","files","filesWithPotentialDsl","filesListAllMatches","map","dsl","filesListMatch","file","fileInfo","calculateFileInfo","generatedFile","format","matches","glob","matchesAfterGitIgnore","gitIgnore","filter","match","fs","existsSync","Promise","all","filesListFlatten","flat","filesListUnique","uniq","fileNormalized","pathNormalizeToLinux","fileWithCorrectCase","find","f","toLowerCase","relativeToConsumer","getPathRelativeToConsumer","_isPackageJsonOnRootDir","pathRelativeToConsumerRoot","componentMap","rootDir","Error","join","PACKAGE_JSON","normalize","_isOutsideOfWrapDir","wrapDir","wrapDirRelativeToConsumerRoot","startsWith","addOrUpdateComponentInBitMap","component","consumerPath","getPath","parsedBitId","componentId","componentFromScope","scope","getModelComponentIfExist","foundComponentFromBitMap","getComponentIfExist","ignoreVersion","componentFilesP","filePath","relativePath","isAutoGenerated","isAutoGeneratedFile","caseSensitive","existingIdOfFile","getComponentIdByPath","idOfFileIsDifferent","isEqual","push","newId","toComponentIdWithLatestVersion","componentFiles","length","_updateFilesAccordingToExistingRootDir","_areFilesArraysEqual","_updateFilesWithCurrentLetterCases","_mergeFilesWithExistingComponentMapFiles","trackDir","mainFile","determineMainFile","getRootDir","fileNotInsideTrackDir","AddingIndividualFiles","getComponentMap","addFilesToComponent","getDefaultScope","hasScope","undefined","fullName","addComponent","ComponentID","changeRootDirAndUpdateFilesAccordingly","existingRootDir","areFilesInsideExistingRootDir","every","ComponentMap","changeFilesPathAccordingToItsRootDir","currentlyAddedDir","currentlyAddedDirParentOfRootDir","BitError","existingComponentMapFile","unionBy","currentComponentMap","newFiles","currentFiles","forEach","currentFile","sameFile","newFile","_getIdAccordingToExistingComponent","currentId","idWithScope","existingComponentId","getExistingBitId","includes","VERSION_DELIMITER","hasVersion","version","getVersionFromString","VersionShouldBeRemoved","_getIdAccordingToTrackDir","dir","dirNormalizedToLinux","trackDirs","getAllTrackDirs","_addMainFileToFiles","foundFile","_findMainFileInFiles","shouldIgnore","ignores","ExcludedMainFile","test","name","basename","mainFileRelativeToConsumer","mainPath","toAbsolutePath","isDir","MainFileIsDir","normalizedMainFile","componentName","componentDefaultScopeFromComponentDirAndName","addOneComponent","componentPath","finalBitId","idFromPath","relativeComponentPath","_throwForOutsideConsumer","throwForExistingParentDir","cwd","nodir","EmptyDirectory","filteredMatches","NoFiles","filteredMatchedFiles","resolvedMainFile","absoluteComponentPath","resolve","splitPath","split","sep","lastDir","idOfTrackDir","bitId","BitId","parse","nameSpaceOrDir","getValidIdChunk","getValidBitId","addedComp","immediateDir","getIgnoreList","getIgnoreListHarmony","add","ignoreList","ignore","componentPathsStats","resolvedComponentPathsWithoutGitIgnore","resolvedComponentPathsWithGitIgnore","diff","arrayDiff","PathsNotExist","validatePaths","keys","compPath","isMultipleComponents","addMultipleComponents","logger","debugAndAddBreadCrumb","addedOne","_removeNamespaceIfNotNeeded","addedResult","linkComponents","item","Analytics","setExtraData","ids","linkToNodeModulesByIds","_removeDirectoriesWhenTheirFilesAreAdded","added","_tryAddingMultiple","validateNoDuplicateIds","_addMultipleToBitMap","allPaths","foundDir","p","dirname","debug","missingMainFiles","addedComponent","err","MissingMainFile","MissingMainFileMultipleComponents","sort","allIds","getAllBitIdsFromAllLanes","componentsWithSameName","bitIdFromNameOnly","componentIdFromNameOnly","existingComponentWithSameName","searchWithoutScopeAndVersion","addedP","onePath","compact","relativeToConsumerPath","PathOutsideConsumer","isParentDir","parent","relative","isAbsolute","components","ParentDirTracked","toStringWithoutVersion","exports","fileArray","addComponents","duplicateIds","newGroupedComponents","groupBy","key","isEmpty","DuplicateIds","fullPath","parentDir","PARENT","FILE_NAME","line","firstline","AUTO_GENERATED_STAMP"],"sources":["add-components.ts"],"sourcesContent":["import arrayDiff from 'array-difference';\nimport firstline from 'firstline';\nimport fs from 'fs-extra';\nimport ignore from 'ignore';\nimport * as path from 'path';\nimport { compact, groupBy, isEmpty, unionBy, uniq } from 'lodash';\nimport format from 'string-format';\nimport { Analytics } from '@teambit/legacy.analytics';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitIdStr, BitId } from '@teambit/legacy-bit-id';\nimport { PACKAGE_JSON, VERSION_DELIMITER, AUTO_GENERATED_STAMP } from '@teambit/legacy/dist/constants';\nimport {\n BitMap,\n ComponentMap,\n ComponentMapFile,\n Config,\n getIgnoreListHarmony,\n MissingMainFile,\n} from '@teambit/legacy.bit-map';\nimport { DuplicateIds, EmptyDirectory, ExcludedMainFile, MainFileIsDir, NoFiles, PathsNotExist } from './exceptions';\nimport { AddingIndividualFiles } from './exceptions/adding-individual-files';\nimport MissingMainFileMultipleComponents from './exceptions/missing-main-file-multiple-components';\nimport { ParentDirTracked } from './exceptions/parent-dir-tracked';\nimport PathOutsideConsumer from './exceptions/path-outside-consumer';\nimport VersionShouldBeRemoved from './exceptions/version-should-be-removed';\nimport Consumer from '@teambit/legacy/dist/consumer/consumer';\nimport { BitError } from '@teambit/bit-error';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { glob, isDir, pathNormalizeToLinux, PathLinux, PathLinuxRelative, PathOsBased } from '@teambit/legacy.utils';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { Workspace } from '@teambit/workspace';\nimport determineMainFile from './determine-main-file';\n\nexport type AddResult = { id: ComponentID; files: ComponentMapFile[] };\nexport type Warnings = {\n alreadyUsed: Record<string, any>;\n emptyDirectory: string[];\n existInScope: ComponentID[];\n};\nexport type AddActionResults = { addedComponents: AddResult[]; warnings: Warnings };\nexport type PathOrDSL = PathOsBased | string; // can be a path or a DSL, e.g: tests/{PARENT}/{FILE_NAME}\n// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\ntype PathsStats = { [PathOsBased]: { isDir: boolean } };\nexport type AddedComponent = {\n componentId: ComponentID;\n files: ComponentMapFile[];\n mainFile?: PathOsBased | null | undefined;\n trackDir: PathOsBased;\n idFromPath:\n | {\n name: string;\n namespace: string;\n }\n | null\n | undefined;\n immediateDir?: string;\n};\nconst REGEX_DSL_PATTERN = /{([^}]+)}/g;\n\nexport type AddProps = {\n componentPaths: PathOsBased[];\n id?: string;\n main?: PathOsBased;\n namespace?: string;\n override: boolean;\n trackDirFeature?: boolean;\n defaultScope?: string;\n config?: Config;\n shouldHandleOutOfSync?: boolean;\n env?: string;\n};\n\nexport type AddContext = {\n workspace: Workspace;\n};\n\nexport default class AddComponents {\n workspace: Workspace;\n consumer: Consumer;\n bitMap: BitMap;\n componentPaths: PathOsBased[];\n id: string | null | undefined; // id entered by the user\n main: PathOsBased | null | undefined;\n namespace: string | null | undefined;\n override: boolean; // (default = false) replace the files array or only add files.\n trackDirFeature: boolean | null | undefined;\n warnings: Warnings;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n ignoreList: string[];\n gitIgnore: any;\n addedComponents: AddResult[];\n defaultScope?: string; // helpful for out-of-sync\n config?: Config;\n shouldHandleOutOfSync?: boolean; // only bit-add (not bit-create/new) should handle out-of-sync scenario\n constructor(context: AddContext, addProps: AddProps) {\n this.workspace = context.workspace;\n this.consumer = context.workspace.consumer;\n // @ts-ignore todo: remove after deleting teambit.legacy\n this.bitMap = this.consumer.bitMap;\n this.componentPaths = addProps.componentPaths;\n this.id = addProps.id;\n this.main = addProps.main;\n this.namespace = addProps.namespace;\n this.override = addProps.override;\n this.trackDirFeature = addProps.trackDirFeature;\n this.warnings = {\n alreadyUsed: {},\n emptyDirectory: [],\n existInScope: [],\n };\n this.addedComponents = [];\n this.defaultScope = addProps.defaultScope;\n this.config = addProps.config;\n this.shouldHandleOutOfSync = addProps.shouldHandleOutOfSync;\n }\n\n /**\n * @param {string[]} files - array of file-paths from which it should search for the dsl patterns.\n * @param {*} filesWithPotentialDsl - array of file-path which may have DSL patterns\n *\n * @returns array of file-paths from 'files' parameter that match the patterns from 'filesWithPotentialDsl' parameter\n */\n async getFilesAccordingToDsl(files: PathLinux[], filesWithPotentialDsl: PathOrDSL[]): Promise<PathLinux[]> {\n const filesListAllMatches = filesWithPotentialDsl.map(async (dsl) => {\n const filesListMatch = files.map(async (file) => {\n const fileInfo = calculateFileInfo(file);\n const generatedFile = format(dsl, fileInfo);\n const matches = await glob(generatedFile);\n const matchesAfterGitIgnore = this.gitIgnore.filter(matches);\n return matchesAfterGitIgnore.filter((match) => fs.existsSync(match));\n });\n return Promise.all(filesListMatch);\n });\n\n const filesListFlatten = (await Promise.all(filesListAllMatches)).flat();\n const filesListUnique = uniq(filesListFlatten);\n return filesListUnique.map((file) => {\n // when files array has the test file with different letter case, use the one from the file array\n const fileNormalized = pathNormalizeToLinux(file);\n const fileWithCorrectCase = files.find((f) => f.toLowerCase() === fileNormalized.toLowerCase()) || fileNormalized;\n const relativeToConsumer = this.consumer.getPathRelativeToConsumer(fileWithCorrectCase);\n return pathNormalizeToLinux(relativeToConsumer);\n });\n }\n\n /**\n * for imported component, the package.json in the root directory is a bit-generated file and as\n * such, it should be ignored\n */\n _isPackageJsonOnRootDir(pathRelativeToConsumerRoot: PathLinux, componentMap: ComponentMap) {\n if (!componentMap.rootDir) {\n throw new Error('_isPackageJsonOnRootDir should not get called on non imported components');\n }\n return path.join(componentMap.rootDir, PACKAGE_JSON) === path.normalize(pathRelativeToConsumerRoot);\n }\n\n /**\n * imported components might have wrapDir, when they do, files should not be added outside of\n * that wrapDir\n */\n _isOutsideOfWrapDir(pathRelativeToConsumerRoot: PathLinux, componentMap: ComponentMap) {\n if (!componentMap.rootDir) {\n throw new Error('_isOutsideOfWrapDir should not get called on non imported components');\n }\n if (!componentMap.wrapDir) return false;\n const wrapDirRelativeToConsumerRoot = path.join(componentMap.rootDir, componentMap.wrapDir);\n return !path.normalize(pathRelativeToConsumerRoot).startsWith(wrapDirRelativeToConsumerRoot);\n }\n\n /**\n * Add or update existing (imported and new) component according to bitmap\n * there are 3 options:\n * 1. a user is adding a new component. there is no record for this component in bit.map\n * 2. a user is updating an existing component. there is a record for this component in bit.map\n * 3. some or all the files of this component were previously added as another component-id.\n */\n async addOrUpdateComponentInBitMap(component: AddedComponent): Promise<AddResult | null | undefined> {\n const consumerPath = this.consumer.getPath();\n const parsedBitId = component.componentId;\n const componentFromScope = await this.consumer.scope.getModelComponentIfExist(parsedBitId);\n const files: ComponentMapFile[] = component.files;\n const foundComponentFromBitMap = this.bitMap.getComponentIfExist(component.componentId, {\n ignoreVersion: true,\n });\n const componentFilesP = files.map(async (file: ComponentMapFile) => {\n // $FlowFixMe null is removed later on\n const filePath = path.join(consumerPath, file.relativePath);\n const isAutoGenerated = await isAutoGeneratedFile(filePath);\n if (isAutoGenerated) {\n return null;\n }\n const caseSensitive = false;\n const existingIdOfFile = this.bitMap.getComponentIdByPath(file.relativePath, caseSensitive);\n const idOfFileIsDifferent = existingIdOfFile && !existingIdOfFile.isEqual(parsedBitId);\n if (idOfFileIsDifferent) {\n // not imported component file but exists in bitmap\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.warnings.alreadyUsed[existingIdOfFile]) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.warnings.alreadyUsed[existingIdOfFile].push(file.relativePath);\n } else {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.warnings.alreadyUsed[existingIdOfFile] = [file.relativePath];\n }\n return null;\n }\n if (!foundComponentFromBitMap && componentFromScope && this.shouldHandleOutOfSync) {\n const newId = componentFromScope.toComponentIdWithLatestVersion();\n if (!this.defaultScope || this.defaultScope === newId.scope) {\n // otherwise, if defaultScope !== newId.scope, they're different components,\n // and no need to change the id.\n // for more details about this scenario, see https://github.com/teambit/bit/issues/1543, last case.\n component.componentId = newId;\n this.warnings.existInScope.push(newId);\n }\n }\n return file;\n });\n // @ts-ignore it can't be null due to the filter function\n const componentFiles: ComponentMapFile[] = (await Promise.all(componentFilesP)).filter((file) => file);\n if (!componentFiles.length) return { id: component.componentId, files: [] };\n if (foundComponentFromBitMap) {\n this._updateFilesAccordingToExistingRootDir(foundComponentFromBitMap, componentFiles, component);\n }\n if (this.trackDirFeature) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.bitMap._areFilesArraysEqual(foundComponentFromBitMap.files, componentFiles)) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return foundComponentFromBitMap;\n }\n }\n if (!this.override && foundComponentFromBitMap) {\n this._updateFilesWithCurrentLetterCases(foundComponentFromBitMap, componentFiles);\n component.files = this._mergeFilesWithExistingComponentMapFiles(componentFiles, foundComponentFromBitMap.files);\n } else {\n component.files = componentFiles;\n }\n\n const { componentId, trackDir } = component;\n const mainFile = determineMainFile(component, foundComponentFromBitMap);\n const getRootDir = (): PathLinuxRelative => {\n if (this.trackDirFeature) throw new Error('track dir should not calculate the rootDir');\n if (foundComponentFromBitMap) return foundComponentFromBitMap.rootDir;\n if (!trackDir) throw new Error(`addOrUpdateComponentInBitMap expect to have trackDir for non-legacy workspace`);\n const fileNotInsideTrackDir = componentFiles.find(\n (file) => !pathNormalizeToLinux(file.relativePath).startsWith(`${pathNormalizeToLinux(trackDir)}/`)\n );\n if (fileNotInsideTrackDir) {\n // we check for this error before. however, it's possible that a user have one trackDir\n // and another dir for the tests.\n throw new AddingIndividualFiles(fileNotInsideTrackDir.relativePath);\n }\n return pathNormalizeToLinux(trackDir);\n };\n const getComponentMap = async (): Promise<ComponentMap> => {\n if (this.trackDirFeature) {\n return this.bitMap.addFilesToComponent({ componentId, files: component.files });\n }\n const rootDir = getRootDir();\n const getDefaultScope = async () => {\n if (componentId.hasScope()) return undefined;\n return this.getDefaultScope(rootDir, componentId.fullName);\n };\n const defaultScope = await getDefaultScope();\n const componentMap = this.bitMap.addComponent({\n componentId: new ComponentID(componentId._legacy, defaultScope),\n files: component.files,\n defaultScope,\n config: this.config,\n mainFile,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n override: this.override,\n });\n componentMap.changeRootDirAndUpdateFilesAccordingly(rootDir);\n return componentMap;\n };\n const componentMap = await getComponentMap();\n return { id: componentId, files: componentMap.files };\n }\n\n /**\n * current componentFiles are relative to the workspace. we want them relative to the rootDir.\n */\n _updateFilesAccordingToExistingRootDir(\n foundComponentFromBitMap: ComponentMap,\n componentFiles: ComponentMapFile[],\n component: AddedComponent\n ) {\n const existingRootDir = foundComponentFromBitMap.rootDir;\n if (!existingRootDir) return; // nothing to do.\n const areFilesInsideExistingRootDir = componentFiles.every((file) =>\n pathNormalizeToLinux(file.relativePath).startsWith(`${existingRootDir}/`)\n );\n if (areFilesInsideExistingRootDir) {\n ComponentMap.changeFilesPathAccordingToItsRootDir(existingRootDir, componentFiles);\n return;\n }\n // some (or all) added files are outside the existing rootDir, the rootDir needs to be changed\n // if a directory was added and it's a parent of the existing rootDir, change the rootDir to\n // the currently added rootDir.\n const currentlyAddedDir = pathNormalizeToLinux(component.trackDir);\n const currentlyAddedDirParentOfRootDir = currentlyAddedDir && existingRootDir.startsWith(`${currentlyAddedDir}/`);\n if (currentlyAddedDirParentOfRootDir) {\n foundComponentFromBitMap.changeRootDirAndUpdateFilesAccordingly(currentlyAddedDir);\n ComponentMap.changeFilesPathAccordingToItsRootDir(currentlyAddedDir, componentFiles);\n return;\n }\n throw new BitError(`unable to add individual files outside the root dir (${existingRootDir}) of ${component.componentId}.\nyou can add the directory these files are located at and it'll change the root dir of the component accordingly`);\n // we might want to change the behavior here to not throw an error and only change the rootDir to \".\"\n // foundComponentFromBitMap.changeRootDirAndUpdateFilesAccordingly('.');\n }\n\n /**\n * the risk with merging the currently added files with the existing bitMap files is overriding\n * the `test` property. e.g. the component directory is re-added without adding the tests flag to\n * track new files in that directory. in this case, we want to preserve the `test` property.\n */\n _mergeFilesWithExistingComponentMapFiles(\n componentFiles: ComponentMapFile[],\n existingComponentMapFile: ComponentMapFile[]\n ) {\n return unionBy(existingComponentMapFile, componentFiles, 'relativePath');\n }\n\n /**\n * if an existing file is for example uppercase and the new file is lowercase it has different\n * behavior according to the OS. some OS are case sensitive, some are not.\n * it's safer to avoid saving both files and instead, replacing the old file with the new one.\n * in case a file has replaced and it is also a mainFile, replace the mainFile as well\n */\n _updateFilesWithCurrentLetterCases(currentComponentMap: ComponentMap, newFiles: ComponentMapFile[]) {\n const currentFiles = currentComponentMap.files;\n currentFiles.forEach((currentFile) => {\n const sameFile = newFiles.find(\n (newFile) => newFile.relativePath.toLowerCase() === currentFile.relativePath.toLowerCase()\n );\n if (sameFile && currentFile.relativePath !== sameFile.relativePath) {\n if (currentComponentMap.mainFile === currentFile.relativePath) {\n currentComponentMap.mainFile = sameFile.relativePath;\n }\n currentFile.relativePath = sameFile.relativePath;\n }\n });\n }\n\n /**\n * if the id is already saved in bitmap file, it might have more data (such as scope, version)\n * use that id instead.\n */\n private _getIdAccordingToExistingComponent(currentId: BitIdStr): ComponentID | undefined {\n const idWithScope = this.defaultScope ? `${this.defaultScope}/${currentId}` : currentId;\n const existingComponentId = this.bitMap.getExistingBitId(idWithScope, false);\n if (currentId.includes(VERSION_DELIMITER)) {\n if (\n !existingComponentId || // this id is new, it shouldn't have a version\n !existingComponentId.hasVersion() || // this component is new, it shouldn't have a version\n // user shouldn't add files to a an existing component with different version\n existingComponentId.version !== ComponentID.getVersionFromString(currentId)\n ) {\n throw new VersionShouldBeRemoved(currentId);\n }\n }\n return existingComponentId;\n }\n\n _getIdAccordingToTrackDir(dir: PathOsBased): ComponentID | null | undefined {\n const dirNormalizedToLinux = pathNormalizeToLinux(dir);\n const trackDirs = this.bitMap.getAllTrackDirs();\n if (!trackDirs) return null;\n return trackDirs[dirNormalizedToLinux];\n }\n\n /**\n * used for updating main file if exists or doesn't exists\n */\n _addMainFileToFiles(files: ComponentMapFile[]): PathOsBased | null | undefined {\n let mainFile = this.main;\n if (mainFile && mainFile.match(REGEX_DSL_PATTERN)) {\n // it's a DSL\n files.forEach((file) => {\n const fileInfo = calculateFileInfo(file.relativePath);\n const generatedFile = format(mainFile, fileInfo);\n const foundFile = this._findMainFileInFiles(generatedFile, files);\n if (foundFile) {\n mainFile = foundFile.relativePath;\n }\n if (fs.existsSync(generatedFile) && !foundFile) {\n const shouldIgnore = this.gitIgnore.ignores(generatedFile);\n if (shouldIgnore) {\n // check if file is in exclude list\n throw new ExcludedMainFile(generatedFile);\n }\n files.push({\n relativePath: pathNormalizeToLinux(generatedFile),\n test: false,\n name: path.basename(generatedFile),\n });\n mainFile = generatedFile;\n }\n });\n }\n if (!mainFile) return undefined;\n const mainFileRelativeToConsumer = this.consumer.getPathRelativeToConsumer(mainFile);\n const mainPath = this.consumer.toAbsolutePath(mainFileRelativeToConsumer);\n if (fs.existsSync(mainPath)) {\n const shouldIgnore = this.gitIgnore.ignores(mainFileRelativeToConsumer);\n if (shouldIgnore) throw new ExcludedMainFile(mainFileRelativeToConsumer);\n if (isDir(mainPath)) {\n throw new MainFileIsDir(mainPath);\n }\n const foundFile = this._findMainFileInFiles(mainFileRelativeToConsumer, files);\n if (foundFile) {\n return foundFile.relativePath;\n }\n files.push({\n relativePath: pathNormalizeToLinux(mainFileRelativeToConsumer),\n test: false,\n name: path.basename(mainFileRelativeToConsumer),\n });\n return mainFileRelativeToConsumer;\n }\n return mainFile;\n }\n\n _findMainFileInFiles(mainFile: string, files: ComponentMapFile[]) {\n const normalizedMainFile = pathNormalizeToLinux(mainFile).toLowerCase();\n return files.find((file) => file.relativePath.toLowerCase() === normalizedMainFile);\n }\n\n private async getDefaultScope(rootDir: string, componentName: string): Promise<string> {\n return (this.defaultScope ||\n (await this.workspace.componentDefaultScopeFromComponentDirAndName(rootDir, componentName))) as string;\n }\n\n /**\n * given the component paths, prepare the id, mainFile and files to be added later on to bitmap\n * the id of the component is either entered by the user or, if not entered, concluded by the path.\n * e.g. bar/foo.js, the id would be bar/foo.\n * in case bitmap has already the same id, the complete id is taken from bitmap (see _getIdAccordingToExistingComponent)\n */\n async addOneComponent(componentPath: PathOsBased): Promise<AddedComponent> {\n let finalBitId: ComponentID | undefined; // final id to use for bitmap file\n let idFromPath;\n if (this.id) {\n finalBitId = this._getIdAccordingToExistingComponent(this.id);\n }\n const relativeComponentPath = this.consumer.getPathRelativeToConsumer(componentPath);\n this._throwForOutsideConsumer(relativeComponentPath);\n this.throwForExistingParentDir(relativeComponentPath);\n const matches = await glob(path.join(relativeComponentPath, '**'), {\n cwd: this.consumer.getPath(),\n nodir: true,\n });\n\n if (!matches.length) throw new EmptyDirectory(componentPath);\n\n const filteredMatches = this.gitIgnore.filter(matches);\n\n if (!filteredMatches.length) {\n throw new NoFiles(matches);\n }\n\n const filteredMatchedFiles = filteredMatches.map((match: PathOsBased) => {\n return { relativePath: pathNormalizeToLinux(match), test: false, name: path.basename(match) };\n });\n const resolvedMainFile = this._addMainFileToFiles(filteredMatchedFiles);\n\n const absoluteComponentPath = path.resolve(componentPath);\n const splitPath = absoluteComponentPath.split(path.sep);\n const lastDir = splitPath[splitPath.length - 1];\n const idOfTrackDir = this._getIdAccordingToTrackDir(componentPath);\n if (!finalBitId) {\n if (this.id) {\n const bitId = BitId.parse(this.id, false);\n const defaultScope = await this.getDefaultScope(relativeComponentPath, bitId.name);\n finalBitId = new ComponentID(bitId, defaultScope);\n } else if (idOfTrackDir) {\n finalBitId = idOfTrackDir;\n } else {\n const nameSpaceOrDir = this.namespace || splitPath[splitPath.length - 2];\n if (!this.namespace) {\n idFromPath = { namespace: BitId.getValidIdChunk(nameSpaceOrDir), name: BitId.getValidIdChunk(lastDir) };\n }\n const bitId = BitId.getValidBitId(nameSpaceOrDir, lastDir);\n const defaultScope = await this.getDefaultScope(relativeComponentPath, bitId.name);\n finalBitId = new ComponentID(bitId, defaultScope);\n }\n }\n const trackDir = relativeComponentPath;\n const addedComp = {\n componentId: finalBitId,\n files: filteredMatchedFiles,\n mainFile: resolvedMainFile,\n trackDir,\n idFromPath,\n immediateDir: lastDir,\n };\n\n return addedComp;\n }\n\n async getIgnoreList(): Promise<string[]> {\n const consumerPath = this.consumer.getPath();\n return getIgnoreListHarmony(consumerPath);\n }\n\n async add(): Promise<AddActionResults> {\n this.ignoreList = await this.getIgnoreList();\n this.gitIgnore = ignore().add(this.ignoreList); // add ignore list\n\n let componentPathsStats: PathsStats = {};\n\n const resolvedComponentPathsWithoutGitIgnore = (\n await Promise.all(this.componentPaths.map((componentPath) => glob(componentPath)))\n ).flat();\n this.gitIgnore = ignore().add(this.ignoreList); // add ignore list\n\n const resolvedComponentPathsWithGitIgnore = this.gitIgnore.filter(resolvedComponentPathsWithoutGitIgnore);\n // Run diff on both arrays to see what was filtered out because of the gitignore file\n const diff = arrayDiff(resolvedComponentPathsWithGitIgnore, resolvedComponentPathsWithoutGitIgnore);\n\n if (!resolvedComponentPathsWithoutGitIgnore.length) {\n throw new PathsNotExist(this.componentPaths);\n }\n if (resolvedComponentPathsWithGitIgnore.length) {\n componentPathsStats = validatePaths(resolvedComponentPathsWithGitIgnore);\n } else {\n throw new NoFiles(diff);\n }\n Object.keys(componentPathsStats).forEach((compPath) => {\n if (!componentPathsStats[compPath].isDir) {\n throw new AddingIndividualFiles(compPath);\n }\n });\n if (Object.keys(componentPathsStats).length > 1 && this.id) {\n throw new BitError(\n `the --id flag (${this.id}) is used for a single component only, however, got ${this.componentPaths.length} paths`\n );\n }\n // if a user entered multiple paths and entered an id, he wants all these paths to be one component\n // conversely, if a user entered multiple paths without id, he wants each dir as an individual component\n const isMultipleComponents = Object.keys(componentPathsStats).length > 1;\n if (isMultipleComponents) {\n await this.addMultipleComponents(componentPathsStats);\n } else {\n logger.debugAndAddBreadCrumb('add-components', 'adding one component');\n // when a user enters more than one directory, he would like to keep the directories names\n // so then when a component is imported, it will write the files into the original directories\n const addedOne = await this.addOneComponent(Object.keys(componentPathsStats)[0]);\n await this._removeNamespaceIfNotNeeded([addedOne]);\n if (addedOne.files.length) {\n const addedResult = await this.addOrUpdateComponentInBitMap(addedOne);\n if (addedResult) this.addedComponents.push(addedResult);\n }\n }\n await this.linkComponents(this.addedComponents.map((item) => item.id));\n Analytics.setExtraData('num_components', this.addedComponents.length);\n return { addedComponents: this.addedComponents, warnings: this.warnings };\n }\n\n async linkComponents(ids: ComponentID[]) {\n if (this.trackDirFeature) {\n // if trackDirFeature is set, it happens during the component-load and because we load the\n // components in the next line, it gets into an infinite loop.\n return;\n }\n await linkToNodeModulesByIds(this.workspace, ids);\n }\n\n async addMultipleComponents(componentPathsStats: PathsStats): Promise<void> {\n logger.debugAndAddBreadCrumb('add-components', 'adding multiple components');\n this._removeDirectoriesWhenTheirFilesAreAdded(componentPathsStats);\n const added = await this._tryAddingMultiple(componentPathsStats);\n validateNoDuplicateIds(added);\n await this._removeNamespaceIfNotNeeded(added);\n await this._addMultipleToBitMap(added);\n }\n\n /**\n * some uses of wildcards might add directories and their files at the same time, in such cases\n * only the files are needed and the directories can be ignored.\n * @see https://github.com/teambit/bit/issues/1406 for more details\n */\n _removeDirectoriesWhenTheirFilesAreAdded(componentPathsStats: PathsStats) {\n const allPaths = Object.keys(componentPathsStats);\n allPaths.forEach((componentPath) => {\n const foundDir = allPaths.find((p) => p === path.dirname(componentPath));\n if (foundDir && componentPathsStats[foundDir]) {\n logger.debug(`add-components._removeDirectoriesWhenTheirFilesAreAdded, ignoring ${foundDir}`);\n delete componentPathsStats[foundDir];\n }\n });\n }\n\n async _addMultipleToBitMap(added: AddedComponent[]): Promise<void> {\n const missingMainFiles = [];\n await Promise.all(\n added.map(async (component) => {\n if (component.files.length) {\n try {\n const addedComponent = await this.addOrUpdateComponentInBitMap(component);\n if (addedComponent && addedComponent.files.length) this.addedComponents.push(addedComponent);\n } catch (err: any) {\n if (!(err instanceof MissingMainFile)) throw err;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n missingMainFiles.push(err);\n }\n }\n })\n );\n if (missingMainFiles.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n throw new MissingMainFileMultipleComponents(missingMainFiles.map((err) => err.componentId).sort());\n }\n }\n\n async _removeNamespaceIfNotNeeded(addedComponents: AddedComponent[]) {\n const allIds = this.bitMap.getAllBitIdsFromAllLanes();\n await Promise.all(\n addedComponents.map(async (addedComponent) => {\n if (!addedComponent.idFromPath) return; // when the id was not generated from the path do nothing.\n const componentsWithSameName = addedComponents.filter(\n (a) => a.idFromPath && a.idFromPath.name === addedComponent.idFromPath?.name\n );\n const bitIdFromNameOnly = new BitId({ name: addedComponent.idFromPath.name });\n const defaultScope = await this.getDefaultScope(addedComponent.trackDir, bitIdFromNameOnly.name);\n const componentIdFromNameOnly = new ComponentID(bitIdFromNameOnly, defaultScope);\n const existingComponentWithSameName = allIds.searchWithoutScopeAndVersion(componentIdFromNameOnly);\n if (componentsWithSameName.length === 1 && !existingComponentWithSameName) {\n addedComponent.componentId = componentIdFromNameOnly;\n }\n })\n );\n }\n\n async _tryAddingMultiple(componentPathsStats: PathsStats): Promise<AddedComponent[]> {\n const addedP = Object.keys(componentPathsStats).map(async (onePath) => {\n try {\n const addedComponent = await this.addOneComponent(onePath);\n return addedComponent;\n } catch (err: any) {\n if (!(err instanceof EmptyDirectory)) throw err;\n this.warnings.emptyDirectory.push(onePath);\n return null;\n }\n });\n const added = await Promise.all(addedP);\n return compact(added);\n }\n\n _throwForOutsideConsumer(relativeToConsumerPath: PathOsBased) {\n if (relativeToConsumerPath.startsWith('..')) {\n throw new PathOutsideConsumer(relativeToConsumerPath);\n }\n }\n\n private throwForExistingParentDir(relativeToConsumerPath: PathOsBased) {\n const isParentDir = (parent: string) => {\n const relative = path.relative(parent, relativeToConsumerPath);\n return relative && !relative.startsWith('..') && !path.isAbsolute(relative);\n };\n this.bitMap.components.forEach((componentMap) => {\n if (!componentMap.rootDir) return;\n if (isParentDir(componentMap.rootDir)) {\n throw new ParentDirTracked(\n componentMap.rootDir,\n componentMap.id.toStringWithoutVersion(),\n relativeToConsumerPath\n );\n }\n });\n }\n}\n\n/**\n * validatePaths - validate if paths entered by user exist and if not throw an error\n *\n * @param {string[]} fileArray - array of paths\n * @returns {PathsStats} componentPathsStats\n */\nfunction validatePaths(fileArray: string[]): PathsStats {\n const componentPathsStats = {};\n fileArray.forEach((componentPath) => {\n if (!fs.existsSync(componentPath)) {\n throw new PathsNotExist([componentPath]);\n }\n componentPathsStats[componentPath] = {\n isDir: isDir(componentPath),\n };\n });\n return componentPathsStats;\n}\n\n/**\n * validate that no two files where added with the same id in the same bit add command\n */\nfunction validateNoDuplicateIds(addComponents: Record<string, any>[]) {\n const duplicateIds = {};\n const newGroupedComponents = groupBy(addComponents, 'componentId');\n Object.keys(newGroupedComponents).forEach((key) => {\n if (newGroupedComponents[key].length > 1) duplicateIds[key] = newGroupedComponents[key];\n });\n if (!isEmpty(duplicateIds)) throw new DuplicateIds(duplicateIds);\n}\n\n/**\n * get the current working dir name of file and file name.\n * @name fileInfo\n * @param relativePath\n * @returns {object}\n * @example\n * ```js\n * currentDirName() // => 'bit'\n * ```\n */\nfunction calculateFileInfo(relativePath: string): { PARENT: string; FILE_NAME: string } {\n const fileInfo = path.parse(relativePath);\n const fullPath = path.dirname(relativePath);\n const rootDir = path.dirname(fullPath);\n const parentDir = path.relative(rootDir, fullPath);\n return { PARENT: parentDir, FILE_NAME: fileInfo.name };\n}\n\nasync function isAutoGeneratedFile(filePath: PathOsBased): Promise<boolean> {\n const line = await firstline(filePath);\n return line.includes(AUTO_GENERATED_STAMP);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_arrayDifference","data","_interopRequireDefault","require","_firstline","_fsExtra","_ignore","path","_interopRequireWildcard","_lodash","_stringFormat","_legacy","_componentId","_legacyBitId","_legacy2","_legacy3","_exceptions","_addingIndividualFiles","_missingMainFileMultipleComponents","_parentDirTracked","_pathOutsideConsumer","_versionShouldBeRemoved","_bitError","_legacy4","_legacy5","_workspaceModules","_determineMainFile","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","REGEX_DSL_PATTERN","AddComponents","constructor","context","addProps","workspace","consumer","bitMap","componentPaths","id","main","namespace","override","trackDirFeature","warnings","alreadyUsed","emptyDirectory","existInScope","addedComponents","defaultScope","config","shouldHandleOutOfSync","getFilesAccordingToDsl","files","filesWithPotentialDsl","filesListAllMatches","map","dsl","filesListMatch","file","fileInfo","calculateFileInfo","generatedFile","format","matches","glob","matchesAfterGitIgnore","gitIgnore","filter","match","fs","existsSync","Promise","all","filesListFlatten","flat","filesListUnique","uniq","fileNormalized","pathNormalizeToLinux","fileWithCorrectCase","find","f","toLowerCase","relativeToConsumer","getPathRelativeToConsumer","_isPackageJsonOnRootDir","pathRelativeToConsumerRoot","componentMap","rootDir","Error","join","PACKAGE_JSON","normalize","_isOutsideOfWrapDir","wrapDir","wrapDirRelativeToConsumerRoot","startsWith","addOrUpdateComponentInBitMap","component","consumerPath","getPath","parsedBitId","componentId","componentFromScope","scope","getModelComponentIfExist","foundComponentFromBitMap","getComponentIfExist","ignoreVersion","componentFilesP","filePath","relativePath","isAutoGenerated","isAutoGeneratedFile","caseSensitive","existingIdOfFile","getComponentIdByPath","idOfFileIsDifferent","isEqual","push","newId","toComponentIdWithLatestVersion","componentFiles","length","_updateFilesAccordingToExistingRootDir","_areFilesArraysEqual","_updateFilesWithCurrentLetterCases","_mergeFilesWithExistingComponentMapFiles","trackDir","mainFile","determineMainFile","getRootDir","fileNotInsideTrackDir","AddingIndividualFiles","getComponentMap","addFilesToComponent","getDefaultScope","hasScope","undefined","fullName","addComponent","ComponentID","changeRootDirAndUpdateFilesAccordingly","existingRootDir","areFilesInsideExistingRootDir","every","ComponentMap","changeFilesPathAccordingToItsRootDir","currentlyAddedDir","currentlyAddedDirParentOfRootDir","BitError","existingComponentMapFile","unionBy","currentComponentMap","newFiles","currentFiles","forEach","currentFile","sameFile","newFile","_getIdAccordingToExistingComponent","currentId","idWithScope","existingComponentId","getExistingBitId","includes","VERSION_DELIMITER","hasVersion","version","getVersionFromString","VersionShouldBeRemoved","_getIdAccordingToTrackDir","dir","dirNormalizedToLinux","trackDirs","getAllTrackDirs","_addMainFileToFiles","foundFile","_findMainFileInFiles","shouldIgnore","ignores","ExcludedMainFile","test","name","basename","mainFileRelativeToConsumer","mainPath","toAbsolutePath","isDir","MainFileIsDir","normalizedMainFile","componentName","componentDefaultScopeFromComponentDirAndName","addOneComponent","componentPath","finalBitId","idFromPath","relativeComponentPath","_throwForOutsideConsumer","throwForExistingParentDir","cwd","nodir","EmptyDirectory","filteredMatches","NoFiles","filteredMatchedFiles","resolvedMainFile","absoluteComponentPath","resolve","splitPath","split","sep","lastDir","idOfTrackDir","bitId","BitId","parse","nameSpaceOrDir","getValidIdChunk","getValidBitId","addedComp","immediateDir","getIgnoreList","getIgnoreListHarmony","add","ignoreList","ignore","componentPathsStats","resolvedComponentPathsWithoutGitIgnore","resolvedComponentPathsWithGitIgnore","diff","arrayDiff","PathsNotExist","validatePaths","keys","compPath","isMultipleComponents","addMultipleComponents","logger","debugAndAddBreadCrumb","addedOne","_removeNamespaceIfNotNeeded","addedResult","linkComponents","item","Analytics","setExtraData","ids","linkToNodeModulesByIds","_removeDirectoriesWhenTheirFilesAreAdded","added","_tryAddingMultiple","validateNoDuplicateIds","_addMultipleToBitMap","allPaths","foundDir","p","dirname","debug","missingMainFiles","addedComponent","err","MissingMainFile","MissingMainFileMultipleComponents","sort","allIds","getAllBitIdsFromAllLanes","componentsWithSameName","bitIdFromNameOnly","componentIdFromNameOnly","existingComponentWithSameName","searchWithoutScopeAndVersion","addedP","onePath","compact","relativeToConsumerPath","PathOutsideConsumer","isParentDir","parent","relative","isAbsolute","components","ParentDirTracked","toStringWithoutVersion","exports","fileArray","addComponents","duplicateIds","newGroupedComponents","groupBy","key","isEmpty","DuplicateIds","fullPath","parentDir","PARENT","FILE_NAME","line","firstline","AUTO_GENERATED_STAMP"],"sources":["add-components.ts"],"sourcesContent":["import arrayDiff from 'array-difference';\nimport firstline from 'firstline';\nimport fs from 'fs-extra';\nimport ignore from 'ignore';\nimport * as path from 'path';\nimport { compact, groupBy, isEmpty, unionBy, uniq } from 'lodash';\nimport format from 'string-format';\nimport { Analytics } from '@teambit/legacy.analytics';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitIdStr, BitId } from '@teambit/legacy-bit-id';\nimport { PACKAGE_JSON, VERSION_DELIMITER, AUTO_GENERATED_STAMP } from '@teambit/legacy.constants';\nimport {\n BitMap,\n ComponentMap,\n ComponentMapFile,\n Config,\n getIgnoreListHarmony,\n MissingMainFile,\n} from '@teambit/legacy.bit-map';\nimport { DuplicateIds, EmptyDirectory, ExcludedMainFile, MainFileIsDir, NoFiles, PathsNotExist } from './exceptions';\nimport { AddingIndividualFiles } from './exceptions/adding-individual-files';\nimport MissingMainFileMultipleComponents from './exceptions/missing-main-file-multiple-components';\nimport { ParentDirTracked } from './exceptions/parent-dir-tracked';\nimport PathOutsideConsumer from './exceptions/path-outside-consumer';\nimport VersionShouldBeRemoved from './exceptions/version-should-be-removed';\nimport { Consumer } from '@teambit/legacy.consumer';\nimport { BitError } from '@teambit/bit-error';\nimport { logger } from '@teambit/legacy.logger';\nimport { glob, isDir, pathNormalizeToLinux, PathLinux, PathLinuxRelative, PathOsBased } from '@teambit/legacy.utils';\nimport { linkToNodeModulesByIds } from '@teambit/workspace.modules.node-modules-linker';\nimport { Workspace } from '@teambit/workspace';\nimport determineMainFile from './determine-main-file';\n\nexport type AddResult = { id: ComponentID; files: ComponentMapFile[] };\nexport type Warnings = {\n alreadyUsed: Record<string, any>;\n emptyDirectory: string[];\n existInScope: ComponentID[];\n};\nexport type AddActionResults = { addedComponents: AddResult[]; warnings: Warnings };\nexport type PathOrDSL = PathOsBased | string; // can be a path or a DSL, e.g: tests/{PARENT}/{FILE_NAME}\n// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\ntype PathsStats = { [PathOsBased]: { isDir: boolean } };\nexport type AddedComponent = {\n componentId: ComponentID;\n files: ComponentMapFile[];\n mainFile?: PathOsBased | null | undefined;\n trackDir: PathOsBased;\n idFromPath:\n | {\n name: string;\n namespace: string;\n }\n | null\n | undefined;\n immediateDir?: string;\n};\nconst REGEX_DSL_PATTERN = /{([^}]+)}/g;\n\nexport type AddProps = {\n componentPaths: PathOsBased[];\n id?: string;\n main?: PathOsBased;\n namespace?: string;\n override: boolean;\n trackDirFeature?: boolean;\n defaultScope?: string;\n config?: Config;\n shouldHandleOutOfSync?: boolean;\n env?: string;\n};\n\nexport type AddContext = {\n workspace: Workspace;\n};\n\nexport default class AddComponents {\n workspace: Workspace;\n consumer: Consumer;\n bitMap: BitMap;\n componentPaths: PathOsBased[];\n id: string | null | undefined; // id entered by the user\n main: PathOsBased | null | undefined;\n namespace: string | null | undefined;\n override: boolean; // (default = false) replace the files array or only add files.\n trackDirFeature: boolean | null | undefined;\n warnings: Warnings;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n ignoreList: string[];\n gitIgnore: any;\n addedComponents: AddResult[];\n defaultScope?: string; // helpful for out-of-sync\n config?: Config;\n shouldHandleOutOfSync?: boolean; // only bit-add (not bit-create/new) should handle out-of-sync scenario\n constructor(context: AddContext, addProps: AddProps) {\n this.workspace = context.workspace;\n this.consumer = context.workspace.consumer;\n // @ts-ignore todo: remove after deleting teambit.legacy\n this.bitMap = this.consumer.bitMap;\n this.componentPaths = addProps.componentPaths;\n this.id = addProps.id;\n this.main = addProps.main;\n this.namespace = addProps.namespace;\n this.override = addProps.override;\n this.trackDirFeature = addProps.trackDirFeature;\n this.warnings = {\n alreadyUsed: {},\n emptyDirectory: [],\n existInScope: [],\n };\n this.addedComponents = [];\n this.defaultScope = addProps.defaultScope;\n this.config = addProps.config;\n this.shouldHandleOutOfSync = addProps.shouldHandleOutOfSync;\n }\n\n /**\n * @param {string[]} files - array of file-paths from which it should search for the dsl patterns.\n * @param {*} filesWithPotentialDsl - array of file-path which may have DSL patterns\n *\n * @returns array of file-paths from 'files' parameter that match the patterns from 'filesWithPotentialDsl' parameter\n */\n async getFilesAccordingToDsl(files: PathLinux[], filesWithPotentialDsl: PathOrDSL[]): Promise<PathLinux[]> {\n const filesListAllMatches = filesWithPotentialDsl.map(async (dsl) => {\n const filesListMatch = files.map(async (file) => {\n const fileInfo = calculateFileInfo(file);\n const generatedFile = format(dsl, fileInfo);\n const matches = await glob(generatedFile);\n const matchesAfterGitIgnore = this.gitIgnore.filter(matches);\n return matchesAfterGitIgnore.filter((match) => fs.existsSync(match));\n });\n return Promise.all(filesListMatch);\n });\n\n const filesListFlatten = (await Promise.all(filesListAllMatches)).flat();\n const filesListUnique = uniq(filesListFlatten);\n return filesListUnique.map((file) => {\n // when files array has the test file with different letter case, use the one from the file array\n const fileNormalized = pathNormalizeToLinux(file);\n const fileWithCorrectCase = files.find((f) => f.toLowerCase() === fileNormalized.toLowerCase()) || fileNormalized;\n const relativeToConsumer = this.consumer.getPathRelativeToConsumer(fileWithCorrectCase);\n return pathNormalizeToLinux(relativeToConsumer);\n });\n }\n\n /**\n * for imported component, the package.json in the root directory is a bit-generated file and as\n * such, it should be ignored\n */\n _isPackageJsonOnRootDir(pathRelativeToConsumerRoot: PathLinux, componentMap: ComponentMap) {\n if (!componentMap.rootDir) {\n throw new Error('_isPackageJsonOnRootDir should not get called on non imported components');\n }\n return path.join(componentMap.rootDir, PACKAGE_JSON) === path.normalize(pathRelativeToConsumerRoot);\n }\n\n /**\n * imported components might have wrapDir, when they do, files should not be added outside of\n * that wrapDir\n */\n _isOutsideOfWrapDir(pathRelativeToConsumerRoot: PathLinux, componentMap: ComponentMap) {\n if (!componentMap.rootDir) {\n throw new Error('_isOutsideOfWrapDir should not get called on non imported components');\n }\n if (!componentMap.wrapDir) return false;\n const wrapDirRelativeToConsumerRoot = path.join(componentMap.rootDir, componentMap.wrapDir);\n return !path.normalize(pathRelativeToConsumerRoot).startsWith(wrapDirRelativeToConsumerRoot);\n }\n\n /**\n * Add or update existing (imported and new) component according to bitmap\n * there are 3 options:\n * 1. a user is adding a new component. there is no record for this component in bit.map\n * 2. a user is updating an existing component. there is a record for this component in bit.map\n * 3. some or all the files of this component were previously added as another component-id.\n */\n async addOrUpdateComponentInBitMap(component: AddedComponent): Promise<AddResult | null | undefined> {\n const consumerPath = this.consumer.getPath();\n const parsedBitId = component.componentId;\n const componentFromScope = await this.consumer.scope.getModelComponentIfExist(parsedBitId);\n const files: ComponentMapFile[] = component.files;\n const foundComponentFromBitMap = this.bitMap.getComponentIfExist(component.componentId, {\n ignoreVersion: true,\n });\n const componentFilesP = files.map(async (file: ComponentMapFile) => {\n // $FlowFixMe null is removed later on\n const filePath = path.join(consumerPath, file.relativePath);\n const isAutoGenerated = await isAutoGeneratedFile(filePath);\n if (isAutoGenerated) {\n return null;\n }\n const caseSensitive = false;\n const existingIdOfFile = this.bitMap.getComponentIdByPath(file.relativePath, caseSensitive);\n const idOfFileIsDifferent = existingIdOfFile && !existingIdOfFile.isEqual(parsedBitId);\n if (idOfFileIsDifferent) {\n // not imported component file but exists in bitmap\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.warnings.alreadyUsed[existingIdOfFile]) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.warnings.alreadyUsed[existingIdOfFile].push(file.relativePath);\n } else {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.warnings.alreadyUsed[existingIdOfFile] = [file.relativePath];\n }\n return null;\n }\n if (!foundComponentFromBitMap && componentFromScope && this.shouldHandleOutOfSync) {\n const newId = componentFromScope.toComponentIdWithLatestVersion();\n if (!this.defaultScope || this.defaultScope === newId.scope) {\n // otherwise, if defaultScope !== newId.scope, they're different components,\n // and no need to change the id.\n // for more details about this scenario, see https://github.com/teambit/bit/issues/1543, last case.\n component.componentId = newId;\n this.warnings.existInScope.push(newId);\n }\n }\n return file;\n });\n // @ts-ignore it can't be null due to the filter function\n const componentFiles: ComponentMapFile[] = (await Promise.all(componentFilesP)).filter((file) => file);\n if (!componentFiles.length) return { id: component.componentId, files: [] };\n if (foundComponentFromBitMap) {\n this._updateFilesAccordingToExistingRootDir(foundComponentFromBitMap, componentFiles, component);\n }\n if (this.trackDirFeature) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.bitMap._areFilesArraysEqual(foundComponentFromBitMap.files, componentFiles)) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return foundComponentFromBitMap;\n }\n }\n if (!this.override && foundComponentFromBitMap) {\n this._updateFilesWithCurrentLetterCases(foundComponentFromBitMap, componentFiles);\n component.files = this._mergeFilesWithExistingComponentMapFiles(componentFiles, foundComponentFromBitMap.files);\n } else {\n component.files = componentFiles;\n }\n\n const { componentId, trackDir } = component;\n const mainFile = determineMainFile(component, foundComponentFromBitMap);\n const getRootDir = (): PathLinuxRelative => {\n if (this.trackDirFeature) throw new Error('track dir should not calculate the rootDir');\n if (foundComponentFromBitMap) return foundComponentFromBitMap.rootDir;\n if (!trackDir) throw new Error(`addOrUpdateComponentInBitMap expect to have trackDir for non-legacy workspace`);\n const fileNotInsideTrackDir = componentFiles.find(\n (file) => !pathNormalizeToLinux(file.relativePath).startsWith(`${pathNormalizeToLinux(trackDir)}/`)\n );\n if (fileNotInsideTrackDir) {\n // we check for this error before. however, it's possible that a user have one trackDir\n // and another dir for the tests.\n throw new AddingIndividualFiles(fileNotInsideTrackDir.relativePath);\n }\n return pathNormalizeToLinux(trackDir);\n };\n const getComponentMap = async (): Promise<ComponentMap> => {\n if (this.trackDirFeature) {\n return this.bitMap.addFilesToComponent({ componentId, files: component.files });\n }\n const rootDir = getRootDir();\n const getDefaultScope = async () => {\n if (componentId.hasScope()) return undefined;\n return this.getDefaultScope(rootDir, componentId.fullName);\n };\n const defaultScope = await getDefaultScope();\n const componentMap = this.bitMap.addComponent({\n componentId: new ComponentID(componentId._legacy, defaultScope),\n files: component.files,\n defaultScope,\n config: this.config,\n mainFile,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n override: this.override,\n });\n componentMap.changeRootDirAndUpdateFilesAccordingly(rootDir);\n return componentMap;\n };\n const componentMap = await getComponentMap();\n return { id: componentId, files: componentMap.files };\n }\n\n /**\n * current componentFiles are relative to the workspace. we want them relative to the rootDir.\n */\n _updateFilesAccordingToExistingRootDir(\n foundComponentFromBitMap: ComponentMap,\n componentFiles: ComponentMapFile[],\n component: AddedComponent\n ) {\n const existingRootDir = foundComponentFromBitMap.rootDir;\n if (!existingRootDir) return; // nothing to do.\n const areFilesInsideExistingRootDir = componentFiles.every((file) =>\n pathNormalizeToLinux(file.relativePath).startsWith(`${existingRootDir}/`)\n );\n if (areFilesInsideExistingRootDir) {\n ComponentMap.changeFilesPathAccordingToItsRootDir(existingRootDir, componentFiles);\n return;\n }\n // some (or all) added files are outside the existing rootDir, the rootDir needs to be changed\n // if a directory was added and it's a parent of the existing rootDir, change the rootDir to\n // the currently added rootDir.\n const currentlyAddedDir = pathNormalizeToLinux(component.trackDir);\n const currentlyAddedDirParentOfRootDir = currentlyAddedDir && existingRootDir.startsWith(`${currentlyAddedDir}/`);\n if (currentlyAddedDirParentOfRootDir) {\n foundComponentFromBitMap.changeRootDirAndUpdateFilesAccordingly(currentlyAddedDir);\n ComponentMap.changeFilesPathAccordingToItsRootDir(currentlyAddedDir, componentFiles);\n return;\n }\n throw new BitError(`unable to add individual files outside the root dir (${existingRootDir}) of ${component.componentId}.\nyou can add the directory these files are located at and it'll change the root dir of the component accordingly`);\n // we might want to change the behavior here to not throw an error and only change the rootDir to \".\"\n // foundComponentFromBitMap.changeRootDirAndUpdateFilesAccordingly('.');\n }\n\n /**\n * the risk with merging the currently added files with the existing bitMap files is overriding\n * the `test` property. e.g. the component directory is re-added without adding the tests flag to\n * track new files in that directory. in this case, we want to preserve the `test` property.\n */\n _mergeFilesWithExistingComponentMapFiles(\n componentFiles: ComponentMapFile[],\n existingComponentMapFile: ComponentMapFile[]\n ) {\n return unionBy(existingComponentMapFile, componentFiles, 'relativePath');\n }\n\n /**\n * if an existing file is for example uppercase and the new file is lowercase it has different\n * behavior according to the OS. some OS are case sensitive, some are not.\n * it's safer to avoid saving both files and instead, replacing the old file with the new one.\n * in case a file has replaced and it is also a mainFile, replace the mainFile as well\n */\n _updateFilesWithCurrentLetterCases(currentComponentMap: ComponentMap, newFiles: ComponentMapFile[]) {\n const currentFiles = currentComponentMap.files;\n currentFiles.forEach((currentFile) => {\n const sameFile = newFiles.find(\n (newFile) => newFile.relativePath.toLowerCase() === currentFile.relativePath.toLowerCase()\n );\n if (sameFile && currentFile.relativePath !== sameFile.relativePath) {\n if (currentComponentMap.mainFile === currentFile.relativePath) {\n currentComponentMap.mainFile = sameFile.relativePath;\n }\n currentFile.relativePath = sameFile.relativePath;\n }\n });\n }\n\n /**\n * if the id is already saved in bitmap file, it might have more data (such as scope, version)\n * use that id instead.\n */\n private _getIdAccordingToExistingComponent(currentId: BitIdStr): ComponentID | undefined {\n const idWithScope = this.defaultScope ? `${this.defaultScope}/${currentId}` : currentId;\n const existingComponentId = this.bitMap.getExistingBitId(idWithScope, false);\n if (currentId.includes(VERSION_DELIMITER)) {\n if (\n !existingComponentId || // this id is new, it shouldn't have a version\n !existingComponentId.hasVersion() || // this component is new, it shouldn't have a version\n // user shouldn't add files to a an existing component with different version\n existingComponentId.version !== ComponentID.getVersionFromString(currentId)\n ) {\n throw new VersionShouldBeRemoved(currentId);\n }\n }\n return existingComponentId;\n }\n\n _getIdAccordingToTrackDir(dir: PathOsBased): ComponentID | null | undefined {\n const dirNormalizedToLinux = pathNormalizeToLinux(dir);\n const trackDirs = this.bitMap.getAllTrackDirs();\n if (!trackDirs) return null;\n return trackDirs[dirNormalizedToLinux];\n }\n\n /**\n * used for updating main file if exists or doesn't exists\n */\n _addMainFileToFiles(files: ComponentMapFile[]): PathOsBased | null | undefined {\n let mainFile = this.main;\n if (mainFile && mainFile.match(REGEX_DSL_PATTERN)) {\n // it's a DSL\n files.forEach((file) => {\n const fileInfo = calculateFileInfo(file.relativePath);\n const generatedFile = format(mainFile, fileInfo);\n const foundFile = this._findMainFileInFiles(generatedFile, files);\n if (foundFile) {\n mainFile = foundFile.relativePath;\n }\n if (fs.existsSync(generatedFile) && !foundFile) {\n const shouldIgnore = this.gitIgnore.ignores(generatedFile);\n if (shouldIgnore) {\n // check if file is in exclude list\n throw new ExcludedMainFile(generatedFile);\n }\n files.push({\n relativePath: pathNormalizeToLinux(generatedFile),\n test: false,\n name: path.basename(generatedFile),\n });\n mainFile = generatedFile;\n }\n });\n }\n if (!mainFile) return undefined;\n const mainFileRelativeToConsumer = this.consumer.getPathRelativeToConsumer(mainFile);\n const mainPath = this.consumer.toAbsolutePath(mainFileRelativeToConsumer);\n if (fs.existsSync(mainPath)) {\n const shouldIgnore = this.gitIgnore.ignores(mainFileRelativeToConsumer);\n if (shouldIgnore) throw new ExcludedMainFile(mainFileRelativeToConsumer);\n if (isDir(mainPath)) {\n throw new MainFileIsDir(mainPath);\n }\n const foundFile = this._findMainFileInFiles(mainFileRelativeToConsumer, files);\n if (foundFile) {\n return foundFile.relativePath;\n }\n files.push({\n relativePath: pathNormalizeToLinux(mainFileRelativeToConsumer),\n test: false,\n name: path.basename(mainFileRelativeToConsumer),\n });\n return mainFileRelativeToConsumer;\n }\n return mainFile;\n }\n\n _findMainFileInFiles(mainFile: string, files: ComponentMapFile[]) {\n const normalizedMainFile = pathNormalizeToLinux(mainFile).toLowerCase();\n return files.find((file) => file.relativePath.toLowerCase() === normalizedMainFile);\n }\n\n private async getDefaultScope(rootDir: string, componentName: string): Promise<string> {\n return (this.defaultScope ||\n (await this.workspace.componentDefaultScopeFromComponentDirAndName(rootDir, componentName))) as string;\n }\n\n /**\n * given the component paths, prepare the id, mainFile and files to be added later on to bitmap\n * the id of the component is either entered by the user or, if not entered, concluded by the path.\n * e.g. bar/foo.js, the id would be bar/foo.\n * in case bitmap has already the same id, the complete id is taken from bitmap (see _getIdAccordingToExistingComponent)\n */\n async addOneComponent(componentPath: PathOsBased): Promise<AddedComponent> {\n let finalBitId: ComponentID | undefined; // final id to use for bitmap file\n let idFromPath;\n if (this.id) {\n finalBitId = this._getIdAccordingToExistingComponent(this.id);\n }\n const relativeComponentPath = this.consumer.getPathRelativeToConsumer(componentPath);\n this._throwForOutsideConsumer(relativeComponentPath);\n this.throwForExistingParentDir(relativeComponentPath);\n const matches = await glob(path.join(relativeComponentPath, '**'), {\n cwd: this.consumer.getPath(),\n nodir: true,\n });\n\n if (!matches.length) throw new EmptyDirectory(componentPath);\n\n const filteredMatches = this.gitIgnore.filter(matches);\n\n if (!filteredMatches.length) {\n throw new NoFiles(matches);\n }\n\n const filteredMatchedFiles = filteredMatches.map((match: PathOsBased) => {\n return { relativePath: pathNormalizeToLinux(match), test: false, name: path.basename(match) };\n });\n const resolvedMainFile = this._addMainFileToFiles(filteredMatchedFiles);\n\n const absoluteComponentPath = path.resolve(componentPath);\n const splitPath = absoluteComponentPath.split(path.sep);\n const lastDir = splitPath[splitPath.length - 1];\n const idOfTrackDir = this._getIdAccordingToTrackDir(componentPath);\n if (!finalBitId) {\n if (this.id) {\n const bitId = BitId.parse(this.id, false);\n const defaultScope = await this.getDefaultScope(relativeComponentPath, bitId.name);\n finalBitId = new ComponentID(bitId, defaultScope);\n } else if (idOfTrackDir) {\n finalBitId = idOfTrackDir;\n } else {\n const nameSpaceOrDir = this.namespace || splitPath[splitPath.length - 2];\n if (!this.namespace) {\n idFromPath = { namespace: BitId.getValidIdChunk(nameSpaceOrDir), name: BitId.getValidIdChunk(lastDir) };\n }\n const bitId = BitId.getValidBitId(nameSpaceOrDir, lastDir);\n const defaultScope = await this.getDefaultScope(relativeComponentPath, bitId.name);\n finalBitId = new ComponentID(bitId, defaultScope);\n }\n }\n const trackDir = relativeComponentPath;\n const addedComp = {\n componentId: finalBitId,\n files: filteredMatchedFiles,\n mainFile: resolvedMainFile,\n trackDir,\n idFromPath,\n immediateDir: lastDir,\n };\n\n return addedComp;\n }\n\n async getIgnoreList(): Promise<string[]> {\n const consumerPath = this.consumer.getPath();\n return getIgnoreListHarmony(consumerPath);\n }\n\n async add(): Promise<AddActionResults> {\n this.ignoreList = await this.getIgnoreList();\n this.gitIgnore = ignore().add(this.ignoreList); // add ignore list\n\n let componentPathsStats: PathsStats = {};\n\n const resolvedComponentPathsWithoutGitIgnore = (\n await Promise.all(this.componentPaths.map((componentPath) => glob(componentPath)))\n ).flat();\n this.gitIgnore = ignore().add(this.ignoreList); // add ignore list\n\n const resolvedComponentPathsWithGitIgnore = this.gitIgnore.filter(resolvedComponentPathsWithoutGitIgnore);\n // Run diff on both arrays to see what was filtered out because of the gitignore file\n const diff = arrayDiff(resolvedComponentPathsWithGitIgnore, resolvedComponentPathsWithoutGitIgnore);\n\n if (!resolvedComponentPathsWithoutGitIgnore.length) {\n throw new PathsNotExist(this.componentPaths);\n }\n if (resolvedComponentPathsWithGitIgnore.length) {\n componentPathsStats = validatePaths(resolvedComponentPathsWithGitIgnore);\n } else {\n throw new NoFiles(diff);\n }\n Object.keys(componentPathsStats).forEach((compPath) => {\n if (!componentPathsStats[compPath].isDir) {\n throw new AddingIndividualFiles(compPath);\n }\n });\n if (Object.keys(componentPathsStats).length > 1 && this.id) {\n throw new BitError(\n `the --id flag (${this.id}) is used for a single component only, however, got ${this.componentPaths.length} paths`\n );\n }\n // if a user entered multiple paths and entered an id, he wants all these paths to be one component\n // conversely, if a user entered multiple paths without id, he wants each dir as an individual component\n const isMultipleComponents = Object.keys(componentPathsStats).length > 1;\n if (isMultipleComponents) {\n await this.addMultipleComponents(componentPathsStats);\n } else {\n logger.debugAndAddBreadCrumb('add-components', 'adding one component');\n // when a user enters more than one directory, he would like to keep the directories names\n // so then when a component is imported, it will write the files into the original directories\n const addedOne = await this.addOneComponent(Object.keys(componentPathsStats)[0]);\n await this._removeNamespaceIfNotNeeded([addedOne]);\n if (addedOne.files.length) {\n const addedResult = await this.addOrUpdateComponentInBitMap(addedOne);\n if (addedResult) this.addedComponents.push(addedResult);\n }\n }\n await this.linkComponents(this.addedComponents.map((item) => item.id));\n Analytics.setExtraData('num_components', this.addedComponents.length);\n return { addedComponents: this.addedComponents, warnings: this.warnings };\n }\n\n async linkComponents(ids: ComponentID[]) {\n if (this.trackDirFeature) {\n // if trackDirFeature is set, it happens during the component-load and because we load the\n // components in the next line, it gets into an infinite loop.\n return;\n }\n await linkToNodeModulesByIds(this.workspace, ids);\n }\n\n async addMultipleComponents(componentPathsStats: PathsStats): Promise<void> {\n logger.debugAndAddBreadCrumb('add-components', 'adding multiple components');\n this._removeDirectoriesWhenTheirFilesAreAdded(componentPathsStats);\n const added = await this._tryAddingMultiple(componentPathsStats);\n validateNoDuplicateIds(added);\n await this._removeNamespaceIfNotNeeded(added);\n await this._addMultipleToBitMap(added);\n }\n\n /**\n * some uses of wildcards might add directories and their files at the same time, in such cases\n * only the files are needed and the directories can be ignored.\n * @see https://github.com/teambit/bit/issues/1406 for more details\n */\n _removeDirectoriesWhenTheirFilesAreAdded(componentPathsStats: PathsStats) {\n const allPaths = Object.keys(componentPathsStats);\n allPaths.forEach((componentPath) => {\n const foundDir = allPaths.find((p) => p === path.dirname(componentPath));\n if (foundDir && componentPathsStats[foundDir]) {\n logger.debug(`add-components._removeDirectoriesWhenTheirFilesAreAdded, ignoring ${foundDir}`);\n delete componentPathsStats[foundDir];\n }\n });\n }\n\n async _addMultipleToBitMap(added: AddedComponent[]): Promise<void> {\n const missingMainFiles = [];\n await Promise.all(\n added.map(async (component) => {\n if (component.files.length) {\n try {\n const addedComponent = await this.addOrUpdateComponentInBitMap(component);\n if (addedComponent && addedComponent.files.length) this.addedComponents.push(addedComponent);\n } catch (err: any) {\n if (!(err instanceof MissingMainFile)) throw err;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n missingMainFiles.push(err);\n }\n }\n })\n );\n if (missingMainFiles.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n throw new MissingMainFileMultipleComponents(missingMainFiles.map((err) => err.componentId).sort());\n }\n }\n\n async _removeNamespaceIfNotNeeded(addedComponents: AddedComponent[]) {\n const allIds = this.bitMap.getAllBitIdsFromAllLanes();\n await Promise.all(\n addedComponents.map(async (addedComponent) => {\n if (!addedComponent.idFromPath) return; // when the id was not generated from the path do nothing.\n const componentsWithSameName = addedComponents.filter(\n (a) => a.idFromPath && a.idFromPath.name === addedComponent.idFromPath?.name\n );\n const bitIdFromNameOnly = new BitId({ name: addedComponent.idFromPath.name });\n const defaultScope = await this.getDefaultScope(addedComponent.trackDir, bitIdFromNameOnly.name);\n const componentIdFromNameOnly = new ComponentID(bitIdFromNameOnly, defaultScope);\n const existingComponentWithSameName = allIds.searchWithoutScopeAndVersion(componentIdFromNameOnly);\n if (componentsWithSameName.length === 1 && !existingComponentWithSameName) {\n addedComponent.componentId = componentIdFromNameOnly;\n }\n })\n );\n }\n\n async _tryAddingMultiple(componentPathsStats: PathsStats): Promise<AddedComponent[]> {\n const addedP = Object.keys(componentPathsStats).map(async (onePath) => {\n try {\n const addedComponent = await this.addOneComponent(onePath);\n return addedComponent;\n } catch (err: any) {\n if (!(err instanceof EmptyDirectory)) throw err;\n this.warnings.emptyDirectory.push(onePath);\n return null;\n }\n });\n const added = await Promise.all(addedP);\n return compact(added);\n }\n\n _throwForOutsideConsumer(relativeToConsumerPath: PathOsBased) {\n if (relativeToConsumerPath.startsWith('..')) {\n throw new PathOutsideConsumer(relativeToConsumerPath);\n }\n }\n\n private throwForExistingParentDir(relativeToConsumerPath: PathOsBased) {\n const isParentDir = (parent: string) => {\n const relative = path.relative(parent, relativeToConsumerPath);\n return relative && !relative.startsWith('..') && !path.isAbsolute(relative);\n };\n this.bitMap.components.forEach((componentMap) => {\n if (!componentMap.rootDir) return;\n if (isParentDir(componentMap.rootDir)) {\n throw new ParentDirTracked(\n componentMap.rootDir,\n componentMap.id.toStringWithoutVersion(),\n relativeToConsumerPath\n );\n }\n });\n }\n}\n\n/**\n * validatePaths - validate if paths entered by user exist and if not throw an error\n *\n * @param {string[]} fileArray - array of paths\n * @returns {PathsStats} componentPathsStats\n */\nfunction validatePaths(fileArray: string[]): PathsStats {\n const componentPathsStats = {};\n fileArray.forEach((componentPath) => {\n if (!fs.existsSync(componentPath)) {\n throw new PathsNotExist([componentPath]);\n }\n componentPathsStats[componentPath] = {\n isDir: isDir(componentPath),\n };\n });\n return componentPathsStats;\n}\n\n/**\n * validate that no two files where added with the same id in the same bit add command\n */\nfunction validateNoDuplicateIds(addComponents: Record<string, any>[]) {\n const duplicateIds = {};\n const newGroupedComponents = groupBy(addComponents, 'componentId');\n Object.keys(newGroupedComponents).forEach((key) => {\n if (newGroupedComponents[key].length > 1) duplicateIds[key] = newGroupedComponents[key];\n });\n if (!isEmpty(duplicateIds)) throw new DuplicateIds(duplicateIds);\n}\n\n/**\n * get the current working dir name of file and file name.\n * @name fileInfo\n * @param relativePath\n * @returns {object}\n * @example\n * ```js\n * currentDirName() // => 'bit'\n * ```\n */\nfunction calculateFileInfo(relativePath: string): { PARENT: string; FILE_NAME: string } {\n const fileInfo = path.parse(relativePath);\n const fullPath = path.dirname(relativePath);\n const rootDir = path.dirname(fullPath);\n const parentDir = path.relative(rootDir, fullPath);\n return { PARENT: parentDir, FILE_NAME: fileInfo.name };\n}\n\nasync function isAutoGeneratedFile(filePath: PathOsBased): Promise<boolean> {\n const line = await firstline(filePath);\n return line.includes(AUTO_GENERATED_STAMP);\n}\n"],"mappings":";;;;;;AAAA,SAAAA,iBAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,gBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,KAAA;EAAA,MAAAN,IAAA,GAAAO,uBAAA,CAAAL,OAAA;EAAAI,IAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,QAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,cAAA;EAAA,MAAAT,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAO,aAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,QAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,OAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,aAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,YAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,aAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,YAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,SAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,QAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAe,YAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,WAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,uBAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,sBAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,mCAAA;EAAA,MAAAjB,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAe,kCAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,kBAAA;EAAA,MAAAlB,IAAA,GAAAE,OAAA;EAAAgB,iBAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,qBAAA;EAAA,MAAAnB,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAiB,oBAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,wBAAA;EAAA,MAAApB,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAkB,uBAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAqB,UAAA;EAAA,MAAArB,IAAA,GAAAE,OAAA;EAAAmB,SAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,SAAA;EAAA,MAAAtB,IAAA,GAAAE,OAAA;EAAAoB,QAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAuB,SAAA;EAAA,MAAAvB,IAAA,GAAAE,OAAA;EAAAqB,QAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAwB,kBAAA;EAAA,MAAAxB,IAAA,GAAAE,OAAA;EAAAsB,iBAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAyB,mBAAA;EAAA,MAAAzB,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAuB,kBAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsD,SAAA0B,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAApB,wBAAAoB,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAlC,uBAAA0B,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAE,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAkB,cAAA,CAAAlB,CAAA,MAAAF,CAAA,GAAAW,MAAA,CAAAC,cAAA,CAAAZ,CAAA,EAAAE,CAAA,IAAAmB,KAAA,EAAAlB,CAAA,EAAAmB,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAxB,CAAA,CAAAE,CAAA,IAAAC,CAAA,EAAAH,CAAA;AAAA,SAAAoB,eAAAjB,CAAA,QAAAc,CAAA,GAAAQ,YAAA,CAAAtB,CAAA,uCAAAc,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAQ,aAAAtB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAH,CAAA,GAAAG,CAAA,CAAAuB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAiB,CAAA,GAAAjB,CAAA,CAAAgB,IAAA,CAAAb,CAAA,EAAAD,CAAA,uCAAAe,CAAA,SAAAA,CAAA,YAAAW,SAAA,yEAAA1B,CAAA,GAAA2B,MAAA,GAAAC,MAAA,EAAA3B,CAAA;AASR;AAC9C;AACA;;AAgBA,MAAM4B,iBAAiB,GAAG,YAAY;AAmBvB,MAAMC,aAAa,CAAC;EAiBA;EACjCC,WAAWA,CAACC,OAAmB,EAAEC,QAAkB,EAAE;IAAAhB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAbtB;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAGZ;IAAAA,eAAA;IAAAA,eAAA;IAGnB;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAIuB;IAAAA,eAAA;IAAAA,eAAA;IAIrB,IAAI,CAACiB,SAAS,GAAGF,OAAO,CAACE,SAAS;IAClC,IAAI,CAACC,QAAQ,GAAGH,OAAO,CAACE,SAAS,CAACC,QAAQ;IAC1C;IACA,IAAI,CAACC,MAAM,GAAG,IAAI,CAACD,QAAQ,CAACC,MAAM;IAClC,IAAI,CAACC,cAAc,GAAGJ,QAAQ,CAACI,cAAc;IAC7C,IAAI,CAACC,EAAE,GAAGL,QAAQ,CAACK,EAAE;IACrB,IAAI,CAACC,IAAI,GAAGN,QAAQ,CAACM,IAAI;IACzB,IAAI,CAACC,SAAS,GAAGP,QAAQ,CAACO,SAAS;IACnC,IAAI,CAACC,QAAQ,GAAGR,QAAQ,CAACQ,QAAQ;IACjC,IAAI,CAACC,eAAe,GAAGT,QAAQ,CAACS,eAAe;IAC/C,IAAI,CAACC,QAAQ,GAAG;MACdC,WAAW,EAAE,CAAC,CAAC;MACfC,cAAc,EAAE,EAAE;MAClBC,YAAY,EAAE;IAChB,CAAC;IACD,IAAI,CAACC,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,YAAY,GAAGf,QAAQ,CAACe,YAAY;IACzC,IAAI,CAACC,MAAM,GAAGhB,QAAQ,CAACgB,MAAM;IAC7B,IAAI,CAACC,qBAAqB,GAAGjB,QAAQ,CAACiB,qBAAqB;EAC7D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,sBAAsBA,CAACC,KAAkB,EAAEC,qBAAkC,EAAwB;IACzG,MAAMC,mBAAmB,GAAGD,qBAAqB,CAACE,GAAG,CAAC,MAAOC,GAAG,IAAK;MACnE,MAAMC,cAAc,GAAGL,KAAK,CAACG,GAAG,CAAC,MAAOG,IAAI,IAAK;QAC/C,MAAMC,QAAQ,GAAGC,iBAAiB,CAACF,IAAI,CAAC;QACxC,MAAMG,aAAa,GAAG,IAAAC,uBAAM,EAACN,GAAG,EAAEG,QAAQ,CAAC;QAC3C,MAAMI,OAAO,GAAG,MAAM,IAAAC,eAAI,EAACH,aAAa,CAAC;QACzC,MAAMI,qBAAqB,GAAG,IAAI,CAACC,SAAS,CAACC,MAAM,CAACJ,OAAO,CAAC;QAC5D,OAAOE,qBAAqB,CAACE,MAAM,CAAEC,KAAK,IAAKC,kBAAE,CAACC,UAAU,CAACF,KAAK,CAAC,CAAC;MACtE,CAAC,CAAC;MACF,OAAOG,OAAO,CAACC,GAAG,CAACf,cAAc,CAAC;IACpC,CAAC,CAAC;IAEF,MAAMgB,gBAAgB,GAAG,CAAC,MAAMF,OAAO,CAACC,GAAG,CAAClB,mBAAmB,CAAC,EAAEoB,IAAI,CAAC,CAAC;IACxE,MAAMC,eAAe,GAAG,IAAAC,cAAI,EAACH,gBAAgB,CAAC;IAC9C,OAAOE,eAAe,CAACpB,GAAG,CAAEG,IAAI,IAAK;MACnC;MACA,MAAMmB,cAAc,GAAG,IAAAC,+BAAoB,EAACpB,IAAI,CAAC;MACjD,MAAMqB,mBAAmB,GAAG3B,KAAK,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,WAAW,CAAC,CAAC,KAAKL,cAAc,CAACK,WAAW,CAAC,CAAC,CAAC,IAAIL,cAAc;MACjH,MAAMM,kBAAkB,GAAG,IAAI,CAAChD,QAAQ,CAACiD,yBAAyB,CAACL,mBAAmB,CAAC;MACvF,OAAO,IAAAD,+BAAoB,EAACK,kBAAkB,CAAC;IACjD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACEE,uBAAuBA,CAACC,0BAAqC,EAAEC,YAA0B,EAAE;IACzF,IAAI,CAACA,YAAY,CAACC,OAAO,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,0EAA0E,CAAC;IAC7F;IACA,OAAOhH,IAAI,CAAD,CAAC,CAACiH,IAAI,CAACH,YAAY,CAACC,OAAO,EAAEG,uBAAY,CAAC,KAAKlH,IAAI,CAAD,CAAC,CAACmH,SAAS,CAACN,0BAA0B,CAAC;EACrG;;EAEA;AACF;AACA;AACA;EACEO,mBAAmBA,CAACP,0BAAqC,EAAEC,YAA0B,EAAE;IACrF,IAAI,CAACA,YAAY,CAACC,OAAO,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,sEAAsE,CAAC;IACzF;IACA,IAAI,CAACF,YAAY,CAACO,OAAO,EAAE,OAAO,KAAK;IACvC,MAAMC,6BAA6B,GAAGtH,IAAI,CAAD,CAAC,CAACiH,IAAI,CAACH,YAAY,CAACC,OAAO,EAAED,YAAY,CAACO,OAAO,CAAC;IAC3F,OAAO,CAACrH,IAAI,CAAD,CAAC,CAACmH,SAAS,CAACN,0BAA0B,CAAC,CAACU,UAAU,CAACD,6BAA6B,CAAC;EAC9F;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAME,4BAA4BA,CAACC,SAAyB,EAAyC;IACnG,MAAMC,YAAY,GAAG,IAAI,CAAChE,QAAQ,CAACiE,OAAO,CAAC,CAAC;IAC5C,MAAMC,WAAW,GAAGH,SAAS,CAACI,WAAW;IACzC,MAAMC,kBAAkB,GAAG,MAAM,IAAI,CAACpE,QAAQ,CAACqE,KAAK,CAACC,wBAAwB,CAACJ,WAAW,CAAC;IAC1F,MAAMjD,KAAyB,GAAG8C,SAAS,CAAC9C,KAAK;IACjD,MAAMsD,wBAAwB,GAAG,IAAI,CAACtE,MAAM,CAACuE,mBAAmB,CAACT,SAAS,CAACI,WAAW,EAAE;MACtFM,aAAa,EAAE;IACjB,CAAC,CAAC;IACF,MAAMC,eAAe,GAAGzD,KAAK,CAACG,GAAG,CAAC,MAAOG,IAAsB,IAAK;MAClE;MACA,MAAMoD,QAAQ,GAAGrI,IAAI,CAAD,CAAC,CAACiH,IAAI,CAACS,YAAY,EAAEzC,IAAI,CAACqD,YAAY,CAAC;MAC3D,MAAMC,eAAe,GAAG,MAAMC,mBAAmB,CAACH,QAAQ,CAAC;MAC3D,IAAIE,eAAe,EAAE;QACnB,OAAO,IAAI;MACb;MACA,MAAME,aAAa,GAAG,KAAK;MAC3B,MAAMC,gBAAgB,GAAG,IAAI,CAAC/E,MAAM,CAACgF,oBAAoB,CAAC1D,IAAI,CAACqD,YAAY,EAAEG,aAAa,CAAC;MAC3F,MAAMG,mBAAmB,GAAGF,gBAAgB,IAAI,CAACA,gBAAgB,CAACG,OAAO,CAACjB,WAAW,CAAC;MACtF,IAAIgB,mBAAmB,EAAE;QACvB;QACA;QACA,IAAI,IAAI,CAAC1E,QAAQ,CAACC,WAAW,CAACuE,gBAAgB,CAAC,EAAE;UAC/C;UACA,IAAI,CAACxE,QAAQ,CAACC,WAAW,CAACuE,gBAAgB,CAAC,CAACI,IAAI,CAAC7D,IAAI,CAACqD,YAAY,CAAC;QACrE,CAAC,MAAM;UACL;UACA,IAAI,CAACpE,QAAQ,CAACC,WAAW,CAACuE,gBAAgB,CAAC,GAAG,CAACzD,IAAI,CAACqD,YAAY,CAAC;QACnE;QACA,OAAO,IAAI;MACb;MACA,IAAI,CAACL,wBAAwB,IAAIH,kBAAkB,IAAI,IAAI,CAACrD,qBAAqB,EAAE;QACjF,MAAMsE,KAAK,GAAGjB,kBAAkB,CAACkB,8BAA8B,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAACzE,YAAY,IAAI,IAAI,CAACA,YAAY,KAAKwE,KAAK,CAAChB,KAAK,EAAE;UAC3D;UACA;UACA;UACAN,SAAS,CAACI,WAAW,GAAGkB,KAAK;UAC7B,IAAI,CAAC7E,QAAQ,CAACG,YAAY,CAACyE,IAAI,CAACC,KAAK,CAAC;QACxC;MACF;MACA,OAAO9D,IAAI;IACb,CAAC,CAAC;IACF;IACA,MAAMgE,cAAkC,GAAG,CAAC,MAAMnD,OAAO,CAACC,GAAG,CAACqC,eAAe,CAAC,EAAE1C,MAAM,CAAET,IAAI,IAAKA,IAAI,CAAC;IACtG,IAAI,CAACgE,cAAc,CAACC,MAAM,EAAE,OAAO;MAAErF,EAAE,EAAE4D,SAAS,CAACI,WAAW;MAAElD,KAAK,EAAE;IAAG,CAAC;IAC3E,IAAIsD,wBAAwB,EAAE;MAC5B,IAAI,CAACkB,sCAAsC,CAAClB,wBAAwB,EAAEgB,cAAc,EAAExB,SAAS,CAAC;IAClG;IACA,IAAI,IAAI,CAACxD,eAAe,EAAE;MACxB;MACA,IAAI,IAAI,CAACN,MAAM,CAACyF,oBAAoB,CAACnB,wBAAwB,CAACtD,KAAK,EAAEsE,cAAc,CAAC,EAAE;QACpF;QACA,OAAOhB,wBAAwB;MACjC;IACF;IACA,IAAI,CAAC,IAAI,CAACjE,QAAQ,IAAIiE,wBAAwB,EAAE;MAC9C,IAAI,CAACoB,kCAAkC,CAACpB,wBAAwB,EAAEgB,cAAc,CAAC;MACjFxB,SAAS,CAAC9C,KAAK,GAAG,IAAI,CAAC2E,wCAAwC,CAACL,cAAc,EAAEhB,wBAAwB,CAACtD,KAAK,CAAC;IACjH,CAAC,MAAM;MACL8C,SAAS,CAAC9C,KAAK,GAAGsE,cAAc;IAClC;IAEA,MAAM;MAAEpB,WAAW;MAAE0B;IAAS,CAAC,GAAG9B,SAAS;IAC3C,MAAM+B,QAAQ,GAAG,IAAAC,4BAAiB,EAAChC,SAAS,EAAEQ,wBAAwB,CAAC;IACvE,MAAMyB,UAAU,GAAGA,CAAA,KAAyB;MAC1C,IAAI,IAAI,CAACzF,eAAe,EAAE,MAAM,IAAI+C,KAAK,CAAC,4CAA4C,CAAC;MACvF,IAAIiB,wBAAwB,EAAE,OAAOA,wBAAwB,CAAClB,OAAO;MACrE,IAAI,CAACwC,QAAQ,EAAE,MAAM,IAAIvC,KAAK,CAAC,+EAA+E,CAAC;MAC/G,MAAM2C,qBAAqB,GAAGV,cAAc,CAAC1C,IAAI,CAC9CtB,IAAI,IAAK,CAAC,IAAAoB,+BAAoB,EAACpB,IAAI,CAACqD,YAAY,CAAC,CAACf,UAAU,CAAC,GAAG,IAAAlB,+BAAoB,EAACkD,QAAQ,CAAC,GAAG,CACpG,CAAC;MACD,IAAII,qBAAqB,EAAE;QACzB;QACA;QACA,MAAM,KAAIC,8CAAqB,EAACD,qBAAqB,CAACrB,YAAY,CAAC;MACrE;MACA,OAAO,IAAAjC,+BAAoB,EAACkD,QAAQ,CAAC;IACvC,CAAC;IACD,MAAMM,eAAe,GAAG,MAAAA,CAAA,KAAmC;MACzD,IAAI,IAAI,CAAC5F,eAAe,EAAE;QACxB,OAAO,IAAI,CAACN,MAAM,CAACmG,mBAAmB,CAAC;UAAEjC,WAAW;UAAElD,KAAK,EAAE8C,SAAS,CAAC9C;QAAM,CAAC,CAAC;MACjF;MACA,MAAMoC,OAAO,GAAG2C,UAAU,CAAC,CAAC;MAC5B,MAAMK,eAAe,GAAG,MAAAA,CAAA,KAAY;QAClC,IAAIlC,WAAW,CAACmC,QAAQ,CAAC,CAAC,EAAE,OAAOC,SAAS;QAC5C,OAAO,IAAI,CAACF,eAAe,CAAChD,OAAO,EAAEc,WAAW,CAACqC,QAAQ,CAAC;MAC5D,CAAC;MACD,MAAM3F,YAAY,GAAG,MAAMwF,eAAe,CAAC,CAAC;MAC5C,MAAMjD,YAAY,GAAG,IAAI,CAACnD,MAAM,CAACwG,YAAY,CAAC;QAC5CtC,WAAW,EAAE,KAAIuC,0BAAW,EAACvC,WAAW,CAACzH,OAAO,EAAEmE,YAAY,CAAC;QAC/DI,KAAK,EAAE8C,SAAS,CAAC9C,KAAK;QACtBJ,YAAY;QACZC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBgF,QAAQ;QACR;QACAxF,QAAQ,EAAE,IAAI,CAACA;MACjB,CAAC,CAAC;MACF8C,YAAY,CAACuD,sCAAsC,CAACtD,OAAO,CAAC;MAC5D,OAAOD,YAAY;IACrB,CAAC;IACD,MAAMA,YAAY,GAAG,MAAM+C,eAAe,CAAC,CAAC;IAC5C,OAAO;MAAEhG,EAAE,EAAEgE,WAAW;MAAElD,KAAK,EAAEmC,YAAY,CAACnC;IAAM,CAAC;EACvD;;EAEA;AACF;AACA;EACEwE,sCAAsCA,CACpClB,wBAAsC,EACtCgB,cAAkC,EAClCxB,SAAyB,EACzB;IACA,MAAM6C,eAAe,GAAGrC,wBAAwB,CAAClB,OAAO;IACxD,IAAI,CAACuD,eAAe,EAAE,OAAO,CAAC;IAC9B,MAAMC,6BAA6B,GAAGtB,cAAc,CAACuB,KAAK,CAAEvF,IAAI,IAC9D,IAAAoB,+BAAoB,EAACpB,IAAI,CAACqD,YAAY,CAAC,CAACf,UAAU,CAAC,GAAG+C,eAAe,GAAG,CAC1E,CAAC;IACD,IAAIC,6BAA6B,EAAE;MACjCE,uBAAY,CAACC,oCAAoC,CAACJ,eAAe,EAAErB,cAAc,CAAC;MAClF;IACF;IACA;IACA;IACA;IACA,MAAM0B,iBAAiB,GAAG,IAAAtE,+BAAoB,EAACoB,SAAS,CAAC8B,QAAQ,CAAC;IAClE,MAAMqB,gCAAgC,GAAGD,iBAAiB,IAAIL,eAAe,CAAC/C,UAAU,CAAC,GAAGoD,iBAAiB,GAAG,CAAC;IACjH,IAAIC,gCAAgC,EAAE;MACpC3C,wBAAwB,CAACoC,sCAAsC,CAACM,iBAAiB,CAAC;MAClFF,uBAAY,CAACC,oCAAoC,CAACC,iBAAiB,EAAE1B,cAAc,CAAC;MACpF;IACF;IACA,MAAM,KAAI4B,oBAAQ,EAAC,wDAAwDP,eAAe,QAAQ7C,SAAS,CAACI,WAAW;AAC3H,gHAAgH,CAAC;IAC7G;IACA;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEyB,wCAAwCA,CACtCL,cAAkC,EAClC6B,wBAA4C,EAC5C;IACA,OAAO,IAAAC,iBAAO,EAACD,wBAAwB,EAAE7B,cAAc,EAAE,cAAc,CAAC;EAC1E;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEI,kCAAkCA,CAAC2B,mBAAiC,EAAEC,QAA4B,EAAE;IAClG,MAAMC,YAAY,GAAGF,mBAAmB,CAACrG,KAAK;IAC9CuG,YAAY,CAACC,OAAO,CAAEC,WAAW,IAAK;MACpC,MAAMC,QAAQ,GAAGJ,QAAQ,CAAC1E,IAAI,CAC3B+E,OAAO,IAAKA,OAAO,CAAChD,YAAY,CAAC7B,WAAW,CAAC,CAAC,KAAK2E,WAAW,CAAC9C,YAAY,CAAC7B,WAAW,CAAC,CAC3F,CAAC;MACD,IAAI4E,QAAQ,IAAID,WAAW,CAAC9C,YAAY,KAAK+C,QAAQ,CAAC/C,YAAY,EAAE;QAClE,IAAI0C,mBAAmB,CAACxB,QAAQ,KAAK4B,WAAW,CAAC9C,YAAY,EAAE;UAC7D0C,mBAAmB,CAACxB,QAAQ,GAAG6B,QAAQ,CAAC/C,YAAY;QACtD;QACA8C,WAAW,CAAC9C,YAAY,GAAG+C,QAAQ,CAAC/C,YAAY;MAClD;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACUiD,kCAAkCA,CAACC,SAAmB,EAA2B;IACvF,MAAMC,WAAW,GAAG,IAAI,CAAClH,YAAY,GAAG,GAAG,IAAI,CAACA,YAAY,IAAIiH,SAAS,EAAE,GAAGA,SAAS;IACvF,MAAME,mBAAmB,GAAG,IAAI,CAAC/H,MAAM,CAACgI,gBAAgB,CAACF,WAAW,EAAE,KAAK,CAAC;IAC5E,IAAID,SAAS,CAACI,QAAQ,CAACC,4BAAiB,CAAC,EAAE;MACzC,IACE,CAACH,mBAAmB;MAAI;MACxB,CAACA,mBAAmB,CAACI,UAAU,CAAC,CAAC;MAAI;MACrC;MACAJ,mBAAmB,CAACK,OAAO,KAAK3B,0BAAW,CAAC4B,oBAAoB,CAACR,SAAS,CAAC,EAC3E;QACA,MAAM,KAAIS,iCAAsB,EAACT,SAAS,CAAC;MAC7C;IACF;IACA,OAAOE,mBAAmB;EAC5B;EAEAQ,yBAAyBA,CAACC,GAAgB,EAAkC;IAC1E,MAAMC,oBAAoB,GAAG,IAAA/F,+BAAoB,EAAC8F,GAAG,CAAC;IACtD,MAAME,SAAS,GAAG,IAAI,CAAC1I,MAAM,CAAC2I,eAAe,CAAC,CAAC;IAC/C,IAAI,CAACD,SAAS,EAAE,OAAO,IAAI;IAC3B,OAAOA,SAAS,CAACD,oBAAoB,CAAC;EACxC;;EAEA;AACF;AACA;EACEG,mBAAmBA,CAAC5H,KAAyB,EAAkC;IAC7E,IAAI6E,QAAQ,GAAG,IAAI,CAAC1F,IAAI;IACxB,IAAI0F,QAAQ,IAAIA,QAAQ,CAAC7D,KAAK,CAACvC,iBAAiB,CAAC,EAAE;MACjD;MACAuB,KAAK,CAACwG,OAAO,CAAElG,IAAI,IAAK;QACtB,MAAMC,QAAQ,GAAGC,iBAAiB,CAACF,IAAI,CAACqD,YAAY,CAAC;QACrD,MAAMlD,aAAa,GAAG,IAAAC,uBAAM,EAACmE,QAAQ,EAAEtE,QAAQ,CAAC;QAChD,MAAMsH,SAAS,GAAG,IAAI,CAACC,oBAAoB,CAACrH,aAAa,EAAET,KAAK,CAAC;QACjE,IAAI6H,SAAS,EAAE;UACbhD,QAAQ,GAAGgD,SAAS,CAAClE,YAAY;QACnC;QACA,IAAI1C,kBAAE,CAACC,UAAU,CAACT,aAAa,CAAC,IAAI,CAACoH,SAAS,EAAE;UAC9C,MAAME,YAAY,GAAG,IAAI,CAACjH,SAAS,CAACkH,OAAO,CAACvH,aAAa,CAAC;UAC1D,IAAIsH,YAAY,EAAE;YAChB;YACA,MAAM,KAAIE,8BAAgB,EAACxH,aAAa,CAAC;UAC3C;UACAT,KAAK,CAACmE,IAAI,CAAC;YACTR,YAAY,EAAE,IAAAjC,+BAAoB,EAACjB,aAAa,CAAC;YACjDyH,IAAI,EAAE,KAAK;YACXC,IAAI,EAAE9M,IAAI,CAAD,CAAC,CAAC+M,QAAQ,CAAC3H,aAAa;UACnC,CAAC,CAAC;UACFoE,QAAQ,GAAGpE,aAAa;QAC1B;MACF,CAAC,CAAC;IACJ;IACA,IAAI,CAACoE,QAAQ,EAAE,OAAOS,SAAS;IAC/B,MAAM+C,0BAA0B,GAAG,IAAI,CAACtJ,QAAQ,CAACiD,yBAAyB,CAAC6C,QAAQ,CAAC;IACpF,MAAMyD,QAAQ,GAAG,IAAI,CAACvJ,QAAQ,CAACwJ,cAAc,CAACF,0BAA0B,CAAC;IACzE,IAAIpH,kBAAE,CAACC,UAAU,CAACoH,QAAQ,CAAC,EAAE;MAC3B,MAAMP,YAAY,GAAG,IAAI,CAACjH,SAAS,CAACkH,OAAO,CAACK,0BAA0B,CAAC;MACvE,IAAIN,YAAY,EAAE,MAAM,KAAIE,8BAAgB,EAACI,0BAA0B,CAAC;MACxE,IAAI,IAAAG,gBAAK,EAACF,QAAQ,CAAC,EAAE;QACnB,MAAM,KAAIG,2BAAa,EAACH,QAAQ,CAAC;MACnC;MACA,MAAMT,SAAS,GAAG,IAAI,CAACC,oBAAoB,CAACO,0BAA0B,EAAErI,KAAK,CAAC;MAC9E,IAAI6H,SAAS,EAAE;QACb,OAAOA,SAAS,CAAClE,YAAY;MAC/B;MACA3D,KAAK,CAACmE,IAAI,CAAC;QACTR,YAAY,EAAE,IAAAjC,+BAAoB,EAAC2G,0BAA0B,CAAC;QAC9DH,IAAI,EAAE,KAAK;QACXC,IAAI,EAAE9M,IAAI,CAAD,CAAC,CAAC+M,QAAQ,CAACC,0BAA0B;MAChD,CAAC,CAAC;MACF,OAAOA,0BAA0B;IACnC;IACA,OAAOxD,QAAQ;EACjB;EAEAiD,oBAAoBA,CAACjD,QAAgB,EAAE7E,KAAyB,EAAE;IAChE,MAAM0I,kBAAkB,GAAG,IAAAhH,+BAAoB,EAACmD,QAAQ,CAAC,CAAC/C,WAAW,CAAC,CAAC;IACvE,OAAO9B,KAAK,CAAC4B,IAAI,CAAEtB,IAAI,IAAKA,IAAI,CAACqD,YAAY,CAAC7B,WAAW,CAAC,CAAC,KAAK4G,kBAAkB,CAAC;EACrF;EAEA,MAActD,eAAeA,CAAChD,OAAe,EAAEuG,aAAqB,EAAmB;IACrF,OAAQ,IAAI,CAAC/I,YAAY,KACtB,MAAM,IAAI,CAACd,SAAS,CAAC8J,4CAA4C,CAACxG,OAAO,EAAEuG,aAAa,CAAC,CAAC;EAC/F;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAME,eAAeA,CAACC,aAA0B,EAA2B;IACzE,IAAIC,UAAmC,CAAC,CAAC;IACzC,IAAIC,UAAU;IACd,IAAI,IAAI,CAAC9J,EAAE,EAAE;MACX6J,UAAU,GAAG,IAAI,CAACnC,kCAAkC,CAAC,IAAI,CAAC1H,EAAE,CAAC;IAC/D;IACA,MAAM+J,qBAAqB,GAAG,IAAI,CAAClK,QAAQ,CAACiD,yBAAyB,CAAC8G,aAAa,CAAC;IACpF,IAAI,CAACI,wBAAwB,CAACD,qBAAqB,CAAC;IACpD,IAAI,CAACE,yBAAyB,CAACF,qBAAqB,CAAC;IACrD,MAAMtI,OAAO,GAAG,MAAM,IAAAC,eAAI,EAACvF,IAAI,CAAD,CAAC,CAACiH,IAAI,CAAC2G,qBAAqB,EAAE,IAAI,CAAC,EAAE;MACjEG,GAAG,EAAE,IAAI,CAACrK,QAAQ,CAACiE,OAAO,CAAC,CAAC;MAC5BqG,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,CAAC1I,OAAO,CAAC4D,MAAM,EAAE,MAAM,KAAI+E,4BAAc,EAACR,aAAa,CAAC;IAE5D,MAAMS,eAAe,GAAG,IAAI,CAACzI,SAAS,CAACC,MAAM,CAACJ,OAAO,CAAC;IAEtD,IAAI,CAAC4I,eAAe,CAAChF,MAAM,EAAE;MAC3B,MAAM,KAAIiF,qBAAO,EAAC7I,OAAO,CAAC;IAC5B;IAEA,MAAM8I,oBAAoB,GAAGF,eAAe,CAACpJ,GAAG,CAAEa,KAAkB,IAAK;MACvE,OAAO;QAAE2C,YAAY,EAAE,IAAAjC,+BAAoB,EAACV,KAAK,CAAC;QAAEkH,IAAI,EAAE,KAAK;QAAEC,IAAI,EAAE9M,IAAI,CAAD,CAAC,CAAC+M,QAAQ,CAACpH,KAAK;MAAE,CAAC;IAC/F,CAAC,CAAC;IACF,MAAM0I,gBAAgB,GAAG,IAAI,CAAC9B,mBAAmB,CAAC6B,oBAAoB,CAAC;IAEvE,MAAME,qBAAqB,GAAGtO,IAAI,CAAD,CAAC,CAACuO,OAAO,CAACd,aAAa,CAAC;IACzD,MAAMe,SAAS,GAAGF,qBAAqB,CAACG,KAAK,CAACzO,IAAI,CAAD,CAAC,CAAC0O,GAAG,CAAC;IACvD,MAAMC,OAAO,GAAGH,SAAS,CAACA,SAAS,CAACtF,MAAM,GAAG,CAAC,CAAC;IAC/C,MAAM0F,YAAY,GAAG,IAAI,CAAC1C,yBAAyB,CAACuB,aAAa,CAAC;IAClE,IAAI,CAACC,UAAU,EAAE;MACf,IAAI,IAAI,CAAC7J,EAAE,EAAE;QACX,MAAMgL,KAAK,GAAGC,oBAAK,CAACC,KAAK,CAAC,IAAI,CAAClL,EAAE,EAAE,KAAK,CAAC;QACzC,MAAMU,YAAY,GAAG,MAAM,IAAI,CAACwF,eAAe,CAAC6D,qBAAqB,EAAEiB,KAAK,CAAC/B,IAAI,CAAC;QAClFY,UAAU,GAAG,KAAItD,0BAAW,EAACyE,KAAK,EAAEtK,YAAY,CAAC;MACnD,CAAC,MAAM,IAAIqK,YAAY,EAAE;QACvBlB,UAAU,GAAGkB,YAAY;MAC3B,CAAC,MAAM;QACL,MAAMI,cAAc,GAAG,IAAI,CAACjL,SAAS,IAAIyK,SAAS,CAACA,SAAS,CAACtF,MAAM,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAACnF,SAAS,EAAE;UACnB4J,UAAU,GAAG;YAAE5J,SAAS,EAAE+K,oBAAK,CAACG,eAAe,CAACD,cAAc,CAAC;YAAElC,IAAI,EAAEgC,oBAAK,CAACG,eAAe,CAACN,OAAO;UAAE,CAAC;QACzG;QACA,MAAME,KAAK,GAAGC,oBAAK,CAACI,aAAa,CAACF,cAAc,EAAEL,OAAO,CAAC;QAC1D,MAAMpK,YAAY,GAAG,MAAM,IAAI,CAACwF,eAAe,CAAC6D,qBAAqB,EAAEiB,KAAK,CAAC/B,IAAI,CAAC;QAClFY,UAAU,GAAG,KAAItD,0BAAW,EAACyE,KAAK,EAAEtK,YAAY,CAAC;MACnD;IACF;IACA,MAAMgF,QAAQ,GAAGqE,qBAAqB;IACtC,MAAMuB,SAAS,GAAG;MAChBtH,WAAW,EAAE6F,UAAU;MACvB/I,KAAK,EAAEyJ,oBAAoB;MAC3B5E,QAAQ,EAAE6E,gBAAgB;MAC1B9E,QAAQ;MACRoE,UAAU;MACVyB,YAAY,EAAET;IAChB,CAAC;IAED,OAAOQ,SAAS;EAClB;EAEA,MAAME,aAAaA,CAAA,EAAsB;IACvC,MAAM3H,YAAY,GAAG,IAAI,CAAChE,QAAQ,CAACiE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAA2H,+BAAoB,EAAC5H,YAAY,CAAC;EAC3C;EAEA,MAAM6H,GAAGA,CAAA,EAA8B;IACrC,IAAI,CAACC,UAAU,GAAG,MAAM,IAAI,CAACH,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC5J,SAAS,GAAG,IAAAgK,iBAAM,EAAC,CAAC,CAACF,GAAG,CAAC,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC;;IAEhD,IAAIE,mBAA+B,GAAG,CAAC,CAAC;IAExC,MAAMC,sCAAsC,GAAG,CAC7C,MAAM7J,OAAO,CAACC,GAAG,CAAC,IAAI,CAACnC,cAAc,CAACkB,GAAG,CAAE2I,aAAa,IAAK,IAAAlI,eAAI,EAACkI,aAAa,CAAC,CAAC,CAAC,EAClFxH,IAAI,CAAC,CAAC;IACR,IAAI,CAACR,SAAS,GAAG,IAAAgK,iBAAM,EAAC,CAAC,CAACF,GAAG,CAAC,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC;;IAEhD,MAAMI,mCAAmC,GAAG,IAAI,CAACnK,SAAS,CAACC,MAAM,CAACiK,sCAAsC,CAAC;IACzG;IACA,MAAME,IAAI,GAAG,IAAAC,0BAAS,EAACF,mCAAmC,EAAED,sCAAsC,CAAC;IAEnG,IAAI,CAACA,sCAAsC,CAACzG,MAAM,EAAE;MAClD,MAAM,KAAI6G,2BAAa,EAAC,IAAI,CAACnM,cAAc,CAAC;IAC9C;IACA,IAAIgM,mCAAmC,CAAC1G,MAAM,EAAE;MAC9CwG,mBAAmB,GAAGM,aAAa,CAACJ,mCAAmC,CAAC;IAC1E,CAAC,MAAM;MACL,MAAM,KAAIzB,qBAAO,EAAC0B,IAAI,CAAC;IACzB;IACA7N,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC,CAACvE,OAAO,CAAE+E,QAAQ,IAAK;MACrD,IAAI,CAACR,mBAAmB,CAACQ,QAAQ,CAAC,CAAC/C,KAAK,EAAE;QACxC,MAAM,KAAIvD,8CAAqB,EAACsG,QAAQ,CAAC;MAC3C;IACF,CAAC,CAAC;IACF,IAAIlO,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC,CAACxG,MAAM,GAAG,CAAC,IAAI,IAAI,CAACrF,EAAE,EAAE;MAC1D,MAAM,KAAIgH,oBAAQ,EAChB,kBAAkB,IAAI,CAAChH,EAAE,uDAAuD,IAAI,CAACD,cAAc,CAACsF,MAAM,QAC5G,CAAC;IACH;IACA;IACA;IACA,MAAMiH,oBAAoB,GAAGnO,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC,CAACxG,MAAM,GAAG,CAAC;IACxE,IAAIiH,oBAAoB,EAAE;MACxB,MAAM,IAAI,CAACC,qBAAqB,CAACV,mBAAmB,CAAC;IACvD,CAAC,MAAM;MACLW,iBAAM,CAACC,qBAAqB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;MACtE;MACA;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAC/C,eAAe,CAACxL,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;MAChF,MAAM,IAAI,CAACc,2BAA2B,CAAC,CAACD,QAAQ,CAAC,CAAC;MAClD,IAAIA,QAAQ,CAAC5L,KAAK,CAACuE,MAAM,EAAE;QACzB,MAAMuH,WAAW,GAAG,MAAM,IAAI,CAACjJ,4BAA4B,CAAC+I,QAAQ,CAAC;QACrE,IAAIE,WAAW,EAAE,IAAI,CAACnM,eAAe,CAACwE,IAAI,CAAC2H,WAAW,CAAC;MACzD;IACF;IACA,MAAM,IAAI,CAACC,cAAc,CAAC,IAAI,CAACpM,eAAe,CAACQ,GAAG,CAAE6L,IAAI,IAAKA,IAAI,CAAC9M,EAAE,CAAC,CAAC;IACtE+M,mBAAS,CAACC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAACvM,eAAe,CAAC4E,MAAM,CAAC;IACrE,OAAO;MAAE5E,eAAe,EAAE,IAAI,CAACA,eAAe;MAAEJ,QAAQ,EAAE,IAAI,CAACA;IAAS,CAAC;EAC3E;EAEA,MAAMwM,cAAcA,CAACI,GAAkB,EAAE;IACvC,IAAI,IAAI,CAAC7M,eAAe,EAAE;MACxB;MACA;MACA;IACF;IACA,MAAM,IAAA8M,0CAAsB,EAAC,IAAI,CAACtN,SAAS,EAAEqN,GAAG,CAAC;EACnD;EAEA,MAAMV,qBAAqBA,CAACV,mBAA+B,EAAiB;IAC1EW,iBAAM,CAACC,qBAAqB,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;IAC5E,IAAI,CAACU,wCAAwC,CAACtB,mBAAmB,CAAC;IAClE,MAAMuB,KAAK,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAACxB,mBAAmB,CAAC;IAChEyB,sBAAsB,CAACF,KAAK,CAAC;IAC7B,MAAM,IAAI,CAACT,2BAA2B,CAACS,KAAK,CAAC;IAC7C,MAAM,IAAI,CAACG,oBAAoB,CAACH,KAAK,CAAC;EACxC;;EAEA;AACF;AACA;AACA;AACA;EACED,wCAAwCA,CAACtB,mBAA+B,EAAE;IACxE,MAAM2B,QAAQ,GAAGrP,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC;IACjD2B,QAAQ,CAAClG,OAAO,CAAEsC,aAAa,IAAK;MAClC,MAAM6D,QAAQ,GAAGD,QAAQ,CAAC9K,IAAI,CAAEgL,CAAC,IAAKA,CAAC,KAAKvR,IAAI,CAAD,CAAC,CAACwR,OAAO,CAAC/D,aAAa,CAAC,CAAC;MACxE,IAAI6D,QAAQ,IAAI5B,mBAAmB,CAAC4B,QAAQ,CAAC,EAAE;QAC7CjB,iBAAM,CAACoB,KAAK,CAAC,qEAAqEH,QAAQ,EAAE,CAAC;QAC7F,OAAO5B,mBAAmB,CAAC4B,QAAQ,CAAC;MACtC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMF,oBAAoBA,CAACH,KAAuB,EAAiB;IACjE,MAAMS,gBAAgB,GAAG,EAAE;IAC3B,MAAM5L,OAAO,CAACC,GAAG,CACfkL,KAAK,CAACnM,GAAG,CAAC,MAAO2C,SAAS,IAAK;MAC7B,IAAIA,SAAS,CAAC9C,KAAK,CAACuE,MAAM,EAAE;QAC1B,IAAI;UACF,MAAMyI,cAAc,GAAG,MAAM,IAAI,CAACnK,4BAA4B,CAACC,SAAS,CAAC;UACzE,IAAIkK,cAAc,IAAIA,cAAc,CAAChN,KAAK,CAACuE,MAAM,EAAE,IAAI,CAAC5E,eAAe,CAACwE,IAAI,CAAC6I,cAAc,CAAC;QAC9F,CAAC,CAAC,OAAOC,GAAQ,EAAE;UACjB,IAAI,EAAEA,GAAG,YAAYC,0BAAe,CAAC,EAAE,MAAMD,GAAG;UAChD;UACAF,gBAAgB,CAAC5I,IAAI,CAAC8I,GAAG,CAAC;QAC5B;MACF;IACF,CAAC,CACH,CAAC;IACD,IAAIF,gBAAgB,CAACxI,MAAM,EAAE;MAC3B;MACA,MAAM,KAAI4I,4CAAiC,EAACJ,gBAAgB,CAAC5M,GAAG,CAAE8M,GAAG,IAAKA,GAAG,CAAC/J,WAAW,CAAC,CAACkK,IAAI,CAAC,CAAC,CAAC;IACpG;EACF;EAEA,MAAMvB,2BAA2BA,CAAClM,eAAiC,EAAE;IACnE,MAAM0N,MAAM,GAAG,IAAI,CAACrO,MAAM,CAACsO,wBAAwB,CAAC,CAAC;IACrD,MAAMnM,OAAO,CAACC,GAAG,CACfzB,eAAe,CAACQ,GAAG,CAAC,MAAO6M,cAAc,IAAK;MAC5C,IAAI,CAACA,cAAc,CAAChE,UAAU,EAAE,OAAO,CAAC;MACxC,MAAMuE,sBAAsB,GAAG5N,eAAe,CAACoB,MAAM,CAClD3D,CAAC,IAAKA,CAAC,CAAC4L,UAAU,IAAI5L,CAAC,CAAC4L,UAAU,CAACb,IAAI,KAAK6E,cAAc,CAAChE,UAAU,EAAEb,IAC1E,CAAC;MACD,MAAMqF,iBAAiB,GAAG,KAAIrD,oBAAK,EAAC;QAAEhC,IAAI,EAAE6E,cAAc,CAAChE,UAAU,CAACb;MAAK,CAAC,CAAC;MAC7E,MAAMvI,YAAY,GAAG,MAAM,IAAI,CAACwF,eAAe,CAAC4H,cAAc,CAACpI,QAAQ,EAAE4I,iBAAiB,CAACrF,IAAI,CAAC;MAChG,MAAMsF,uBAAuB,GAAG,KAAIhI,0BAAW,EAAC+H,iBAAiB,EAAE5N,YAAY,CAAC;MAChF,MAAM8N,6BAA6B,GAAGL,MAAM,CAACM,4BAA4B,CAACF,uBAAuB,CAAC;MAClG,IAAIF,sBAAsB,CAAChJ,MAAM,KAAK,CAAC,IAAI,CAACmJ,6BAA6B,EAAE;QACzEV,cAAc,CAAC9J,WAAW,GAAGuK,uBAAuB;MACtD;IACF,CAAC,CACH,CAAC;EACH;EAEA,MAAMlB,kBAAkBA,CAACxB,mBAA+B,EAA6B;IACnF,MAAM6C,MAAM,GAAGvQ,MAAM,CAACiO,IAAI,CAACP,mBAAmB,CAAC,CAAC5K,GAAG,CAAC,MAAO0N,OAAO,IAAK;MACrE,IAAI;QACF,MAAMb,cAAc,GAAG,MAAM,IAAI,CAACnE,eAAe,CAACgF,OAAO,CAAC;QAC1D,OAAOb,cAAc;MACvB,CAAC,CAAC,OAAOC,GAAQ,EAAE;QACjB,IAAI,EAAEA,GAAG,YAAY3D,4BAAc,CAAC,EAAE,MAAM2D,GAAG;QAC/C,IAAI,CAAC1N,QAAQ,CAACE,cAAc,CAAC0E,IAAI,CAAC0J,OAAO,CAAC;QAC1C,OAAO,IAAI;MACb;IACF,CAAC,CAAC;IACF,MAAMvB,KAAK,GAAG,MAAMnL,OAAO,CAACC,GAAG,CAACwM,MAAM,CAAC;IACvC,OAAO,IAAAE,iBAAO,EAACxB,KAAK,CAAC;EACvB;EAEApD,wBAAwBA,CAAC6E,sBAAmC,EAAE;IAC5D,IAAIA,sBAAsB,CAACnL,UAAU,CAAC,IAAI,CAAC,EAAE;MAC3C,MAAM,KAAIoL,8BAAmB,EAACD,sBAAsB,CAAC;IACvD;EACF;EAEQ5E,yBAAyBA,CAAC4E,sBAAmC,EAAE;IACrE,MAAME,WAAW,GAAIC,MAAc,IAAK;MACtC,MAAMC,QAAQ,GAAG9S,IAAI,CAAD,CAAC,CAAC8S,QAAQ,CAACD,MAAM,EAAEH,sBAAsB,CAAC;MAC9D,OAAOI,QAAQ,IAAI,CAACA,QAAQ,CAACvL,UAAU,CAAC,IAAI,CAAC,IAAI,CAACvH,IAAI,CAAD,CAAC,CAAC+S,UAAU,CAACD,QAAQ,CAAC;IAC7E,CAAC;IACD,IAAI,CAACnP,MAAM,CAACqP,UAAU,CAAC7H,OAAO,CAAErE,YAAY,IAAK;MAC/C,IAAI,CAACA,YAAY,CAACC,OAAO,EAAE;MAC3B,IAAI6L,WAAW,CAAC9L,YAAY,CAACC,OAAO,CAAC,EAAE;QACrC,MAAM,KAAIkM,oCAAgB,EACxBnM,YAAY,CAACC,OAAO,EACpBD,YAAY,CAACjD,EAAE,CAACqP,sBAAsB,CAAC,CAAC,EACxCR,sBACF,CAAC;MACH;IACF,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AALAS,OAAA,CAAAzR,OAAA,GAAA2B,aAAA;AAMA,SAAS2M,aAAaA,CAACoD,SAAmB,EAAc;EACtD,MAAM1D,mBAAmB,GAAG,CAAC,CAAC;EAC9B0D,SAAS,CAACjI,OAAO,CAAEsC,aAAa,IAAK;IACnC,IAAI,CAAC7H,kBAAE,CAACC,UAAU,CAAC4H,aAAa,CAAC,EAAE;MACjC,MAAM,KAAIsC,2BAAa,EAAC,CAACtC,aAAa,CAAC,CAAC;IAC1C;IACAiC,mBAAmB,CAACjC,aAAa,CAAC,GAAG;MACnCN,KAAK,EAAE,IAAAA,gBAAK,EAACM,aAAa;IAC5B,CAAC;EACH,CAAC,CAAC;EACF,OAAOiC,mBAAmB;AAC5B;;AAEA;AACA;AACA;AACA,SAASyB,sBAAsBA,CAACkC,aAAoC,EAAE;EACpE,MAAMC,YAAY,GAAG,CAAC,CAAC;EACvB,MAAMC,oBAAoB,GAAG,IAAAC,iBAAO,EAACH,aAAa,EAAE,aAAa,CAAC;EAClErR,MAAM,CAACiO,IAAI,CAACsD,oBAAoB,CAAC,CAACpI,OAAO,CAAEsI,GAAG,IAAK;IACjD,IAAIF,oBAAoB,CAACE,GAAG,CAAC,CAACvK,MAAM,GAAG,CAAC,EAAEoK,YAAY,CAACG,GAAG,CAAC,GAAGF,oBAAoB,CAACE,GAAG,CAAC;EACzF,CAAC,CAAC;EACF,IAAI,CAAC,IAAAC,iBAAO,EAACJ,YAAY,CAAC,EAAE,MAAM,KAAIK,0BAAY,EAACL,YAAY,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASnO,iBAAiBA,CAACmD,YAAoB,EAAyC;EACtF,MAAMpD,QAAQ,GAAGlF,IAAI,CAAD,CAAC,CAAC+O,KAAK,CAACzG,YAAY,CAAC;EACzC,MAAMsL,QAAQ,GAAG5T,IAAI,CAAD,CAAC,CAACwR,OAAO,CAAClJ,YAAY,CAAC;EAC3C,MAAMvB,OAAO,GAAG/G,IAAI,CAAD,CAAC,CAACwR,OAAO,CAACoC,QAAQ,CAAC;EACtC,MAAMC,SAAS,GAAG7T,IAAI,CAAD,CAAC,CAAC8S,QAAQ,CAAC/L,OAAO,EAAE6M,QAAQ,CAAC;EAClD,OAAO;IAAEE,MAAM,EAAED,SAAS;IAAEE,SAAS,EAAE7O,QAAQ,CAAC4H;EAAK,CAAC;AACxD;AAEA,eAAetE,mBAAmBA,CAACH,QAAqB,EAAoB;EAC1E,MAAM2L,IAAI,GAAG,MAAM,IAAAC,oBAAS,EAAC5L,QAAQ,CAAC;EACtC,OAAO2L,IAAI,CAACpI,QAAQ,CAACsI,+BAAoB,CAAC;AAC5C","ignoreList":[]}
@@ -11,23 +11,23 @@ function path() {
11
11
  };
12
12
  return data;
13
13
  }
14
- function _constants() {
15
- const data = require("@teambit/legacy/dist/constants");
16
- _constants = function () {
14
+ function _legacy() {
15
+ const data = require("@teambit/legacy.constants");
16
+ _legacy = function () {
17
17
  return data;
18
18
  };
19
19
  return data;
20
20
  }
21
- function _legacy() {
21
+ function _legacy2() {
22
22
  const data = require("@teambit/legacy.utils");
23
- _legacy = function () {
23
+ _legacy2 = function () {
24
24
  return data;
25
25
  };
26
26
  return data;
27
27
  }
28
- function _legacy2() {
28
+ function _legacy3() {
29
29
  const data = require("@teambit/legacy.bit-map");
30
- _legacy2 = function () {
30
+ _legacy3 = function () {
31
31
  return data;
32
32
  };
33
33
  return data;
@@ -46,8 +46,8 @@ function determineMainFile(addedComponent, existingComponentMap) {
46
46
  return foundMainFile;
47
47
  }
48
48
  }
49
- const mainFileString = `${_constants().DEFAULT_INDEX_NAME}.[${_constants().DEFAULT_INDEX_EXTS.join(', ')}]`;
50
- throw new (_legacy2().MissingMainFile)(componentIdStr, mainFileString, files.map(file => path().normalize(file.relativePath)));
49
+ const mainFileString = `${_legacy().DEFAULT_INDEX_NAME}.[${_legacy().DEFAULT_INDEX_EXTS.join(', ')}]`;
50
+ throw new (_legacy3().MissingMainFile)(componentIdStr, mainFileString, files.map(file => path().normalize(file.relativePath)));
51
51
 
52
52
  /**
53
53
  * user didn't enter mainFile but the component already exists with mainFile
@@ -63,9 +63,9 @@ function determineMainFile(addedComponent, existingComponentMap) {
63
63
  */
64
64
  function getUserSpecifiedMainFile() {
65
65
  if (mainFile) {
66
- const foundMainFile = _searchMainFile((0, _legacy().pathNormalizeToLinux)(mainFile));
66
+ const foundMainFile = _searchMainFile((0, _legacy2().pathNormalizeToLinux)(mainFile));
67
67
  if (foundMainFile) return foundMainFile;
68
- throw new (_legacy2().MissingMainFile)(componentIdStr, mainFile, files.map(file => path().normalize(file.relativePath)));
68
+ throw new (_legacy3().MissingMainFile)(componentIdStr, mainFile, files.map(file => path().normalize(file.relativePath)));
69
69
  }
70
70
  return null;
71
71
  }
@@ -83,8 +83,8 @@ function determineMainFile(addedComponent, existingComponentMap) {
83
83
  * e.g. `index.js`, `index.css`, etc.
84
84
  */
85
85
  function searchForFileNameIndex() {
86
- for (const ext of _constants().DEFAULT_INDEX_EXTS) {
87
- const mainFileNameToSearch = `${_constants().DEFAULT_INDEX_NAME}.${ext}`;
86
+ for (const ext of _legacy().DEFAULT_INDEX_EXTS) {
87
+ const mainFileNameToSearch = `${_legacy().DEFAULT_INDEX_NAME}.${ext}`;
88
88
  const searchResult = _searchMainFile(mainFileNameToSearch);
89
89
  if (searchResult) {
90
90
  return searchResult;
@@ -98,7 +98,7 @@ function determineMainFile(addedComponent, existingComponentMap) {
98
98
  */
99
99
  function searchForSameFileNameAsImmediateDir() {
100
100
  if (addedComponent.immediateDir) {
101
- for (const ext of _constants().DEFAULT_INDEX_EXTS) {
101
+ for (const ext of _legacy().DEFAULT_INDEX_EXTS) {
102
102
  const mainFileNameToSearch = `${addedComponent.immediateDir}.${ext}`;
103
103
  const searchResult = _searchMainFile(mainFileNameToSearch);
104
104
  if (searchResult) {
@@ -112,7 +112,7 @@ function determineMainFile(addedComponent, existingComponentMap) {
112
112
  * The component is an angular component and uses the angular entry point
113
113
  */
114
114
  function searchForAngularEntryPoint() {
115
- for (const entryPoint of _constants().ANGULAR_BIT_ENTRY_POINT_FILE) {
115
+ for (const entryPoint of _legacy().ANGULAR_BIT_ENTRY_POINT_FILE) {
116
116
  const searchResult = _searchMainFile(entryPoint);
117
117
  if (searchResult) {
118
118
  return searchResult;
@@ -125,14 +125,14 @@ function determineMainFile(addedComponent, existingComponentMap) {
125
125
  let mainFileFromFiles = files.find(file => file.relativePath === baseMainFile);
126
126
  if (mainFileFromFiles) return baseMainFile;
127
127
  if (rootDir) {
128
- const mainFileUsingRootDir = files.find(file => (0, _legacy().pathJoinLinux)(rootDir, file.relativePath) === baseMainFile);
128
+ const mainFileUsingRootDir = files.find(file => (0, _legacy2().pathJoinLinux)(rootDir, file.relativePath) === baseMainFile);
129
129
  if (mainFileUsingRootDir) return mainFileUsingRootDir.relativePath;
130
130
  }
131
131
  // search for a file-name
132
132
  const potentialMainFiles = files.filter(file => file.name === baseMainFile);
133
133
  if (!potentialMainFiles.length) return null;
134
134
  // when there are several files that met the criteria, choose the closer to the root
135
- const sortByNumOfDirs = (a, b) => a.relativePath.split(_constants().DEFAULT_SEPARATOR).length - b.relativePath.split(_constants().DEFAULT_SEPARATOR).length;
135
+ const sortByNumOfDirs = (a, b) => a.relativePath.split(_legacy().DEFAULT_SEPARATOR).length - b.relativePath.split(_legacy().DEFAULT_SEPARATOR).length;
136
136
  potentialMainFiles.sort(sortByNumOfDirs);
137
137
  mainFileFromFiles = potentialMainFiles[0];
138
138
  return mainFileFromFiles.relativePath;
@@ -1 +1 @@
1
- {"version":3,"names":["path","data","_interopRequireWildcard","require","_constants","_legacy","_legacy2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","determineMainFile","addedComponent","existingComponentMap","mainFile","componentIdStr","componentId","toString","files","filter","file","test","rootDir","strategies","getExistingIfNotChanged","getUserSpecifiedMainFile","onlyOneFileEnteredUseIt","searchForFileNameIndex","searchForSameFileNameAsImmediateDir","searchForAngularEntryPoint","strategy","foundMainFile","mainFileString","DEFAULT_INDEX_NAME","DEFAULT_INDEX_EXTS","join","MissingMainFile","map","normalize","relativePath","_searchMainFile","pathNormalizeToLinux","length","ext","mainFileNameToSearch","searchResult","immediateDir","entryPoint","ANGULAR_BIT_ENTRY_POINT_FILE","baseMainFile","mainFileFromFiles","find","mainFileUsingRootDir","pathJoinLinux","potentialMainFiles","name","sortByNumOfDirs","b","split","DEFAULT_SEPARATOR","sort"],"sources":["determine-main-file.ts"],"sourcesContent":["import * as path from 'path';\n\nimport {\n ANGULAR_BIT_ENTRY_POINT_FILE,\n DEFAULT_INDEX_EXTS,\n DEFAULT_INDEX_NAME,\n DEFAULT_SEPARATOR,\n} from '@teambit/legacy/dist/constants';\nimport { pathJoinLinux, PathLinux, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { ComponentMap, MissingMainFile } from '@teambit/legacy.bit-map';\nimport { AddedComponent } from './add-components';\n\nexport default function determineMainFile(\n addedComponent: AddedComponent,\n existingComponentMap: ComponentMap | null | undefined\n): PathLinux {\n const mainFile = addedComponent.mainFile;\n const componentIdStr = addedComponent.componentId.toString();\n const files = addedComponent.files.filter((file) => !file.test);\n const rootDir = existingComponentMap && existingComponentMap.rootDir;\n const strategies: Function[] = [\n getExistingIfNotChanged,\n getUserSpecifiedMainFile,\n onlyOneFileEnteredUseIt,\n searchForFileNameIndex,\n searchForSameFileNameAsImmediateDir,\n searchForAngularEntryPoint,\n ];\n\n for (const strategy of strategies) {\n const foundMainFile = strategy();\n if (foundMainFile) {\n return foundMainFile;\n }\n }\n const mainFileString = `${DEFAULT_INDEX_NAME}.[${DEFAULT_INDEX_EXTS.join(', ')}]`;\n throw new MissingMainFile(\n componentIdStr,\n mainFileString,\n files.map((file) => path.normalize(file.relativePath))\n );\n\n /**\n * user didn't enter mainFile but the component already exists with mainFile\n */\n function getExistingIfNotChanged(): PathLinux | null | undefined {\n if (!mainFile && existingComponentMap) {\n return existingComponentMap.mainFile;\n }\n return null;\n }\n /**\n * user entered mainFile => search the mainFile in the files array, throw error if not found\n */\n function getUserSpecifiedMainFile(): PathLinux | null | undefined {\n if (mainFile) {\n const foundMainFile = _searchMainFile(pathNormalizeToLinux(mainFile));\n if (foundMainFile) return foundMainFile;\n throw new MissingMainFile(\n componentIdStr,\n mainFile,\n files.map((file) => path.normalize(file.relativePath))\n );\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has only one file, use that file as the main file\n */\n function onlyOneFileEnteredUseIt(): PathLinux | null | undefined {\n if (files.length === 1) {\n return files[0].relativePath;\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has multiple files, search for file name \"index\",\n * e.g. `index.js`, `index.css`, etc.\n */\n function searchForFileNameIndex(): PathLinux | null | undefined {\n for (const ext of DEFAULT_INDEX_EXTS) {\n const mainFileNameToSearch = `${DEFAULT_INDEX_NAME}.${ext}`;\n const searchResult = _searchMainFile(mainFileNameToSearch);\n if (searchResult) {\n return searchResult;\n }\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has multiple files, search for file with the same\n * name as the directory (see #1714)\n */\n function searchForSameFileNameAsImmediateDir(): PathLinux | null | undefined {\n if (addedComponent.immediateDir) {\n for (const ext of DEFAULT_INDEX_EXTS) {\n const mainFileNameToSearch = `${addedComponent.immediateDir}.${ext}`;\n const searchResult = _searchMainFile(mainFileNameToSearch);\n if (searchResult) {\n return searchResult;\n }\n }\n }\n return null;\n }\n /**\n * The component is an angular component and uses the angular entry point\n */\n function searchForAngularEntryPoint(): PathLinux | null | undefined {\n for (const entryPoint of ANGULAR_BIT_ENTRY_POINT_FILE) {\n const searchResult = _searchMainFile(entryPoint);\n if (searchResult) {\n return searchResult;\n }\n }\n return null;\n }\n\n function _searchMainFile(baseMainFile: PathLinux): PathLinux | null | undefined {\n // search for an exact relative-path\n let mainFileFromFiles = files.find((file) => file.relativePath === baseMainFile);\n if (mainFileFromFiles) return baseMainFile;\n if (rootDir) {\n const mainFileUsingRootDir = files.find((file) => pathJoinLinux(rootDir, file.relativePath) === baseMainFile);\n if (mainFileUsingRootDir) return mainFileUsingRootDir.relativePath;\n }\n // search for a file-name\n const potentialMainFiles = files.filter((file) => file.name === baseMainFile);\n if (!potentialMainFiles.length) return null;\n // when there are several files that met the criteria, choose the closer to the root\n const sortByNumOfDirs = (a, b) =>\n a.relativePath.split(DEFAULT_SEPARATOR).length - b.relativePath.split(DEFAULT_SEPARATOR).length;\n potentialMainFiles.sort(sortByNumOfDirs);\n mainFileFromFiles = potentialMainFiles[0];\n return mainFileFromFiles.relativePath;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,SAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwE,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAGzD,SAASW,iBAAiBA,CACvCC,cAA8B,EAC9BC,oBAAqD,EAC1C;EACX,MAAMC,QAAQ,GAAGF,cAAc,CAACE,QAAQ;EACxC,MAAMC,cAAc,GAAGH,cAAc,CAACI,WAAW,CAACC,QAAQ,CAAC,CAAC;EAC5D,MAAMC,KAAK,GAAGN,cAAc,CAACM,KAAK,CAACC,MAAM,CAAEC,IAAI,IAAK,CAACA,IAAI,CAACC,IAAI,CAAC;EAC/D,MAAMC,OAAO,GAAGT,oBAAoB,IAAIA,oBAAoB,CAACS,OAAO;EACpE,MAAMC,UAAsB,GAAG,CAC7BC,uBAAuB,EACvBC,wBAAwB,EACxBC,uBAAuB,EACvBC,sBAAsB,EACtBC,mCAAmC,EACnCC,0BAA0B,CAC3B;EAED,KAAK,MAAMC,QAAQ,IAAIP,UAAU,EAAE;IACjC,MAAMQ,aAAa,GAAGD,QAAQ,CAAC,CAAC;IAChC,IAAIC,aAAa,EAAE;MACjB,OAAOA,aAAa;IACtB;EACF;EACA,MAAMC,cAAc,GAAG,GAAGC,+BAAkB,KAAKC,+BAAkB,CAACC,IAAI,CAAC,IAAI,CAAC,GAAG;EACjF,MAAM,KAAIC,0BAAe,EACvBrB,cAAc,EACdiB,cAAc,EACdd,KAAK,CAACmB,GAAG,CAAEjB,IAAI,IAAKpC,IAAI,CAAD,CAAC,CAACsD,SAAS,CAAClB,IAAI,CAACmB,YAAY,CAAC,CACvD,CAAC;;EAED;AACF;AACA;EACE,SAASf,uBAAuBA,CAAA,EAAiC;IAC/D,IAAI,CAACV,QAAQ,IAAID,oBAAoB,EAAE;MACrC,OAAOA,oBAAoB,CAACC,QAAQ;IACtC;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAASW,wBAAwBA,CAAA,EAAiC;IAChE,IAAIX,QAAQ,EAAE;MACZ,MAAMiB,aAAa,GAAGS,eAAe,CAAC,IAAAC,8BAAoB,EAAC3B,QAAQ,CAAC,CAAC;MACrE,IAAIiB,aAAa,EAAE,OAAOA,aAAa;MACvC,MAAM,KAAIK,0BAAe,EACvBrB,cAAc,EACdD,QAAQ,EACRI,KAAK,CAACmB,GAAG,CAAEjB,IAAI,IAAKpC,IAAI,CAAD,CAAC,CAACsD,SAAS,CAAClB,IAAI,CAACmB,YAAY,CAAC,CACvD,CAAC;IACH;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAASb,uBAAuBA,CAAA,EAAiC;IAC/D,IAAIR,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE;MACtB,OAAOxB,KAAK,CAAC,CAAC,CAAC,CAACqB,YAAY;IAC9B;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;AACA;EACE,SAASZ,sBAAsBA,CAAA,EAAiC;IAC9D,KAAK,MAAMgB,GAAG,IAAIT,+BAAkB,EAAE;MACpC,MAAMU,oBAAoB,GAAG,GAAGX,+BAAkB,IAAIU,GAAG,EAAE;MAC3D,MAAME,YAAY,GAAGL,eAAe,CAACI,oBAAoB,CAAC;MAC1D,IAAIC,YAAY,EAAE;QAChB,OAAOA,YAAY;MACrB;IACF;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;AACA;EACE,SAASjB,mCAAmCA,CAAA,EAAiC;IAC3E,IAAIhB,cAAc,CAACkC,YAAY,EAAE;MAC/B,KAAK,MAAMH,GAAG,IAAIT,+BAAkB,EAAE;QACpC,MAAMU,oBAAoB,GAAG,GAAGhC,cAAc,CAACkC,YAAY,IAAIH,GAAG,EAAE;QACpE,MAAME,YAAY,GAAGL,eAAe,CAACI,oBAAoB,CAAC;QAC1D,IAAIC,YAAY,EAAE;UAChB,OAAOA,YAAY;QACrB;MACF;IACF;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAAShB,0BAA0BA,CAAA,EAAiC;IAClE,KAAK,MAAMkB,UAAU,IAAIC,yCAA4B,EAAE;MACrD,MAAMH,YAAY,GAAGL,eAAe,CAACO,UAAU,CAAC;MAChD,IAAIF,YAAY,EAAE;QAChB,OAAOA,YAAY;MACrB;IACF;IACA,OAAO,IAAI;EACb;EAEA,SAASL,eAAeA,CAACS,YAAuB,EAAgC;IAC9E;IACA,IAAIC,iBAAiB,GAAGhC,KAAK,CAACiC,IAAI,CAAE/B,IAAI,IAAKA,IAAI,CAACmB,YAAY,KAAKU,YAAY,CAAC;IAChF,IAAIC,iBAAiB,EAAE,OAAOD,YAAY;IAC1C,IAAI3B,OAAO,EAAE;MACX,MAAM8B,oBAAoB,GAAGlC,KAAK,CAACiC,IAAI,CAAE/B,IAAI,IAAK,IAAAiC,uBAAa,EAAC/B,OAAO,EAAEF,IAAI,CAACmB,YAAY,CAAC,KAAKU,YAAY,CAAC;MAC7G,IAAIG,oBAAoB,EAAE,OAAOA,oBAAoB,CAACb,YAAY;IACpE;IACA;IACA,MAAMe,kBAAkB,GAAGpC,KAAK,CAACC,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACmC,IAAI,KAAKN,YAAY,CAAC;IAC7E,IAAI,CAACK,kBAAkB,CAACZ,MAAM,EAAE,OAAO,IAAI;IAC3C;IACA,MAAMc,eAAe,GAAGA,CAACtD,CAAC,EAAEuD,CAAC,KAC3BvD,CAAC,CAACqC,YAAY,CAACmB,KAAK,CAACC,8BAAiB,CAAC,CAACjB,MAAM,GAAGe,CAAC,CAAClB,YAAY,CAACmB,KAAK,CAACC,8BAAiB,CAAC,CAACjB,MAAM;IACjGY,kBAAkB,CAACM,IAAI,CAACJ,eAAe,CAAC;IACxCN,iBAAiB,GAAGI,kBAAkB,CAAC,CAAC,CAAC;IACzC,OAAOJ,iBAAiB,CAACX,YAAY;EACvC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["path","data","_interopRequireWildcard","require","_legacy","_legacy2","_legacy3","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","determineMainFile","addedComponent","existingComponentMap","mainFile","componentIdStr","componentId","toString","files","filter","file","test","rootDir","strategies","getExistingIfNotChanged","getUserSpecifiedMainFile","onlyOneFileEnteredUseIt","searchForFileNameIndex","searchForSameFileNameAsImmediateDir","searchForAngularEntryPoint","strategy","foundMainFile","mainFileString","DEFAULT_INDEX_NAME","DEFAULT_INDEX_EXTS","join","MissingMainFile","map","normalize","relativePath","_searchMainFile","pathNormalizeToLinux","length","ext","mainFileNameToSearch","searchResult","immediateDir","entryPoint","ANGULAR_BIT_ENTRY_POINT_FILE","baseMainFile","mainFileFromFiles","find","mainFileUsingRootDir","pathJoinLinux","potentialMainFiles","name","sortByNumOfDirs","b","split","DEFAULT_SEPARATOR","sort"],"sources":["determine-main-file.ts"],"sourcesContent":["import * as path from 'path';\n\nimport {\n ANGULAR_BIT_ENTRY_POINT_FILE,\n DEFAULT_INDEX_EXTS,\n DEFAULT_INDEX_NAME,\n DEFAULT_SEPARATOR,\n} from '@teambit/legacy.constants';\nimport { pathJoinLinux, PathLinux, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { ComponentMap, MissingMainFile } from '@teambit/legacy.bit-map';\nimport { AddedComponent } from './add-components';\n\nexport default function determineMainFile(\n addedComponent: AddedComponent,\n existingComponentMap: ComponentMap | null | undefined\n): PathLinux {\n const mainFile = addedComponent.mainFile;\n const componentIdStr = addedComponent.componentId.toString();\n const files = addedComponent.files.filter((file) => !file.test);\n const rootDir = existingComponentMap && existingComponentMap.rootDir;\n const strategies: Function[] = [\n getExistingIfNotChanged,\n getUserSpecifiedMainFile,\n onlyOneFileEnteredUseIt,\n searchForFileNameIndex,\n searchForSameFileNameAsImmediateDir,\n searchForAngularEntryPoint,\n ];\n\n for (const strategy of strategies) {\n const foundMainFile = strategy();\n if (foundMainFile) {\n return foundMainFile;\n }\n }\n const mainFileString = `${DEFAULT_INDEX_NAME}.[${DEFAULT_INDEX_EXTS.join(', ')}]`;\n throw new MissingMainFile(\n componentIdStr,\n mainFileString,\n files.map((file) => path.normalize(file.relativePath))\n );\n\n /**\n * user didn't enter mainFile but the component already exists with mainFile\n */\n function getExistingIfNotChanged(): PathLinux | null | undefined {\n if (!mainFile && existingComponentMap) {\n return existingComponentMap.mainFile;\n }\n return null;\n }\n /**\n * user entered mainFile => search the mainFile in the files array, throw error if not found\n */\n function getUserSpecifiedMainFile(): PathLinux | null | undefined {\n if (mainFile) {\n const foundMainFile = _searchMainFile(pathNormalizeToLinux(mainFile));\n if (foundMainFile) return foundMainFile;\n throw new MissingMainFile(\n componentIdStr,\n mainFile,\n files.map((file) => path.normalize(file.relativePath))\n );\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has only one file, use that file as the main file\n */\n function onlyOneFileEnteredUseIt(): PathLinux | null | undefined {\n if (files.length === 1) {\n return files[0].relativePath;\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has multiple files, search for file name \"index\",\n * e.g. `index.js`, `index.css`, etc.\n */\n function searchForFileNameIndex(): PathLinux | null | undefined {\n for (const ext of DEFAULT_INDEX_EXTS) {\n const mainFileNameToSearch = `${DEFAULT_INDEX_NAME}.${ext}`;\n const searchResult = _searchMainFile(mainFileNameToSearch);\n if (searchResult) {\n return searchResult;\n }\n }\n return null;\n }\n /**\n * user didn't enter mainFile and the component has multiple files, search for file with the same\n * name as the directory (see #1714)\n */\n function searchForSameFileNameAsImmediateDir(): PathLinux | null | undefined {\n if (addedComponent.immediateDir) {\n for (const ext of DEFAULT_INDEX_EXTS) {\n const mainFileNameToSearch = `${addedComponent.immediateDir}.${ext}`;\n const searchResult = _searchMainFile(mainFileNameToSearch);\n if (searchResult) {\n return searchResult;\n }\n }\n }\n return null;\n }\n /**\n * The component is an angular component and uses the angular entry point\n */\n function searchForAngularEntryPoint(): PathLinux | null | undefined {\n for (const entryPoint of ANGULAR_BIT_ENTRY_POINT_FILE) {\n const searchResult = _searchMainFile(entryPoint);\n if (searchResult) {\n return searchResult;\n }\n }\n return null;\n }\n\n function _searchMainFile(baseMainFile: PathLinux): PathLinux | null | undefined {\n // search for an exact relative-path\n let mainFileFromFiles = files.find((file) => file.relativePath === baseMainFile);\n if (mainFileFromFiles) return baseMainFile;\n if (rootDir) {\n const mainFileUsingRootDir = files.find((file) => pathJoinLinux(rootDir, file.relativePath) === baseMainFile);\n if (mainFileUsingRootDir) return mainFileUsingRootDir.relativePath;\n }\n // search for a file-name\n const potentialMainFiles = files.filter((file) => file.name === baseMainFile);\n if (!potentialMainFiles.length) return null;\n // when there are several files that met the criteria, choose the closer to the root\n const sortByNumOfDirs = (a, b) =>\n a.relativePath.split(DEFAULT_SEPARATOR).length - b.relativePath.split(DEFAULT_SEPARATOR).length;\n potentialMainFiles.sort(sortByNumOfDirs);\n mainFileFromFiles = potentialMainFiles[0];\n return mainFileFromFiles.relativePath;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,SAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwE,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAGzD,SAASW,iBAAiBA,CACvCC,cAA8B,EAC9BC,oBAAqD,EAC1C;EACX,MAAMC,QAAQ,GAAGF,cAAc,CAACE,QAAQ;EACxC,MAAMC,cAAc,GAAGH,cAAc,CAACI,WAAW,CAACC,QAAQ,CAAC,CAAC;EAC5D,MAAMC,KAAK,GAAGN,cAAc,CAACM,KAAK,CAACC,MAAM,CAAEC,IAAI,IAAK,CAACA,IAAI,CAACC,IAAI,CAAC;EAC/D,MAAMC,OAAO,GAAGT,oBAAoB,IAAIA,oBAAoB,CAACS,OAAO;EACpE,MAAMC,UAAsB,GAAG,CAC7BC,uBAAuB,EACvBC,wBAAwB,EACxBC,uBAAuB,EACvBC,sBAAsB,EACtBC,mCAAmC,EACnCC,0BAA0B,CAC3B;EAED,KAAK,MAAMC,QAAQ,IAAIP,UAAU,EAAE;IACjC,MAAMQ,aAAa,GAAGD,QAAQ,CAAC,CAAC;IAChC,IAAIC,aAAa,EAAE;MACjB,OAAOA,aAAa;IACtB;EACF;EACA,MAAMC,cAAc,GAAG,GAAGC,4BAAkB,KAAKC,4BAAkB,CAACC,IAAI,CAAC,IAAI,CAAC,GAAG;EACjF,MAAM,KAAIC,0BAAe,EACvBrB,cAAc,EACdiB,cAAc,EACdd,KAAK,CAACmB,GAAG,CAAEjB,IAAI,IAAKpC,IAAI,CAAD,CAAC,CAACsD,SAAS,CAAClB,IAAI,CAACmB,YAAY,CAAC,CACvD,CAAC;;EAED;AACF;AACA;EACE,SAASf,uBAAuBA,CAAA,EAAiC;IAC/D,IAAI,CAACV,QAAQ,IAAID,oBAAoB,EAAE;MACrC,OAAOA,oBAAoB,CAACC,QAAQ;IACtC;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAASW,wBAAwBA,CAAA,EAAiC;IAChE,IAAIX,QAAQ,EAAE;MACZ,MAAMiB,aAAa,GAAGS,eAAe,CAAC,IAAAC,+BAAoB,EAAC3B,QAAQ,CAAC,CAAC;MACrE,IAAIiB,aAAa,EAAE,OAAOA,aAAa;MACvC,MAAM,KAAIK,0BAAe,EACvBrB,cAAc,EACdD,QAAQ,EACRI,KAAK,CAACmB,GAAG,CAAEjB,IAAI,IAAKpC,IAAI,CAAD,CAAC,CAACsD,SAAS,CAAClB,IAAI,CAACmB,YAAY,CAAC,CACvD,CAAC;IACH;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAASb,uBAAuBA,CAAA,EAAiC;IAC/D,IAAIR,KAAK,CAACwB,MAAM,KAAK,CAAC,EAAE;MACtB,OAAOxB,KAAK,CAAC,CAAC,CAAC,CAACqB,YAAY;IAC9B;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;AACA;EACE,SAASZ,sBAAsBA,CAAA,EAAiC;IAC9D,KAAK,MAAMgB,GAAG,IAAIT,4BAAkB,EAAE;MACpC,MAAMU,oBAAoB,GAAG,GAAGX,4BAAkB,IAAIU,GAAG,EAAE;MAC3D,MAAME,YAAY,GAAGL,eAAe,CAACI,oBAAoB,CAAC;MAC1D,IAAIC,YAAY,EAAE;QAChB,OAAOA,YAAY;MACrB;IACF;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;AACA;EACE,SAASjB,mCAAmCA,CAAA,EAAiC;IAC3E,IAAIhB,cAAc,CAACkC,YAAY,EAAE;MAC/B,KAAK,MAAMH,GAAG,IAAIT,4BAAkB,EAAE;QACpC,MAAMU,oBAAoB,GAAG,GAAGhC,cAAc,CAACkC,YAAY,IAAIH,GAAG,EAAE;QACpE,MAAME,YAAY,GAAGL,eAAe,CAACI,oBAAoB,CAAC;QAC1D,IAAIC,YAAY,EAAE;UAChB,OAAOA,YAAY;QACrB;MACF;IACF;IACA,OAAO,IAAI;EACb;EACA;AACF;AACA;EACE,SAAShB,0BAA0BA,CAAA,EAAiC;IAClE,KAAK,MAAMkB,UAAU,IAAIC,sCAA4B,EAAE;MACrD,MAAMH,YAAY,GAAGL,eAAe,CAACO,UAAU,CAAC;MAChD,IAAIF,YAAY,EAAE;QAChB,OAAOA,YAAY;MACrB;IACF;IACA,OAAO,IAAI;EACb;EAEA,SAASL,eAAeA,CAACS,YAAuB,EAAgC;IAC9E;IACA,IAAIC,iBAAiB,GAAGhC,KAAK,CAACiC,IAAI,CAAE/B,IAAI,IAAKA,IAAI,CAACmB,YAAY,KAAKU,YAAY,CAAC;IAChF,IAAIC,iBAAiB,EAAE,OAAOD,YAAY;IAC1C,IAAI3B,OAAO,EAAE;MACX,MAAM8B,oBAAoB,GAAGlC,KAAK,CAACiC,IAAI,CAAE/B,IAAI,IAAK,IAAAiC,wBAAa,EAAC/B,OAAO,EAAEF,IAAI,CAACmB,YAAY,CAAC,KAAKU,YAAY,CAAC;MAC7G,IAAIG,oBAAoB,EAAE,OAAOA,oBAAoB,CAACb,YAAY;IACpE;IACA;IACA,MAAMe,kBAAkB,GAAGpC,KAAK,CAACC,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACmC,IAAI,KAAKN,YAAY,CAAC;IAC7E,IAAI,CAACK,kBAAkB,CAACZ,MAAM,EAAE,OAAO,IAAI;IAC3C;IACA,MAAMc,eAAe,GAAGA,CAACtD,CAAC,EAAEuD,CAAC,KAC3BvD,CAAC,CAACqC,YAAY,CAACmB,KAAK,CAACC,2BAAiB,CAAC,CAACjB,MAAM,GAAGe,CAAC,CAAClB,YAAY,CAACmB,KAAK,CAACC,2BAAiB,CAAC,CAACjB,MAAM;IACjGY,kBAAkB,CAACM,IAAI,CAACJ,eAAe,CAAC;IACxCN,iBAAiB,GAAGI,kBAAkB,CAAC,CAAC,CAAC;IACzC,OAAOJ,iBAAiB,CAACX,YAAY;EACvC;AACF","ignoreList":[]}
@@ -18,9 +18,9 @@ function _chalk() {
18
18
  };
19
19
  return data;
20
20
  }
21
- function _constants() {
22
- const data = require("@teambit/legacy/dist/constants");
23
- _constants = function () {
21
+ function _legacy() {
22
+ const data = require("@teambit/legacy.constants");
23
+ _legacy = function () {
24
24
  return data;
25
25
  };
26
26
  return data;
@@ -31,7 +31,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
31
31
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
32
32
  class MissingMainFileMultipleComponents extends _bitError().BitError {
33
33
  constructor(componentIds) {
34
- super(`error: the components ${_chalk().default.bold(componentIds.join(', '))} does not contain a main file.\nplease either use --id to group all added files as one component or use our DSL to define the main file dynamically.\nsee troubleshooting at ${_constants().BASE_DOCS_DOMAIN} components/component-main-file`);
34
+ super(`error: the components ${_chalk().default.bold(componentIds.join(', '))} does not contain a main file.\nplease either use --id to group all added files as one component or use our DSL to define the main file dynamically.\nsee troubleshooting at ${_legacy().BASE_DOCS_DOMAIN} components/component-main-file`);
35
35
  _defineProperty(this, "componentIds", void 0);
36
36
  this.componentIds = componentIds;
37
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_bitError","data","require","_chalk","_interopRequireDefault","_constants","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","MissingMainFileMultipleComponents","BitError","constructor","componentIds","chalk","bold","join","BASE_DOCS_DOMAIN","exports"],"sources":["missing-main-file-multiple-components.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport { BASE_DOCS_DOMAIN } from '@teambit/legacy/dist/constants';\n\nexport default class MissingMainFileMultipleComponents extends BitError {\n componentIds: string[];\n\n constructor(componentIds: string[]) {\n super(\n `error: the components ${chalk.bold(\n componentIds.join(', ')\n )} does not contain a main file.\\nplease either use --id to group all added files as one component or use our DSL to define the main file dynamically.\\nsee troubleshooting at ${BASE_DOCS_DOMAIN} components/component-main-file`\n );\n this.componentIds = componentIds;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAkE,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEnD,MAAMgB,iCAAiC,SAASC,oBAAQ,CAAC;EAGtEC,WAAWA,CAACC,YAAsB,EAAE;IAClC,KAAK,CACH,yBAAyBC,gBAAK,CAACC,IAAI,CACjCF,YAAY,CAACG,IAAI,CAAC,IAAI,CACxB,CAAC,gLAAgLC,6BAAgB,iCACnM,CAAC;IAACzB,eAAA;IACF,IAAI,CAACqB,YAAY,GAAGA,YAAY;EAClC;AACF;AAACK,OAAA,CAAA3B,OAAA,GAAAmB,iCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_bitError","data","require","_chalk","_interopRequireDefault","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","MissingMainFileMultipleComponents","BitError","constructor","componentIds","chalk","bold","join","BASE_DOCS_DOMAIN","exports"],"sources":["missing-main-file-multiple-components.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport { BASE_DOCS_DOMAIN } from '@teambit/legacy.constants';\n\nexport default class MissingMainFileMultipleComponents extends BitError {\n componentIds: string[];\n\n constructor(componentIds: string[]) {\n super(\n `error: the components ${chalk.bold(\n componentIds.join(', ')\n )} does not contain a main file.\\nplease either use --id to group all added files as one component or use our DSL to define the main file dynamically.\\nsee troubleshooting at ${BASE_DOCS_DOMAIN} components/component-main-file`\n );\n this.componentIds = componentIds;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6D,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAE9C,MAAMgB,iCAAiC,SAASC,oBAAQ,CAAC;EAGtEC,WAAWA,CAACC,YAAsB,EAAE;IAClC,KAAK,CACH,yBAAyBC,gBAAK,CAACC,IAAI,CACjCF,YAAY,CAACG,IAAI,CAAC,IAAI,CACxB,CAAC,gLAAgLC,0BAAgB,iCACnM,CAAC;IAACzB,eAAA;IACF,IAAI,CAACqB,YAAY,GAAGA,YAAY;EAClC;AACF;AAACK,OAAA,CAAA3B,OAAA,GAAAmB,iCAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { BitError } from '@teambit/bit-error';
2
2
  import chalk from 'chalk';
3
- import { BASE_DOCS_DOMAIN } from '@teambit/legacy/dist/constants';
3
+ import { BASE_DOCS_DOMAIN } from '@teambit/legacy.constants';
4
4
 
5
5
  export default class MissingMainFileMultipleComponents extends BitError {
6
6
  componentIds: string[];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/tracker",
3
- "version": "1.0.487",
3
+ "version": "1.0.488",
4
4
  "homepage": "https://bit.cloud/teambit/component/tracker",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "tracker",
9
- "version": "1.0.487"
9
+ "version": "1.0.488"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -20,14 +20,17 @@
20
20
  "@teambit/component-id": "1.2.2",
21
21
  "@teambit/legacy-bit-id": "1.1.1",
22
22
  "@teambit/harmony": "0.4.6",
23
- "@teambit/cli": "0.0.1064",
24
- "@teambit/legacy.utils": "0.0.7",
25
- "@teambit/legacy.analytics": "0.0.58",
26
- "@teambit/legacy.bit-map": "0.0.57",
27
- "@teambit/workspace.modules.node-modules-linker": "0.0.228",
28
- "@teambit/workspace": "1.0.487",
29
- "@teambit/envs": "1.0.487",
30
- "@teambit/logger": "0.0.1157"
23
+ "@teambit/cli": "0.0.1065",
24
+ "@teambit/legacy.utils": "0.0.8",
25
+ "@teambit/legacy.analytics": "0.0.59",
26
+ "@teambit/legacy.bit-map": "0.0.58",
27
+ "@teambit/legacy.constants": "0.0.1",
28
+ "@teambit/legacy.consumer": "0.0.1",
29
+ "@teambit/legacy.logger": "0.0.1",
30
+ "@teambit/workspace.modules.node-modules-linker": "0.0.229",
31
+ "@teambit/workspace": "1.0.488",
32
+ "@teambit/envs": "1.0.488",
33
+ "@teambit/logger": "0.0.1158"
31
34
  },
32
35
  "devDependencies": {
33
36
  "@types/fs-extra": "9.0.7",