@teambit/workspace 1.0.560 → 1.0.562

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.
@@ -47,7 +47,6 @@ export class ComponentConfigFile {
47
47
  static async load(
48
48
  componentDir: PathOsBasedAbsolute,
49
49
  aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>,
50
- outsideDefaultScope?: string
51
50
  ): Promise<ComponentConfigFile | undefined> {
52
51
  const filePath = ComponentConfigFile.composePath(componentDir);
53
52
  const isExist = await fs.pathExists(filePath);
@@ -58,7 +57,10 @@ export class ComponentConfigFile {
58
57
  const parsed: ComponentConfigFileJson = parseComponentJsonContent(content, componentDir);
59
58
  const indent = detectIndent(content).indent;
60
59
  const newLine = detectNewline(content);
61
- const componentId = ComponentID.fromObject(parsed.componentId, parsed.defaultScope || outsideDefaultScope);
60
+ if (!parsed.componentId.scope) {
61
+ throw new Error(`component.json file at ${componentDir} is invalid, it must contain 'scope' property in the componentId`);
62
+ }
63
+ const componentId = ComponentID.fromObject(parsed.componentId);
62
64
  const aspects = await aspectListFactory(ExtensionDataList.fromConfigObject(parsed.extensions));
63
65
 
64
66
  return new ComponentConfigFile(
@@ -23,7 +23,7 @@ export declare class ComponentConfigFile {
23
23
  private options;
24
24
  defaultScope?: string | undefined;
25
25
  constructor(componentId: ComponentID, aspects: AspectList, componentDir: PathOsBasedAbsolute, propagate?: boolean, options?: ComponentConfigFileOptions, defaultScope?: string | undefined);
26
- static load(componentDir: PathOsBasedAbsolute, aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>, outsideDefaultScope?: string): Promise<ComponentConfigFile | undefined>;
26
+ static load(componentDir: PathOsBasedAbsolute, aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>): Promise<ComponentConfigFile | undefined>;
27
27
  static composePath(componentRootFolder: string): string;
28
28
  toVinylFile(options?: WriteConfigFileOptions): Promise<JsonVinyl>;
29
29
  write(options?: WriteConfigFileOptions): Promise<void>;
@@ -89,7 +89,7 @@ class ComponentConfigFile {
89
89
  this.options = options;
90
90
  this.defaultScope = defaultScope;
91
91
  }
92
- static async load(componentDir, aspectListFactory, outsideDefaultScope) {
92
+ static async load(componentDir, aspectListFactory) {
93
93
  const filePath = ComponentConfigFile.composePath(componentDir);
94
94
  const isExist = await _fsExtra().default.pathExists(filePath);
95
95
  if (!isExist) {
@@ -99,7 +99,10 @@ class ComponentConfigFile {
99
99
  const parsed = parseComponentJsonContent(content, componentDir);
100
100
  const indent = (0, _detectIndent().default)(content).indent;
101
101
  const newLine = (0, _detectNewline().default)(content);
102
- const componentId = _component().ComponentID.fromObject(parsed.componentId, parsed.defaultScope || outsideDefaultScope);
102
+ if (!parsed.componentId.scope) {
103
+ throw new Error(`component.json file at ${componentDir} is invalid, it must contain 'scope' property in the componentId`);
104
+ }
105
+ const componentId = _component().ComponentID.fromObject(parsed.componentId);
103
106
  const aspects = await aspectListFactory(_legacy2().ExtensionDataList.fromConfigObject(parsed.extensions));
104
107
  return new ComponentConfigFile(componentId, aspects, componentDir, Boolean(parsed.propagate), {
105
108
  indent,
@@ -1 +1 @@
1
- {"version":3,"names":["_component","data","require","_legacy","_legacy2","_component2","_detectIndent","_interopRequireDefault","_detectNewline","_fsExtra","_path","_lodash","_exceptions","e","__esModule","default","DEFAULT_INDENT","DEFAULT_NEWLINE","ComponentConfigFile","constructor","componentId","aspects","componentDir","propagate","options","indent","newLine","defaultScope","load","aspectListFactory","outsideDefaultScope","filePath","composePath","isExist","fs","pathExists","undefined","content","readFile","parsed","parseComponentJsonContent","detectIndent","detectNewline","ComponentID","fromObject","ExtensionDataList","fromConfigObject","extensions","Boolean","componentRootFolder","path","join","COMPONENT_CONFIG_FILE_NAME","toVinylFile","json","toJson","override","AlreadyExistsError","JsonVinyl","base","dirname","newline","write","vinyl","addAspect","aspectId","config","resolveComponentId","shouldMergeConfig","existing","get","getNewConfig","merge","aspectEntry","aspectEntryFromConfigObject","entries","push","removeAspect","markWithMinusIfNotExist","aspectList","withoutEntries","REMOVE_EXTENSION_SPECIAL_SIGN","id","legacyEntry","configEntryToDataEntry","AspectEntry","toObject","toConfigObject","exports","str","dir","JSON","parse","err","Error","message"],"sources":["component-config-file.ts"],"sourcesContent":["import { ComponentID, AspectList, AspectEntry, ResolveComponentIdFunc } from '@teambit/component';\nimport { COMPONENT_CONFIG_FILE_NAME } from '@teambit/legacy.constants';\nimport {\n ExtensionDataList,\n configEntryToDataEntry,\n REMOVE_EXTENSION_SPECIAL_SIGN,\n} from '@teambit/legacy.extension-data';\nimport { PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { JsonVinyl } from '@teambit/component.sources';\nimport detectIndent from 'detect-indent';\nimport detectNewline from 'detect-newline';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport { AlreadyExistsError } from './exceptions';\n\ninterface ComponentConfigFileOptions {\n indent: string;\n newLine: '\\r\\n' | '\\n' | undefined;\n}\n\ninterface WriteConfigFileOptions {\n override?: boolean;\n}\n\ninterface ComponentConfigFileJson {\n componentId: any;\n // TODO: think if we want to change it to aspects\n extensions: any;\n propagate: boolean;\n defaultScope?: string;\n}\n\nconst DEFAULT_INDENT = ' ';\nconst DEFAULT_NEWLINE = '\\n';\n\nexport class ComponentConfigFile {\n constructor(\n public componentId: ComponentID,\n public aspects: AspectList,\n private componentDir: PathOsBasedAbsolute,\n public propagate: boolean = false,\n private options: ComponentConfigFileOptions = { indent: DEFAULT_INDENT, newLine: DEFAULT_NEWLINE },\n public defaultScope?: string\n ) {}\n\n static async load(\n componentDir: PathOsBasedAbsolute,\n aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>,\n outsideDefaultScope?: string\n ): Promise<ComponentConfigFile | undefined> {\n const filePath = ComponentConfigFile.composePath(componentDir);\n const isExist = await fs.pathExists(filePath);\n if (!isExist) {\n return undefined;\n }\n const content = await fs.readFile(filePath, 'utf-8');\n const parsed: ComponentConfigFileJson = parseComponentJsonContent(content, componentDir);\n const indent = detectIndent(content).indent;\n const newLine = detectNewline(content);\n const componentId = ComponentID.fromObject(parsed.componentId, parsed.defaultScope || outsideDefaultScope);\n const aspects = await aspectListFactory(ExtensionDataList.fromConfigObject(parsed.extensions));\n\n return new ComponentConfigFile(\n componentId,\n aspects,\n componentDir,\n Boolean(parsed.propagate),\n { indent, newLine },\n parsed.defaultScope\n );\n }\n\n static composePath(componentRootFolder: string) {\n return path.join(componentRootFolder, COMPONENT_CONFIG_FILE_NAME);\n }\n\n async toVinylFile(options: WriteConfigFileOptions = {}): Promise<JsonVinyl> {\n const json = this.toJson();\n const filePath = ComponentConfigFile.composePath(this.componentDir);\n const isExist = await fs.pathExists(filePath);\n if (isExist && !options.override) {\n throw new AlreadyExistsError(filePath);\n }\n\n return JsonVinyl.load({\n base: path.dirname(filePath),\n path: filePath,\n content: json,\n override: true,\n indent: this.options.indent,\n newline: this.options.newLine,\n });\n }\n\n async write(options: WriteConfigFileOptions = {}): Promise<void> {\n const vinyl = await this.toVinylFile(options);\n await vinyl.write();\n }\n\n async addAspect(\n aspectId: string,\n config: any,\n resolveComponentId: ResolveComponentIdFunc,\n shouldMergeConfig = false\n ) {\n const existing = this.aspects.get(aspectId);\n\n if (existing) {\n const getNewConfig = () => {\n if (!shouldMergeConfig) return config;\n if (!config || config === '-') return config;\n if (!existing.config) return config;\n // @ts-ignore\n if (existing.config === '-') return config;\n return merge(existing.config, config);\n };\n existing.config = getNewConfig();\n } else {\n const aspectEntry = await this.aspectEntryFromConfigObject(aspectId, config, resolveComponentId);\n this.aspects.entries.push(aspectEntry);\n }\n }\n\n async removeAspect(aspectId: string, markWithMinusIfNotExist: boolean, resolveComponentId: ResolveComponentIdFunc) {\n const existing = this.aspects.get(aspectId);\n if (existing) {\n const aspectList = this.aspects.withoutEntries([aspectId]);\n this.aspects = aspectList;\n } else if (markWithMinusIfNotExist) {\n await this.addAspect(aspectId, REMOVE_EXTENSION_SPECIAL_SIGN, resolveComponentId);\n }\n }\n\n private async aspectEntryFromConfigObject(id: string, config: any, resolveComponentId: ResolveComponentIdFunc) {\n const aspectId = await resolveComponentId(id);\n const legacyEntry = configEntryToDataEntry(id, config);\n return new AspectEntry(aspectId, legacyEntry);\n }\n\n toJson(): ComponentConfigFileJson {\n return {\n componentId: this.componentId.toObject(),\n propagate: this.propagate,\n defaultScope: this.defaultScope,\n extensions: this.aspects.toConfigObject(),\n };\n }\n}\n\nfunction parseComponentJsonContent(str: string, dir: string) {\n try {\n return JSON.parse(str);\n } catch (err: any) {\n throw new Error(`failed parsing component.json file at ${dir}. original error: ${err.message}`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_component","data","require","_legacy","_legacy2","_component2","_detectIndent","_interopRequireDefault","_detectNewline","_fsExtra","_path","_lodash","_exceptions","e","__esModule","default","DEFAULT_INDENT","DEFAULT_NEWLINE","ComponentConfigFile","constructor","componentId","aspects","componentDir","propagate","options","indent","newLine","defaultScope","load","aspectListFactory","filePath","composePath","isExist","fs","pathExists","undefined","content","readFile","parsed","parseComponentJsonContent","detectIndent","detectNewline","scope","Error","ComponentID","fromObject","ExtensionDataList","fromConfigObject","extensions","Boolean","componentRootFolder","path","join","COMPONENT_CONFIG_FILE_NAME","toVinylFile","json","toJson","override","AlreadyExistsError","JsonVinyl","base","dirname","newline","write","vinyl","addAspect","aspectId","config","resolveComponentId","shouldMergeConfig","existing","get","getNewConfig","merge","aspectEntry","aspectEntryFromConfigObject","entries","push","removeAspect","markWithMinusIfNotExist","aspectList","withoutEntries","REMOVE_EXTENSION_SPECIAL_SIGN","id","legacyEntry","configEntryToDataEntry","AspectEntry","toObject","toConfigObject","exports","str","dir","JSON","parse","err","message"],"sources":["component-config-file.ts"],"sourcesContent":["import { ComponentID, AspectList, AspectEntry, ResolveComponentIdFunc } from '@teambit/component';\nimport { COMPONENT_CONFIG_FILE_NAME } from '@teambit/legacy.constants';\nimport {\n ExtensionDataList,\n configEntryToDataEntry,\n REMOVE_EXTENSION_SPECIAL_SIGN,\n} from '@teambit/legacy.extension-data';\nimport { PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { JsonVinyl } from '@teambit/component.sources';\nimport detectIndent from 'detect-indent';\nimport detectNewline from 'detect-newline';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport { AlreadyExistsError } from './exceptions';\n\ninterface ComponentConfigFileOptions {\n indent: string;\n newLine: '\\r\\n' | '\\n' | undefined;\n}\n\ninterface WriteConfigFileOptions {\n override?: boolean;\n}\n\ninterface ComponentConfigFileJson {\n componentId: any;\n // TODO: think if we want to change it to aspects\n extensions: any;\n propagate: boolean;\n defaultScope?: string;\n}\n\nconst DEFAULT_INDENT = ' ';\nconst DEFAULT_NEWLINE = '\\n';\n\nexport class ComponentConfigFile {\n constructor(\n public componentId: ComponentID,\n public aspects: AspectList,\n private componentDir: PathOsBasedAbsolute,\n public propagate: boolean = false,\n private options: ComponentConfigFileOptions = { indent: DEFAULT_INDENT, newLine: DEFAULT_NEWLINE },\n public defaultScope?: string\n ) {}\n\n static async load(\n componentDir: PathOsBasedAbsolute,\n aspectListFactory: (extensionDataList: ExtensionDataList) => Promise<AspectList>,\n ): Promise<ComponentConfigFile | undefined> {\n const filePath = ComponentConfigFile.composePath(componentDir);\n const isExist = await fs.pathExists(filePath);\n if (!isExist) {\n return undefined;\n }\n const content = await fs.readFile(filePath, 'utf-8');\n const parsed: ComponentConfigFileJson = parseComponentJsonContent(content, componentDir);\n const indent = detectIndent(content).indent;\n const newLine = detectNewline(content);\n if (!parsed.componentId.scope) {\n throw new Error(`component.json file at ${componentDir} is invalid, it must contain 'scope' property in the componentId`);\n }\n const componentId = ComponentID.fromObject(parsed.componentId);\n const aspects = await aspectListFactory(ExtensionDataList.fromConfigObject(parsed.extensions));\n\n return new ComponentConfigFile(\n componentId,\n aspects,\n componentDir,\n Boolean(parsed.propagate),\n { indent, newLine },\n parsed.defaultScope\n );\n }\n\n static composePath(componentRootFolder: string) {\n return path.join(componentRootFolder, COMPONENT_CONFIG_FILE_NAME);\n }\n\n async toVinylFile(options: WriteConfigFileOptions = {}): Promise<JsonVinyl> {\n const json = this.toJson();\n const filePath = ComponentConfigFile.composePath(this.componentDir);\n const isExist = await fs.pathExists(filePath);\n if (isExist && !options.override) {\n throw new AlreadyExistsError(filePath);\n }\n\n return JsonVinyl.load({\n base: path.dirname(filePath),\n path: filePath,\n content: json,\n override: true,\n indent: this.options.indent,\n newline: this.options.newLine,\n });\n }\n\n async write(options: WriteConfigFileOptions = {}): Promise<void> {\n const vinyl = await this.toVinylFile(options);\n await vinyl.write();\n }\n\n async addAspect(\n aspectId: string,\n config: any,\n resolveComponentId: ResolveComponentIdFunc,\n shouldMergeConfig = false\n ) {\n const existing = this.aspects.get(aspectId);\n\n if (existing) {\n const getNewConfig = () => {\n if (!shouldMergeConfig) return config;\n if (!config || config === '-') return config;\n if (!existing.config) return config;\n // @ts-ignore\n if (existing.config === '-') return config;\n return merge(existing.config, config);\n };\n existing.config = getNewConfig();\n } else {\n const aspectEntry = await this.aspectEntryFromConfigObject(aspectId, config, resolveComponentId);\n this.aspects.entries.push(aspectEntry);\n }\n }\n\n async removeAspect(aspectId: string, markWithMinusIfNotExist: boolean, resolveComponentId: ResolveComponentIdFunc) {\n const existing = this.aspects.get(aspectId);\n if (existing) {\n const aspectList = this.aspects.withoutEntries([aspectId]);\n this.aspects = aspectList;\n } else if (markWithMinusIfNotExist) {\n await this.addAspect(aspectId, REMOVE_EXTENSION_SPECIAL_SIGN, resolveComponentId);\n }\n }\n\n private async aspectEntryFromConfigObject(id: string, config: any, resolveComponentId: ResolveComponentIdFunc) {\n const aspectId = await resolveComponentId(id);\n const legacyEntry = configEntryToDataEntry(id, config);\n return new AspectEntry(aspectId, legacyEntry);\n }\n\n toJson(): ComponentConfigFileJson {\n return {\n componentId: this.componentId.toObject(),\n propagate: this.propagate,\n defaultScope: this.defaultScope,\n extensions: this.aspects.toConfigObject(),\n };\n }\n}\n\nfunction parseComponentJsonContent(str: string, dir: string) {\n try {\n return JSON.parse(str);\n } catch (err: any) {\n throw new Error(`failed parsing component.json file at ${dir}. original error: ${err.message}`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.560/dist/workspace.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.560/dist/workspace.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.562/dist/workspace.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.562/dist/workspace.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -414,6 +414,9 @@ export declare class Workspace implements ComponentFactory {
414
414
  componentPackageName(component: Component): string;
415
415
  private componentDirFromLegacyId;
416
416
  componentDirToAbsolute(relativeComponentDir: PathOsBasedRelative): PathOsBasedAbsolute;
417
+ /**
418
+ * @deprecated long long ago we added it to the componentId object. use `componentId.scope` instead.
419
+ */
417
420
  componentDefaultScope(componentId: ComponentID): Promise<string | undefined>;
418
421
  componentDefaultScopeFromComponentDirAndName(relativeComponentDir: PathOsBasedRelative, name: string): Promise<string | undefined>;
419
422
  get defaultScope(): string;
package/dist/workspace.js CHANGED
@@ -1349,6 +1349,10 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1349
1349
  componentDirToAbsolute(relativeComponentDir) {
1350
1350
  return _path().default.join(this.path, relativeComponentDir);
1351
1351
  }
1352
+
1353
+ /**
1354
+ * @deprecated long long ago we added it to the componentId object. use `componentId.scope` instead.
1355
+ */
1352
1356
  async componentDefaultScope(componentId) {
1353
1357
  const relativeComponentDir = this.componentDir(componentId, {
1354
1358
  ignoreVersion: true
@@ -1358,10 +1362,6 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1358
1362
  return this.componentDefaultScopeFromComponentDirAndName(relativeComponentDir, componentId.fullName);
1359
1363
  }
1360
1364
  async componentDefaultScopeFromComponentDirAndName(relativeComponentDir, name) {
1361
- const componentConfigFile = await this.componentConfigFileFromComponentDirAndName(relativeComponentDir, name);
1362
- if (componentConfigFile && componentConfigFile.defaultScope) {
1363
- return componentConfigFile.defaultScope;
1364
- }
1365
1365
  const bitMapId = this.consumer.bitMap.getExistingBitId(name, false);
1366
1366
  const bitMapEntry = bitMapId ? this.consumer.bitMap.getComponent(bitMapId) : undefined;
1367
1367
  if (bitMapEntry && bitMapEntry.defaultScope) {
@@ -1620,7 +1620,7 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1620
1620
  }, {
1621
1621
  relative: true
1622
1622
  });
1623
- return this.componentConfigFileFromComponentDirAndName(relativeComponentDir, id.fullName);
1623
+ return this.componentConfigFileFromComponentDirAndName(relativeComponentDir);
1624
1624
  }
1625
1625
 
1626
1626
  /**
@@ -1635,12 +1635,11 @@ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1635
1635
  }
1636
1636
  return undefined;
1637
1637
  }
1638
- async componentConfigFileFromComponentDirAndName(relativeComponentDir, name) {
1638
+ async componentConfigFileFromComponentDirAndName(relativeComponentDir) {
1639
1639
  let componentConfigFile;
1640
1640
  if (relativeComponentDir) {
1641
1641
  const absComponentDir = this.componentDirToAbsolute(relativeComponentDir);
1642
- const defaultScopeFromVariantsOrWs = await this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFile(relativeComponentDir, name);
1643
- componentConfigFile = await _componentConfigFile().ComponentConfigFile.load(absComponentDir, this.createAspectList.bind(this), defaultScopeFromVariantsOrWs);
1642
+ componentConfigFile = await _componentConfigFile().ComponentConfigFile.load(absComponentDir, this.createAspectList.bind(this));
1644
1643
  }
1645
1644
  return componentConfigFile;
1646
1645
  }