@teambit/workspace 0.0.649 → 0.0.653

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.
@@ -38,7 +38,6 @@ export declare class CapsuleListCmd implements Command {
38
38
  report(): Promise<string>;
39
39
  json(): Promise<{
40
40
  workspaceCapsulesRootDir: string;
41
- scopeCapsulesRootDir: string;
42
41
  scopeAspectsCapsulesRootDir: string;
43
42
  workspace: string;
44
43
  capsules: string[];
@@ -110,13 +110,11 @@ class CapsuleListCmd {
110
110
  const list = await this.isolator.list(this.workspace.path);
111
111
  const {
112
112
  workspaceCapsulesRootDir,
113
- scopeCapsulesRootDir,
114
113
  scopeAspectsCapsulesRootDir
115
114
  } = this.getCapsulesRootDirs(); // TODO: improve output
116
115
 
117
116
  return _chalk().default.green(`found ${_chalk().default.cyan(list.capsules.length.toString())} capsule(s) for workspace: ${_chalk().default.cyan(list.workspace)}
118
117
  workspace capsules root-dir: ${_chalk().default.cyan(workspaceCapsulesRootDir)}
119
- scope capsules root-dir: ${_chalk().default.cyan(scopeCapsulesRootDir)}
120
118
  scope's aspects capsules root-dir: ${_chalk().default.cyan(scopeAspectsCapsulesRootDir)}
121
119
  use --json to get the list of all workspace capsules`);
122
120
  }
@@ -129,11 +127,9 @@ use --json to get the list of all workspace capsules`);
129
127
 
130
128
  getCapsulesRootDirs() {
131
129
  const workspaceCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.path);
132
- const scopeCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.path);
133
130
  const scopeAspectsCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.getAspectCapsulePath());
134
131
  return {
135
132
  workspaceCapsulesRootDir,
136
- scopeCapsulesRootDir,
137
133
  scopeAspectsCapsulesRootDir
138
134
  };
139
135
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["capsule.cmd.ts"],"names":["CapsuleCreateCmd","constructor","workspace","isolator","create","componentIds","baseDir","rootBaseDir","alwaysNew","id","installPackages","seedersOnly","Array","isArray","capsuleOptions","installOptions","includeFromNestedHosts","name","ids","resolveMultipleComponentIds","network","isolateComponents","capsules","graphCapsules","report","opts","capsuleOutput","map","capsule","chalk","bold","component","toString","path","join","title","length","green","json","c","CapsuleListCmd","list","workspaceCapsulesRootDir","scopeCapsulesRootDir","scopeAspectsCapsulesRootDir","getCapsulesRootDirs","cyan","rootDirs","getCapsulesRootDir","scope","getAspectCapsulePath","CapsuleDeleteCmd","args","all","scopeAspects","capsuleBaseDirToDelete","capsuleBaseDir","deletedDir","deleteCapsules","CapsuleCmd"],"mappings":"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","sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { CapsuleList, IsolateComponentsOptions, IsolatorMain } from '@teambit/isolator';\nimport chalk from 'chalk';\n\nimport { Workspace } from '.';\n\ntype CreateOpts = {\n baseDir?: string;\n rootBaseDir?: string;\n alwaysNew?: boolean;\n seedersOnly?: boolean;\n id: string;\n installPackages?: boolean;\n};\n\nexport class CapsuleCreateCmd implements Command {\n name = 'create [componentIds...]';\n description = `create capsules`;\n group = 'capsules';\n alias = '';\n options = [\n [\n 'b',\n 'base-dir <name>',\n 'set base dir of all capsules (hashed to create the base dir inside the root dir - host path by default)',\n ],\n ['r', 'root-base-dir <name>', 'set root base dir of all capsules (absolute path to use as root dir)'],\n ['a', 'always-new', 'create new environment for capsule'],\n ['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'],\n ['i', 'id <name>', 'reuse capsule of certain name'],\n ['j', 'json', 'json format'],\n ['d', 'install-packages', 'install packages by the package-manager'],\n ['p', 'package-manager <name>', 'npm, yarn or pnpm, default to npm'],\n ] as CommandOptions;\n\n constructor(private workspace: Workspace, private isolator: IsolatorMain) {}\n\n async create(\n [componentIds = []]: [string[]],\n { baseDir, rootBaseDir, alwaysNew = false, id, installPackages = false, seedersOnly = false }: CreateOpts\n ): Promise<CapsuleList> {\n // @todo: why it is not an array?\n if (componentIds && !Array.isArray(componentIds)) componentIds = [componentIds];\n const capsuleOptions: IsolateComponentsOptions = {\n baseDir,\n rootBaseDir,\n installOptions: { installPackages },\n alwaysNew,\n seedersOnly,\n includeFromNestedHosts: true,\n name: id,\n };\n const ids = await this.workspace.resolveMultipleComponentIds(componentIds);\n const network = await this.isolator.isolateComponents(ids, capsuleOptions);\n const capsules = network.graphCapsules;\n return capsules;\n }\n\n async report([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n const capsuleOutput = capsules\n .map((capsule) => `${chalk.bold(capsule.component.id.toString())} - ${capsule.path}`)\n .join('\\n');\n const title = `${capsules.length} capsule(s) were created successfully`;\n return `${chalk.green(title)}\\n${capsuleOutput}`;\n }\n\n async json([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n return capsules.map((c) => ({\n id: c.component.id.toString(),\n path: c.path,\n }));\n }\n}\n\nexport class CapsuleListCmd implements Command {\n name = 'list';\n description = `list all capsules`;\n shortDescription = 'list all capsules';\n group = 'capsules';\n alias = '';\n options = [['j', 'json', 'json format']] as CommandOptions;\n\n constructor(private isolator: IsolatorMain, private workspace: Workspace) {}\n\n async report() {\n const list = await this.isolator.list(this.workspace.path);\n const { workspaceCapsulesRootDir, scopeCapsulesRootDir, scopeAspectsCapsulesRootDir } = this.getCapsulesRootDirs();\n // TODO: improve output\n return chalk.green(`found ${chalk.cyan(list.capsules.length.toString())} capsule(s) for workspace: ${chalk.cyan(\n list.workspace\n )}\nworkspace capsules root-dir: ${chalk.cyan(workspaceCapsulesRootDir)}\nscope capsules root-dir: ${chalk.cyan(scopeCapsulesRootDir)}\nscope's aspects capsules root-dir: ${chalk.cyan(scopeAspectsCapsulesRootDir)}\nuse --json to get the list of all workspace capsules`);\n }\n\n async json() {\n const list = await this.isolator.list(this.workspace.path);\n const rootDirs = this.getCapsulesRootDirs();\n return { ...list, ...rootDirs };\n }\n\n private getCapsulesRootDirs() {\n const workspaceCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.path);\n const scopeCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.path);\n const scopeAspectsCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.getAspectCapsulePath());\n\n return { workspaceCapsulesRootDir, scopeCapsulesRootDir, scopeAspectsCapsulesRootDir };\n }\n}\n\nexport class CapsuleDeleteCmd implements Command {\n name = 'delete';\n description = `delete capsules. with no args, only workspace's capsules are deleted`;\n shortDescription = `delete capsules`;\n group = 'capsules';\n alias = '';\n options = [\n ['', 'scope-aspects', 'delete scope-aspects capsules'],\n ['a', 'all', 'delete all capsules for all workspaces and scopes'],\n ] as CommandOptions;\n\n constructor(private isolator: IsolatorMain, private workspace: Workspace) {}\n\n async report(args: [], { all, scopeAspects }: { all: boolean; scopeAspects: boolean }) {\n const capsuleBaseDirToDelete = (): string | null => {\n if (all) return null;\n if (scopeAspects) return this.workspace.scope.getAspectCapsulePath();\n return this.workspace.path;\n };\n const capsuleBaseDir = capsuleBaseDirToDelete();\n const deletedDir = await this.isolator.deleteCapsules(capsuleBaseDir);\n return chalk.green(`the following capsules dir has been deleted ${chalk.bold(deletedDir)}`);\n }\n}\n\nexport class CapsuleCmd implements Command {\n name = 'capsule <sub-command>';\n shortDescription = 'manage capsules';\n description = `manage capsules.\na capsule is a directory contains the component code, isolated from the workspace.\nnormally, capsules are created during the build process, the component files are copied and the packages are installed\nvia the configured package-manager. the purpose is to compile/test them in isolation to make sure they will work for\nother users after publishing/exporting them.`;\n alias = '';\n group = 'capsules';\n commands: Command[] = [];\n options = [] as CommandOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async report(args: [string]) {\n // it should never be here. Yargs throws an error before reaching this method.\n return `Please specify a sub-command`;\n }\n}\n"]}
1
+ {"version":3,"sources":["capsule.cmd.ts"],"names":["CapsuleCreateCmd","constructor","workspace","isolator","create","componentIds","baseDir","rootBaseDir","alwaysNew","id","installPackages","seedersOnly","Array","isArray","capsuleOptions","installOptions","includeFromNestedHosts","name","ids","resolveMultipleComponentIds","network","isolateComponents","capsules","graphCapsules","report","opts","capsuleOutput","map","capsule","chalk","bold","component","toString","path","join","title","length","green","json","c","CapsuleListCmd","list","workspaceCapsulesRootDir","scopeAspectsCapsulesRootDir","getCapsulesRootDirs","cyan","rootDirs","getCapsulesRootDir","scope","getAspectCapsulePath","CapsuleDeleteCmd","args","all","scopeAspects","capsuleBaseDirToDelete","capsuleBaseDir","deletedDir","deleteCapsules","CapsuleCmd"],"mappings":"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","sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { CapsuleList, IsolateComponentsOptions, IsolatorMain } from '@teambit/isolator';\nimport chalk from 'chalk';\n\nimport { Workspace } from '.';\n\ntype CreateOpts = {\n baseDir?: string;\n rootBaseDir?: string;\n alwaysNew?: boolean;\n seedersOnly?: boolean;\n id: string;\n installPackages?: boolean;\n};\n\nexport class CapsuleCreateCmd implements Command {\n name = 'create [componentIds...]';\n description = `create capsules`;\n group = 'capsules';\n alias = '';\n options = [\n [\n 'b',\n 'base-dir <name>',\n 'set base dir of all capsules (hashed to create the base dir inside the root dir - host path by default)',\n ],\n ['r', 'root-base-dir <name>', 'set root base dir of all capsules (absolute path to use as root dir)'],\n ['a', 'always-new', 'create new environment for capsule'],\n ['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'],\n ['i', 'id <name>', 'reuse capsule of certain name'],\n ['j', 'json', 'json format'],\n ['d', 'install-packages', 'install packages by the package-manager'],\n ['p', 'package-manager <name>', 'npm, yarn or pnpm, default to npm'],\n ] as CommandOptions;\n\n constructor(private workspace: Workspace, private isolator: IsolatorMain) {}\n\n async create(\n [componentIds = []]: [string[]],\n { baseDir, rootBaseDir, alwaysNew = false, id, installPackages = false, seedersOnly = false }: CreateOpts\n ): Promise<CapsuleList> {\n // @todo: why it is not an array?\n if (componentIds && !Array.isArray(componentIds)) componentIds = [componentIds];\n const capsuleOptions: IsolateComponentsOptions = {\n baseDir,\n rootBaseDir,\n installOptions: { installPackages },\n alwaysNew,\n seedersOnly,\n includeFromNestedHosts: true,\n name: id,\n };\n const ids = await this.workspace.resolveMultipleComponentIds(componentIds);\n const network = await this.isolator.isolateComponents(ids, capsuleOptions);\n const capsules = network.graphCapsules;\n return capsules;\n }\n\n async report([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n const capsuleOutput = capsules\n .map((capsule) => `${chalk.bold(capsule.component.id.toString())} - ${capsule.path}`)\n .join('\\n');\n const title = `${capsules.length} capsule(s) were created successfully`;\n return `${chalk.green(title)}\\n${capsuleOutput}`;\n }\n\n async json([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n return capsules.map((c) => ({\n id: c.component.id.toString(),\n path: c.path,\n }));\n }\n}\n\nexport class CapsuleListCmd implements Command {\n name = 'list';\n description = `list all capsules`;\n shortDescription = 'list all capsules';\n group = 'capsules';\n alias = '';\n options = [['j', 'json', 'json format']] as CommandOptions;\n\n constructor(private isolator: IsolatorMain, private workspace: Workspace) {}\n\n async report() {\n const list = await this.isolator.list(this.workspace.path);\n const { workspaceCapsulesRootDir, scopeAspectsCapsulesRootDir } = this.getCapsulesRootDirs();\n // TODO: improve output\n return chalk.green(`found ${chalk.cyan(list.capsules.length.toString())} capsule(s) for workspace: ${chalk.cyan(\n list.workspace\n )}\nworkspace capsules root-dir: ${chalk.cyan(workspaceCapsulesRootDir)}\nscope's aspects capsules root-dir: ${chalk.cyan(scopeAspectsCapsulesRootDir)}\nuse --json to get the list of all workspace capsules`);\n }\n\n async json() {\n const list = await this.isolator.list(this.workspace.path);\n const rootDirs = this.getCapsulesRootDirs();\n return { ...list, ...rootDirs };\n }\n\n private getCapsulesRootDirs() {\n const workspaceCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.path);\n const scopeAspectsCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.getAspectCapsulePath());\n\n return { workspaceCapsulesRootDir, scopeAspectsCapsulesRootDir };\n }\n}\n\nexport class CapsuleDeleteCmd implements Command {\n name = 'delete';\n description = `delete capsules. with no args, only workspace's capsules are deleted`;\n shortDescription = `delete capsules`;\n group = 'capsules';\n alias = '';\n options = [\n ['', 'scope-aspects', 'delete scope-aspects capsules'],\n ['a', 'all', 'delete all capsules for all workspaces and scopes'],\n ] as CommandOptions;\n\n constructor(private isolator: IsolatorMain, private workspace: Workspace) {}\n\n async report(args: [], { all, scopeAspects }: { all: boolean; scopeAspects: boolean }) {\n const capsuleBaseDirToDelete = (): string | null => {\n if (all) return null;\n if (scopeAspects) return this.workspace.scope.getAspectCapsulePath();\n return this.workspace.path;\n };\n const capsuleBaseDir = capsuleBaseDirToDelete();\n const deletedDir = await this.isolator.deleteCapsules(capsuleBaseDir);\n return chalk.green(`the following capsules dir has been deleted ${chalk.bold(deletedDir)}`);\n }\n}\n\nexport class CapsuleCmd implements Command {\n name = 'capsule <sub-command>';\n shortDescription = 'manage capsules';\n description = `manage capsules.\na capsule is a directory contains the component code, isolated from the workspace.\nnormally, capsules are created during the build process, the component files are copied and the packages are installed\nvia the configured package-manager. the purpose is to compile/test them in isolation to make sure they will work for\nother users after publishing/exporting them.`;\n alias = '';\n group = 'capsules';\n commands: Command[] = [];\n options = [] as CommandOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async report(args: [string]) {\n // it should never be here. Yargs throws an error before reaching this method.\n return `Please specify a sub-command`;\n }\n}\n"]}
@@ -68,7 +68,7 @@ class EjectConfCmd {
68
68
  const ejectResult = await this.json(args, options);
69
69
  const [componentId] = args;
70
70
  return /*#__PURE__*/_react().default.createElement(_ink().Text, {
71
- color: "yellow"
71
+ color: "green"
72
72
  }, "successfully ejected config for component ", componentId, " in path ", ejectResult.configPath);
73
73
  }
74
74
 
@@ -1 +1 @@
1
- {"version":3,"sources":["eject-conf.cmd.tsx"],"names":["EjectConfCmd","constructor","workspace","render","args","options","ejectResult","json","componentId","configPath","report","chalk","bold","green","ejectOptions","propagate","override","id","resolveComponentId","results","ejectConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAWe,MAAMA,YAAN,CAAsC;AAWnDC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDAVnC,iBAUmC;AAAA,yDAT5B,mCAS4B;AAAA,mDARlC,EAQkC;AAAA,mDAPlC,aAOkC;AAAA,8DANvB,qFAMuB;AAAA,qDALhC,CACR,CAAC,GAAD,EAAM,WAAN,EAAmB,wCAAnB,CADQ,EAER,CAAC,GAAD,EAAM,UAAN,EAAkB,wBAAlB,CAFQ,CAKgC;AAAE,GAXO,CAanD;AACA;;;AACY,QAANC,MAAM,CAACC,IAAD,EAAsBC,OAAtB,EAAoD;AAC9D,UAAMC,WAAW,GAAG,MAAM,KAAKC,IAAL,CAAUH,IAAV,EAAgBC,OAAhB,CAA1B;AACA,UAAM,CAACG,WAAD,IAAgBJ,IAAtB;AACA,wBACE,+BAAC,WAAD;AAAM,MAAA,KAAK,EAAC;AAAZ,qDAC6CI,WAD7C,eACmEF,WAAW,CAACG,UAD/E,CADF;AAKD;;AAEW,QAANC,MAAM,CAACN,IAAD,EAAsBC,OAAtB,EAAqE;AAC/E,UAAMC,WAAW,GAAG,MAAM,KAAKC,IAAL,CAAUH,IAAV,EAAgBC,OAAhB,CAA1B;AACA,UAAM,CAACG,WAAD,IAAgBJ,IAAtB;AACA,WAAQ,6CAA4CO,iBAAMC,IAAN,CAAWJ,WAAX,CAAwB,YAAWG,iBAAME,KAAN,CACrFP,WAAW,CAACG,UADyE,CAErF,EAFF;AAGD;;AAES,QAAJF,IAAI,CAAC,CAACC,WAAD,CAAD,EAA+BH,OAA/B,EAAuF;AAC/F,UAAMS,YAAY,GAAGT,OAArB;;AACA,QAAIS,YAAY,CAACC,SAAb,KAA2B,MAA/B,EAAuC;AACrCD,MAAAA,YAAY,CAACC,SAAb,GAAyB,IAAzB;AACD;;AACD,QAAID,YAAY,CAACE,QAAb,KAA0B,MAA9B,EAAsC;AACpCF,MAAAA,YAAY,CAACE,QAAb,GAAwB,IAAxB;AACD;;AAED,UAAMC,EAAE,GAAG,MAAM,KAAKf,SAAL,CAAegB,kBAAf,CAAkCV,WAAlC,CAAjB;AAEA,UAAMW,OAAO,GAAG,MAAM,KAAKjB,SAAL,CAAekB,WAAf,CAA2BH,EAA3B,EAA+BH,YAA/B,CAAtB;AACA,WAAOK,OAAP;AACD;;AA9CkD","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Text } from 'ink';\nimport React from 'react';\n\nimport { EjectConfOptions, EjectConfResult, Workspace } from './workspace';\n\ntype EjectConfArgs = [string];\n// From the cli we might get those as string in case we run it like --propagate true (return string) as opposed to only --propagate\ntype EjectConfOptionsCLI = {\n propagate: string | boolean | undefined;\n override: string | boolean | undefined;\n};\n\nexport default class EjectConfCmd implements Command {\n name = 'eject-conf [id]';\n description = 'ejecting components configuration';\n alias = '';\n group = 'development';\n shortDescription = 'eject the target component configuration file (e.g. create a `component.json` file)';\n options = [\n ['p', 'propagate', 'mark propagate true in the config file'],\n ['o', 'override', 'override file if exist'],\n ] as CommandOptions;\n\n constructor(private workspace: Workspace) {}\n\n // TODO: remove this ts-ignore\n // @ts-ignore\n async render(args: EjectConfArgs, options: EjectConfOptionsCLI) {\n const ejectResult = await this.json(args, options);\n const [componentId] = args;\n return (\n <Text color=\"yellow\">\n successfully ejected config for component {componentId} in path {ejectResult.configPath}\n </Text>\n );\n }\n\n async report(args: EjectConfArgs, options: EjectConfOptionsCLI): Promise<string> {\n const ejectResult = await this.json(args, options);\n const [componentId] = args;\n return `successfully ejected config for component ${chalk.bold(componentId)} in path ${chalk.green(\n ejectResult.configPath\n )}`;\n }\n\n async json([componentId]: EjectConfArgs, options: EjectConfOptionsCLI): Promise<EjectConfResult> {\n const ejectOptions = options;\n if (ejectOptions.propagate === 'true') {\n ejectOptions.propagate = true;\n }\n if (ejectOptions.override === 'true') {\n ejectOptions.override = true;\n }\n\n const id = await this.workspace.resolveComponentId(componentId);\n\n const results = await this.workspace.ejectConfig(id, ejectOptions as EjectConfOptions);\n return results;\n }\n}\n"]}
1
+ {"version":3,"sources":["eject-conf.cmd.tsx"],"names":["EjectConfCmd","constructor","workspace","render","args","options","ejectResult","json","componentId","configPath","report","chalk","bold","green","ejectOptions","propagate","override","id","resolveComponentId","results","ejectConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAWe,MAAMA,YAAN,CAAsC;AAWnDC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDAVnC,iBAUmC;AAAA,yDAT5B,mCAS4B;AAAA,mDARlC,EAQkC;AAAA,mDAPlC,aAOkC;AAAA,8DANvB,qFAMuB;AAAA,qDALhC,CACR,CAAC,GAAD,EAAM,WAAN,EAAmB,wCAAnB,CADQ,EAER,CAAC,GAAD,EAAM,UAAN,EAAkB,wBAAlB,CAFQ,CAKgC;AAAE,GAXO,CAanD;AACA;;;AACY,QAANC,MAAM,CAACC,IAAD,EAAsBC,OAAtB,EAAoD;AAC9D,UAAMC,WAAW,GAAG,MAAM,KAAKC,IAAL,CAAUH,IAAV,EAAgBC,OAAhB,CAA1B;AACA,UAAM,CAACG,WAAD,IAAgBJ,IAAtB;AACA,wBACE,+BAAC,WAAD;AAAM,MAAA,KAAK,EAAC;AAAZ,qDAC6CI,WAD7C,eACmEF,WAAW,CAACG,UAD/E,CADF;AAKD;;AAEW,QAANC,MAAM,CAACN,IAAD,EAAsBC,OAAtB,EAAqE;AAC/E,UAAMC,WAAW,GAAG,MAAM,KAAKC,IAAL,CAAUH,IAAV,EAAgBC,OAAhB,CAA1B;AACA,UAAM,CAACG,WAAD,IAAgBJ,IAAtB;AACA,WAAQ,6CAA4CO,iBAAMC,IAAN,CAAWJ,WAAX,CAAwB,YAAWG,iBAAME,KAAN,CACrFP,WAAW,CAACG,UADyE,CAErF,EAFF;AAGD;;AAES,QAAJF,IAAI,CAAC,CAACC,WAAD,CAAD,EAA+BH,OAA/B,EAAuF;AAC/F,UAAMS,YAAY,GAAGT,OAArB;;AACA,QAAIS,YAAY,CAACC,SAAb,KAA2B,MAA/B,EAAuC;AACrCD,MAAAA,YAAY,CAACC,SAAb,GAAyB,IAAzB;AACD;;AACD,QAAID,YAAY,CAACE,QAAb,KAA0B,MAA9B,EAAsC;AACpCF,MAAAA,YAAY,CAACE,QAAb,GAAwB,IAAxB;AACD;;AAED,UAAMC,EAAE,GAAG,MAAM,KAAKf,SAAL,CAAegB,kBAAf,CAAkCV,WAAlC,CAAjB;AAEA,UAAMW,OAAO,GAAG,MAAM,KAAKjB,SAAL,CAAekB,WAAf,CAA2BH,EAA3B,EAA+BH,YAA/B,CAAtB;AACA,WAAOK,OAAP;AACD;;AA9CkD","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Text } from 'ink';\nimport React from 'react';\n\nimport { EjectConfOptions, EjectConfResult, Workspace } from './workspace';\n\ntype EjectConfArgs = [string];\n// From the cli we might get those as string in case we run it like --propagate true (return string) as opposed to only --propagate\ntype EjectConfOptionsCLI = {\n propagate: string | boolean | undefined;\n override: string | boolean | undefined;\n};\n\nexport default class EjectConfCmd implements Command {\n name = 'eject-conf [id]';\n description = 'ejecting components configuration';\n alias = '';\n group = 'development';\n shortDescription = 'eject the target component configuration file (e.g. create a `component.json` file)';\n options = [\n ['p', 'propagate', 'mark propagate true in the config file'],\n ['o', 'override', 'override file if exist'],\n ] as CommandOptions;\n\n constructor(private workspace: Workspace) {}\n\n // TODO: remove this ts-ignore\n // @ts-ignore\n async render(args: EjectConfArgs, options: EjectConfOptionsCLI) {\n const ejectResult = await this.json(args, options);\n const [componentId] = args;\n return (\n <Text color=\"green\">\n successfully ejected config for component {componentId} in path {ejectResult.configPath}\n </Text>\n );\n }\n\n async report(args: EjectConfArgs, options: EjectConfOptionsCLI): Promise<string> {\n const ejectResult = await this.json(args, options);\n const [componentId] = args;\n return `successfully ejected config for component ${chalk.bold(componentId)} in path ${chalk.green(\n ejectResult.configPath\n )}`;\n }\n\n async json([componentId]: EjectConfArgs, options: EjectConfOptionsCLI): Promise<EjectConfResult> {\n const ejectOptions = options;\n if (ejectOptions.propagate === 'true') {\n ejectOptions.propagate = true;\n }\n if (ejectOptions.override === 'true') {\n ejectOptions.override = true;\n }\n\n const id = await this.workspace.resolveComponentId(componentId);\n\n const results = await this.workspace.ejectConfig(id, ejectOptions as EjectConfOptions);\n return results;\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@teambit/cli';
2
+ import { Workspace } from '../workspace';
3
+ export declare class EnvsReplaceCmd implements Command {
4
+ private workspace;
5
+ name: string;
6
+ description: string;
7
+ options: never[];
8
+ group: string;
9
+ constructor(workspace: Workspace);
10
+ report([oldEnv, env]: [string, string]): Promise<string>;
11
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.array.iterator.js");
6
+
7
+ require("core-js/modules/es.promise.js");
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.EnvsReplaceCmd = void 0;
13
+
14
+ function _defineProperty2() {
15
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+
17
+ _defineProperty2 = function () {
18
+ return data;
19
+ };
20
+
21
+ return data;
22
+ }
23
+
24
+ function _chalk() {
25
+ const data = _interopRequireDefault(require("chalk"));
26
+
27
+ _chalk = function () {
28
+ return data;
29
+ };
30
+
31
+ return data;
32
+ }
33
+
34
+ class EnvsReplaceCmd {
35
+ constructor(workspace) {
36
+ this.workspace = workspace;
37
+ (0, _defineProperty2().default)(this, "name", 'replace <old-env> <new-env>');
38
+ (0, _defineProperty2().default)(this, "description", 'replace an existing env with another env for all components using the old env');
39
+ (0, _defineProperty2().default)(this, "options", []);
40
+ (0, _defineProperty2().default)(this, "group", 'development');
41
+ }
42
+
43
+ async report([oldEnv, env]) {
44
+ const envId = await this.workspace.resolveComponentId(env);
45
+ const components = await this.workspace.getComponentsUsingEnv(oldEnv, true);
46
+ const componentIds = components.map(comp => comp.id);
47
+ await this.workspace.setEnvToComponents(envId, componentIds);
48
+ return `added ${_chalk().default.bold(envId.toString())} env to the following component(s):
49
+ ${componentIds.map(compId => compId.toString()).join('\n')}`;
50
+ }
51
+
52
+ }
53
+
54
+ exports.EnvsReplaceCmd = EnvsReplaceCmd;
55
+
56
+ //# sourceMappingURL=envs-replace.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["envs-replace.cmd.ts"],"names":["EnvsReplaceCmd","constructor","workspace","report","oldEnv","env","envId","resolveComponentId","components","getComponentsUsingEnv","componentIds","map","comp","id","setEnvToComponents","chalk","bold","toString","compId","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,cAAN,CAAwC;AAM7CC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDALnC,6BAKmC;AAAA,yDAJ5B,+EAI4B;AAAA,qDAHhC,EAGgC;AAAA,mDAFlC,aAEkC;AAAE;;AAEhC,QAANC,MAAM,CAAC,CAACC,MAAD,EAASC,GAAT,CAAD,EAAkC;AAC5C,UAAMC,KAAK,GAAG,MAAM,KAAKJ,SAAL,CAAeK,kBAAf,CAAkCF,GAAlC,CAApB;AACA,UAAMG,UAAU,GAAG,MAAM,KAAKN,SAAL,CAAeO,qBAAf,CAAqCL,MAArC,EAA6C,IAA7C,CAAzB;AACA,UAAMM,YAAY,GAAGF,UAAU,CAACG,GAAX,CAAgBC,IAAD,IAAUA,IAAI,CAACC,EAA9B,CAArB;AACA,UAAM,KAAKX,SAAL,CAAeY,kBAAf,CAAkCR,KAAlC,EAAyCI,YAAzC,CAAN;AACA,WAAQ,SAAQK,iBAAMC,IAAN,CAAWV,KAAK,CAACW,QAAN,EAAX,CAA6B;AACjD,EAAEP,YAAY,CAACC,GAAb,CAAkBO,MAAD,IAAYA,MAAM,CAACD,QAAP,EAA7B,EAAgDE,IAAhD,CAAqD,IAArD,CAA2D,EADzD;AAED;;AAf4C","sourcesContent":["import { Command } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Workspace } from '../workspace';\n\nexport class EnvsReplaceCmd implements Command {\n name = 'replace <old-env> <new-env>';\n description = 'replace an existing env with another env for all components using the old env';\n options = [];\n group = 'development';\n\n constructor(private workspace: Workspace) {}\n\n async report([oldEnv, env]: [string, string]) {\n const envId = await this.workspace.resolveComponentId(env);\n const components = await this.workspace.getComponentsUsingEnv(oldEnv, true);\n const componentIds = components.map((comp) => comp.id);\n await this.workspace.setEnvToComponents(envId, componentIds);\n return `added ${chalk.bold(envId.toString())} env to the following component(s):\n${componentIds.map((compId) => compId.toString()).join('\\n')}`;\n }\n}\n"]}
@@ -54,7 +54,6 @@ class EnvsSetCmd {
54
54
  async report([pattern, env]) {
55
55
  const envId = await this.workspace.resolveComponentId(env);
56
56
  const componentIds = await this.workspace.idsByPattern(pattern);
57
- if (!componentIds.length) return _chalk().default.yellow(`unable to find any matching for ${_chalk().default.bold(pattern)} pattern`);
58
57
  await this.workspace.setEnvToComponents(envId, componentIds);
59
58
  return `added ${_chalk().default.bold(envId.toString())} env to the following component(s):
60
59
  ${componentIds.map(compId => compId.toString()).join('\n')}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["envs-set.cmd.ts"],"names":["EnvsSetCmd","constructor","workspace","report","pattern","env","envId","resolveComponentId","componentIds","idsByPattern","length","chalk","yellow","bold","setEnvToComponents","toString","map","compId","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,UAAN,CAAoC;AAOzCC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDANnC,qBAMmC;AAAA,yDAL5B,qCAK4B;AAAA,qDAJhC,EAIgC;AAAA,mDAHlC,aAGkC;AAAA,iEAFnB,GAAE,+BAAa,SAAb,CAAwB,EAEP;AAAE;;AAEhC,QAANC,MAAM,CAAC,CAACC,OAAD,EAAUC,GAAV,CAAD,EAAmC;AAC7C,UAAMC,KAAK,GAAG,MAAM,KAAKJ,SAAL,CAAeK,kBAAf,CAAkCF,GAAlC,CAApB;AACA,UAAMG,YAAY,GAAG,MAAM,KAAKN,SAAL,CAAeO,YAAf,CAA4BL,OAA5B,CAA3B;AACA,QAAI,CAACI,YAAY,CAACE,MAAlB,EAA0B,OAAOC,iBAAMC,MAAN,CAAc,mCAAkCD,iBAAME,IAAN,CAAWT,OAAX,CAAoB,UAApE,CAAP;AAC1B,UAAM,KAAKF,SAAL,CAAeY,kBAAf,CAAkCR,KAAlC,EAAyCE,YAAzC,CAAN;AACA,WAAQ,SAAQG,iBAAME,IAAN,CAAWP,KAAK,CAACS,QAAN,EAAX,CAA6B;AACjD,EAAEP,YAAY,CAACQ,GAAb,CAAkBC,MAAD,IAAYA,MAAM,CAACF,QAAP,EAA7B,EAAgDG,IAAhD,CAAqD,IAArD,CAA2D,EADzD;AAED;;AAhBwC","sourcesContent":["import { Command } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { Workspace } from '../workspace';\n\nexport class EnvsSetCmd implements Command {\n name = 'set <pattern> <env>';\n description = 'set an environment for component(s)';\n options = [];\n group = 'development';\n extendedDescription = `${PATTERN_HELP('env set')}`;\n\n constructor(private workspace: Workspace) {}\n\n async report([pattern, env]: [string, string]) {\n const envId = await this.workspace.resolveComponentId(env);\n const componentIds = await this.workspace.idsByPattern(pattern);\n if (!componentIds.length) return chalk.yellow(`unable to find any matching for ${chalk.bold(pattern)} pattern`);\n await this.workspace.setEnvToComponents(envId, componentIds);\n return `added ${chalk.bold(envId.toString())} env to the following component(s):\n${componentIds.map((compId) => compId.toString()).join('\\n')}`;\n }\n}\n"]}
1
+ {"version":3,"sources":["envs-set.cmd.ts"],"names":["EnvsSetCmd","constructor","workspace","report","pattern","env","envId","resolveComponentId","componentIds","idsByPattern","setEnvToComponents","chalk","bold","toString","map","compId","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,UAAN,CAAoC;AAOzCC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDANnC,qBAMmC;AAAA,yDAL5B,qCAK4B;AAAA,qDAJhC,EAIgC;AAAA,mDAHlC,aAGkC;AAAA,iEAFnB,GAAE,+BAAa,SAAb,CAAwB,EAEP;AAAE;;AAEhC,QAANC,MAAM,CAAC,CAACC,OAAD,EAAUC,GAAV,CAAD,EAAmC;AAC7C,UAAMC,KAAK,GAAG,MAAM,KAAKJ,SAAL,CAAeK,kBAAf,CAAkCF,GAAlC,CAApB;AACA,UAAMG,YAAY,GAAG,MAAM,KAAKN,SAAL,CAAeO,YAAf,CAA4BL,OAA5B,CAA3B;AACA,UAAM,KAAKF,SAAL,CAAeQ,kBAAf,CAAkCJ,KAAlC,EAAyCE,YAAzC,CAAN;AACA,WAAQ,SAAQG,iBAAMC,IAAN,CAAWN,KAAK,CAACO,QAAN,EAAX,CAA6B;AACjD,EAAEL,YAAY,CAACM,GAAb,CAAkBC,MAAD,IAAYA,MAAM,CAACF,QAAP,EAA7B,EAAgDG,IAAhD,CAAqD,IAArD,CAA2D,EADzD;AAED;;AAfwC","sourcesContent":["import { Command } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { Workspace } from '../workspace';\n\nexport class EnvsSetCmd implements Command {\n name = 'set <pattern> <env>';\n description = 'set an environment for component(s)';\n options = [];\n group = 'development';\n extendedDescription = `${PATTERN_HELP('env set')}`;\n\n constructor(private workspace: Workspace) {}\n\n async report([pattern, env]: [string, string]) {\n const envId = await this.workspace.resolveComponentId(env);\n const componentIds = await this.workspace.idsByPattern(pattern);\n await this.workspace.setEnvToComponents(envId, componentIds);\n return `added ${chalk.bold(envId.toString())} env to the following component(s):\n${componentIds.map((compId) => compId.toString()).join('\\n')}`;\n }\n}\n"]}
@@ -43,7 +43,7 @@ class PatternCommand {
43
43
  }
44
44
 
45
45
  async report([pattern]) {
46
- const ids = await this.workspace.idsByPattern(pattern);
46
+ const ids = await this.json([pattern]);
47
47
 
48
48
  const title = _chalk().default.green(`found ${_chalk().default.bold(ids.length.toString())} components matching the pattern`);
49
49
 
@@ -51,7 +51,7 @@ class PatternCommand {
51
51
  }
52
52
 
53
53
  async json([pattern]) {
54
- return this.workspace.idsByPattern(pattern);
54
+ return this.workspace.idsByPattern(pattern, false);
55
55
  }
56
56
 
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["pattern.cmd.ts"],"names":["PatternCommand","constructor","workspace","report","pattern","ids","idsByPattern","title","chalk","green","bold","length","toString","join","json"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,cAAN,CAAwC;AAQ7CC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDAPnC,mBAOmC;AAAA,mDANlC,EAMkC;AAAA,yDAL5B,mDAK4B;AAAA,mDAJlC,aAIkC;AAAA,qDAHhC,KAGgC;AAAA,qDAFhC,CAAC,CAAC,GAAD,EAAM,MAAN,EAAc,2BAAd,CAAD,CAEgC;AAAE;;AAEhC,QAANC,MAAM,CAAC,CAACC,OAAD,CAAD,EAAsB;AAChC,UAAMC,GAAG,GAAG,MAAM,KAAKH,SAAL,CAAeI,YAAf,CAA4BF,OAA5B,CAAlB;;AACA,UAAMG,KAAK,GAAGC,iBAAMC,KAAN,CAAa,SAAQD,iBAAME,IAAN,CAAWL,GAAG,CAACM,MAAJ,CAAWC,QAAX,EAAX,CAAkC,kCAAvD,CAAd;;AACA,WAAQ,GAAEL,KAAM,KAAIF,GAAG,CAACQ,IAAJ,CAAS,IAAT,CAAe,EAAnC;AACD;;AAES,QAAJC,IAAI,CAAC,CAACV,OAAD,CAAD,EAAsB;AAC9B,WAAO,KAAKF,SAAL,CAAeI,YAAf,CAA4BF,OAA5B,CAAP;AACD;;AAlB4C","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Workspace } from './workspace';\n\nexport class PatternCommand implements Command {\n name = 'pattern <pattern>';\n alias = '';\n description = 'list the component ids matching the given pattern';\n group = 'development';\n private = false;\n options = [['j', 'json', 'return the output as JSON']] as CommandOptions;\n\n constructor(private workspace: Workspace) {}\n\n async report([pattern]: [string]) {\n const ids = await this.workspace.idsByPattern(pattern);\n const title = chalk.green(`found ${chalk.bold(ids.length.toString())} components matching the pattern`);\n return `${title}\\n${ids.join('\\n')}`;\n }\n\n async json([pattern]: [string]) {\n return this.workspace.idsByPattern(pattern);\n }\n}\n"]}
1
+ {"version":3,"sources":["pattern.cmd.ts"],"names":["PatternCommand","constructor","workspace","report","pattern","ids","json","title","chalk","green","bold","length","toString","join","idsByPattern"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,cAAN,CAAwC;AAQ7CC,EAAAA,WAAW,CAASC,SAAT,EAA+B;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAA,kDAPnC,mBAOmC;AAAA,mDANlC,EAMkC;AAAA,yDAL5B,mDAK4B;AAAA,mDAJlC,aAIkC;AAAA,qDAHhC,KAGgC;AAAA,qDAFhC,CAAC,CAAC,GAAD,EAAM,MAAN,EAAc,2BAAd,CAAD,CAEgC;AAAE;;AAEhC,QAANC,MAAM,CAAC,CAACC,OAAD,CAAD,EAAsB;AAChC,UAAMC,GAAG,GAAG,MAAM,KAAKC,IAAL,CAAU,CAACF,OAAD,CAAV,CAAlB;;AACA,UAAMG,KAAK,GAAGC,iBAAMC,KAAN,CAAa,SAAQD,iBAAME,IAAN,CAAWL,GAAG,CAACM,MAAJ,CAAWC,QAAX,EAAX,CAAkC,kCAAvD,CAAd;;AACA,WAAQ,GAAEL,KAAM,KAAIF,GAAG,CAACQ,IAAJ,CAAS,IAAT,CAAe,EAAnC;AACD;;AAES,QAAJP,IAAI,CAAC,CAACF,OAAD,CAAD,EAAsB;AAC9B,WAAO,KAAKF,SAAL,CAAeY,YAAf,CAA4BV,OAA5B,EAAqC,KAArC,CAAP;AACD;;AAlB4C","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Workspace } from './workspace';\n\nexport class PatternCommand implements Command {\n name = 'pattern <pattern>';\n alias = '';\n description = 'list the component ids matching the given pattern';\n group = 'development';\n private = false;\n options = [['j', 'json', 'return the output as JSON']] as CommandOptions;\n\n constructor(private workspace: Workspace) {}\n\n async report([pattern]: [string]) {\n const ids = await this.json([pattern]);\n const title = chalk.green(`found ${chalk.bold(ids.length.toString())} components matching the pattern`);\n return `${title}\\n${ids.join('\\n')}`;\n }\n\n async json([pattern]: [string]) {\n return this.workspace.idsByPattern(pattern, false);\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ComponentID, ComponentModel, ComponentModelProps } from '@teambit/component';
2
+ import { ComponentDescriptor } from '@teambit/component-descriptor';
2
3
  import { DeprecationInfo } from '@teambit/deprecation';
3
4
  import { Descriptor } from '@teambit/envs';
4
5
  import { ComponentStatus } from '../../workspace-component/component-status';
@@ -31,6 +32,10 @@ export declare class Workspace {
31
32
  * components container in the workspace.
32
33
  */
33
34
  readonly components: ComponentModel[];
35
+ /**
36
+ * components contained in the workspace.
37
+ */
38
+ readonly componentDescriptors: ComponentDescriptor[];
34
39
  constructor(
35
40
  /**
36
41
  * name of the workspace.
@@ -47,7 +52,11 @@ export declare class Workspace {
47
52
  /**
48
53
  * components container in the workspace.
49
54
  */
50
- components: ComponentModel[]);
55
+ components: ComponentModel[],
56
+ /**
57
+ * components contained in the workspace.
58
+ */
59
+ componentDescriptors: ComponentDescriptor[]);
51
60
  /**
52
61
  * return a component from the workspace.
53
62
  */
@@ -15,6 +15,16 @@ function _component() {
15
15
  return data;
16
16
  }
17
17
 
18
+ function _componentDescriptor() {
19
+ const data = require("@teambit/component-descriptor");
20
+
21
+ _componentDescriptor = function () {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
18
28
  // import { ComponentMeta } from '@teambit/component';
19
29
  class Workspace {
20
30
  constructor(
@@ -33,11 +43,16 @@ class Workspace {
33
43
  /**
34
44
  * components container in the workspace.
35
45
  */
36
- components) {
46
+ components,
47
+ /**
48
+ * components contained in the workspace.
49
+ */
50
+ componentDescriptors) {
37
51
  this.name = name;
38
52
  this.path = path;
39
53
  this.icon = icon;
40
54
  this.components = components;
55
+ this.componentDescriptors = componentDescriptors;
41
56
  }
42
57
  /**
43
58
  * return a component from the workspace.
@@ -54,13 +69,20 @@ class Workspace {
54
69
  components,
55
70
  icon
56
71
  }) {
72
+ const componentDescriptors = components.map(component => {
73
+ const id = _component().ComponentID.fromObject(component.id);
74
+
75
+ return _componentDescriptor().ComponentDescriptor.fromObject({
76
+ id: id.toString()
77
+ });
78
+ });
57
79
  return new Workspace(name, path, icon, components.map(value => {
58
80
  return _component().ComponentModel.from(value);
59
- }));
81
+ }), componentDescriptors);
60
82
  }
61
83
 
62
84
  static empty() {
63
- return new Workspace('', '', '', []);
85
+ return new Workspace('', '', '', [], []);
64
86
  }
65
87
 
66
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["workspace-model.ts"],"names":["Workspace","constructor","name","path","icon","components","getComponent","id","find","component","fullName","from","map","value","ComponentModel","empty"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AADA;AAqBO,MAAMA,SAAN,CAAgB;AACrBC,EAAAA,WAAW;AACT;AACJ;AACA;AACaC,EAAAA,IAJA;AAMT;AACJ;AACA;AACaC,EAAAA,IATA;AAWT;AACJ;AACA;AACaC,EAAAA,IAdA;AAgBT;AACJ;AACA;AACaC,EAAAA,UAnBA,EAoBT;AAAA,SAhBSH,IAgBT,GAhBSA,IAgBT;AAAA,SAXSC,IAWT,GAXSA,IAWT;AAAA,SANSC,IAMT,GANSA,IAMT;AAAA,SADSC,UACT,GADSA,UACT;AAAE;AAEJ;AACF;AACA;;;AACEC,EAAAA,YAAY,CAACC,EAAD,EAAkB;AAC5B,WAAO,KAAKF,UAAL,CAAgBG,IAAhB,CAAsBC,SAAD,IAAeA,SAAS,CAACF,EAAV,CAAaG,QAAb,KAA0BH,EAAE,CAACG,QAAjE,CAAP;AACD;;AAEU,SAAJC,IAAI,CAAC;AAAET,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcE,IAAAA,UAAd;AAA0BD,IAAAA;AAA1B,GAAD,EAAmD;AAC5D,WAAO,IAAIJ,SAAJ,CACLE,IADK,EAELC,IAFK,EAGLC,IAHK,EAILC,UAAU,CAACO,GAAX,CAAgBC,KAAD,IAAW;AACxB,aAAOC,4BAAeH,IAAf,CAAoBE,KAApB,CAAP;AACD,KAFD,CAJK,CAAP;AAQD;;AAEW,SAALE,KAAK,GAAG;AACb,WAAO,IAAIf,SAAJ,CAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,CAAP;AACD;;AA3CoB","sourcesContent":["// import { ComponentMeta } from '@teambit/component';\nimport { ComponentID, ComponentModel, ComponentModelProps } from '@teambit/component';\nimport { DeprecationInfo } from '@teambit/deprecation';\nimport { Descriptor } from '@teambit/envs';\n\nimport { ComponentStatus } from '../../workspace-component/component-status';\n\nexport type WorkspaceModelComponent = {\n id: ComponentID;\n status: ComponentStatus;\n deprecation: DeprecationInfo;\n env: Descriptor;\n};\n\nexport type WorkspaceProps = {\n name: string;\n path: string;\n components: ComponentModelProps[];\n icon: string;\n};\n\nexport class Workspace {\n constructor(\n /**\n * name of the workspace.\n */\n readonly name: string,\n\n /**\n * absolute path of the workspace.\n */\n readonly path: string,\n\n /**\n * icon of the workspace.\n */\n readonly icon: string,\n\n /**\n * components container in the workspace.\n */\n readonly components: ComponentModel[]\n ) {}\n\n /**\n * return a component from the workspace.\n */\n getComponent(id: ComponentID) {\n return this.components.find((component) => component.id.fullName === id.fullName);\n }\n\n static from({ name, path, components, icon }: WorkspaceProps) {\n return new Workspace(\n name,\n path,\n icon,\n components.map((value) => {\n return ComponentModel.from(value);\n })\n );\n }\n\n static empty() {\n return new Workspace('', '', '', []);\n }\n}\n"]}
1
+ {"version":3,"sources":["workspace-model.ts"],"names":["Workspace","constructor","name","path","icon","components","componentDescriptors","getComponent","id","find","component","fullName","from","map","ComponentID","fromObject","ComponentDescriptor","toString","value","ComponentModel","empty"],"mappings":";;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAFA;AAsBO,MAAMA,SAAN,CAAgB;AACrBC,EAAAA,WAAW;AACT;AACJ;AACA;AACaC,EAAAA,IAJA;AAMT;AACJ;AACA;AACaC,EAAAA,IATA;AAWT;AACJ;AACA;AACaC,EAAAA,IAdA;AAgBT;AACJ;AACA;AACaC,EAAAA,UAnBA;AAqBT;AACJ;AACA;AACaC,EAAAA,oBAxBA,EAyBT;AAAA,SArBSJ,IAqBT,GArBSA,IAqBT;AAAA,SAhBSC,IAgBT,GAhBSA,IAgBT;AAAA,SAXSC,IAWT,GAXSA,IAWT;AAAA,SANSC,UAMT,GANSA,UAMT;AAAA,SADSC,oBACT,GADSA,oBACT;AAAE;AAEJ;AACF;AACA;;;AACEC,EAAAA,YAAY,CAACC,EAAD,EAAkB;AAC5B,WAAO,KAAKH,UAAL,CAAgBI,IAAhB,CAAsBC,SAAD,IAAeA,SAAS,CAACF,EAAV,CAAaG,QAAb,KAA0BH,EAAE,CAACG,QAAjE,CAAP;AACD;;AAEU,SAAJC,IAAI,CAAC;AAAEV,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcE,IAAAA,UAAd;AAA0BD,IAAAA;AAA1B,GAAD,EAAmD;AAC5D,UAAME,oBAAoB,GAAGD,UAAU,CAACQ,GAAX,CAAgBH,SAAD,IAAe;AACzD,YAAMF,EAAE,GAAGM,yBAAYC,UAAZ,CAAuBL,SAAS,CAACF,EAAjC,CAAX;;AACA,aAAOQ,2CAAoBD,UAApB,CAA+B;AAAEP,QAAAA,EAAE,EAAEA,EAAE,CAACS,QAAH;AAAN,OAA/B,CAAP;AACD,KAH4B,CAA7B;AAIA,WAAO,IAAIjB,SAAJ,CACLE,IADK,EAELC,IAFK,EAGLC,IAHK,EAILC,UAAU,CAACQ,GAAX,CAAgBK,KAAD,IAAW;AACxB,aAAOC,4BAAeP,IAAf,CAAoBM,KAApB,CAAP;AACD,KAFD,CAJK,EAOLZ,oBAPK,CAAP;AASD;;AAEW,SAALc,KAAK,GAAG;AACb,WAAO,IAAIpB,SAAJ,CAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,CAAP;AACD;;AArDoB","sourcesContent":["// import { ComponentMeta } from '@teambit/component';\nimport { ComponentID, ComponentModel, ComponentModelProps } from '@teambit/component';\nimport { ComponentDescriptor } from '@teambit/component-descriptor';\nimport { DeprecationInfo } from '@teambit/deprecation';\nimport { Descriptor } from '@teambit/envs';\n\nimport { ComponentStatus } from '../../workspace-component/component-status';\n\nexport type WorkspaceModelComponent = {\n id: ComponentID;\n status: ComponentStatus;\n deprecation: DeprecationInfo;\n env: Descriptor;\n};\n\nexport type WorkspaceProps = {\n name: string;\n path: string;\n components: ComponentModelProps[];\n icon: string;\n};\n\nexport class Workspace {\n constructor(\n /**\n * name of the workspace.\n */\n readonly name: string,\n\n /**\n * absolute path of the workspace.\n */\n readonly path: string,\n\n /**\n * icon of the workspace.\n */\n readonly icon: string,\n\n /**\n * components container in the workspace.\n */\n readonly components: ComponentModel[],\n\n /**\n * components contained in the workspace.\n */\n readonly componentDescriptors: ComponentDescriptor[]\n ) {}\n\n /**\n * return a component from the workspace.\n */\n getComponent(id: ComponentID) {\n return this.components.find((component) => component.id.fullName === id.fullName);\n }\n\n static from({ name, path, components, icon }: WorkspaceProps) {\n const componentDescriptors = components.map((component) => {\n const id = ComponentID.fromObject(component.id);\n return ComponentDescriptor.fromObject({ id: id.toString() });\n });\n return new Workspace(\n name,\n path,\n icon,\n components.map((value) => {\n return ComponentModel.from(value);\n }),\n componentDescriptors\n );\n }\n\n static empty() {\n return new Workspace('', '', '', [], []);\n }\n}\n"]}
@@ -289,7 +289,7 @@ export declare class Workspace implements ComponentFactory {
289
289
  * get component-ids matching the given pattern. a pattern can have multiple patterns separated by a comma.
290
290
  * it supports negate (!) character to exclude ids.
291
291
  */
292
- idsByPattern(pattern: string): Promise<ComponentID[]>;
292
+ idsByPattern(pattern: string, throwForNoMatch?: boolean): Promise<ComponentID[]>;
293
293
  /**
294
294
  * useful for workspace commands, such as `bit build`, `bit compile`.
295
295
  * by default, it should be running on new and modified components.
@@ -297,6 +297,7 @@ export declare class Workspace implements ComponentFactory {
297
297
  * some commands such as build/test needs to run also on the dependents.
298
298
  */
299
299
  getComponentsByUserInput(all?: boolean, pattern?: string, includeDependents?: boolean): Promise<Component[]>;
300
+ getComponentsUsingEnv(env: string, throwIfNotFound?: boolean): Promise<Component[]>;
300
301
  getMany(ids: Array<ComponentID>, forCapsule?: boolean): Promise<Component[]>;
301
302
  getManyByLegacy(components: ConsumerComponent[]): Promise<Component[]>;
302
303
  /**
@@ -404,7 +405,7 @@ export declare class Workspace implements ComponentFactory {
404
405
  * load aspects from the workspace and if not exists in the workspace, load from the scope.
405
406
  * keep in mind that the graph may have circles.
406
407
  */
407
- loadAspects(ids?: string[], throwOnError?: boolean): Promise<string[]>;
408
+ loadAspects(ids?: string[], throwOnError?: boolean, neededFor?: ComponentID): Promise<string[]>;
408
409
  /**
409
410
  * Note - this gets called from Harmony only.
410
411
  * returns one graph that includes all dependencies types. each edge has a label of the dependency
@@ -418,7 +419,7 @@ export declare class Workspace implements ComponentFactory {
418
419
  * Load all unloaded extensions from a list
419
420
  * @param extensions list of extensions with config to load
420
421
  */
421
- loadExtensions(extensions: ExtensionDataList, throwOnError?: boolean): Promise<void>;
422
+ loadExtensions(extensions: ExtensionDataList, originatedFrom?: ComponentID, throwOnError?: boolean): Promise<void>;
422
423
  /**
423
424
  * Provides a cache folder, unique per key.
424
425
  * Return value may be undefined, if workspace folder is unconventional (bare-scope, no node_modules, etc)
package/dist/workspace.js CHANGED
@@ -882,7 +882,7 @@ class Workspace {
882
882
  try {
883
883
  this.componentLoadedSelfAsAspects.set(component.id.toString(), true);
884
884
  this.logger.debug(`trying to load self as aspect with id ${component.id.toString()}`);
885
- await this.loadAspects([component.id.toString()]); // In most cases if the load self as aspect failed we don't care about it.
885
+ await this.loadAspects([component.id.toString()], undefined, component.id); // In most cases if the load self as aspect failed we don't care about it.
886
886
  // we only need it in specific cases to work, but this workspace.get runs on different
887
887
  // cases where it might fail (like when importing aspect, after the import objects
888
888
  // when we write the package.json we run the applyTransformers which get to pkg which call
@@ -1118,11 +1118,13 @@ class Workspace {
1118
1118
  */
1119
1119
 
1120
1120
 
1121
- async idsByPattern(pattern) {
1121
+ async idsByPattern(pattern, throwForNoMatch = true) {
1122
1122
  if (!pattern.includes('*') && !pattern.includes(',')) {
1123
1123
  // if it's not a pattern but just id, resolve it without multimatch to support specifying id without scope-name
1124
1124
  const id = await this.resolveComponentId(pattern);
1125
- return [id];
1125
+ if (this.exists(id)) return [id];
1126
+ if (throwForNoMatch) throw new (_bitError().BitError)(`unable to find "${pattern}" in the workspace`);
1127
+ return [];
1126
1128
  }
1127
1129
 
1128
1130
  const ids = await this.listIds();
@@ -1130,7 +1132,13 @@ class Workspace {
1130
1132
 
1131
1133
  const idsToCheck = id => [id.toStringWithoutVersion(), id._legacy.toStringWithoutVersion()];
1132
1134
 
1133
- return ids.filter(id => (0, _multimatch().default)(idsToCheck(id), patterns).length);
1135
+ const idsFiltered = ids.filter(id => (0, _multimatch().default)(idsToCheck(id), patterns).length);
1136
+
1137
+ if (throwForNoMatch && !idsFiltered.length) {
1138
+ throw new (_bitError().BitError)(`unable to find any matching for "${pattern}" pattern`);
1139
+ }
1140
+
1141
+ return idsFiltered;
1134
1142
  }
1135
1143
  /**
1136
1144
  * useful for workspace commands, such as `bit build`, `bit compile`.
@@ -1162,6 +1170,20 @@ class Workspace {
1162
1170
  return newAndModified;
1163
1171
  }
1164
1172
 
1173
+ async getComponentsUsingEnv(env, throwIfNotFound = false) {
1174
+ const allComps = await this.list();
1175
+ const allEnvs = await this.envs.createEnvironment(allComps);
1176
+ const foundEnv = allEnvs.runtimeEnvs.find(runtimeEnv => runtimeEnv.id === env);
1177
+
1178
+ if (!foundEnv && throwIfNotFound) {
1179
+ const availableEnvs = allEnvs.runtimeEnvs.map(runtimeEnv => runtimeEnv.id);
1180
+ throw new (_bitError().BitError)(`unable to find components that using "${env}" env.
1181
+ the following envs are used in this workspace: ${availableEnvs.join(', ')}`);
1182
+ }
1183
+
1184
+ return (foundEnv === null || foundEnv === void 0 ? void 0 : foundEnv.components) || [];
1185
+ }
1186
+
1165
1187
  async getMany(ids, forCapsule = false) {
1166
1188
  return this.componentLoader.getMany(ids, forCapsule);
1167
1189
  }
@@ -1453,7 +1475,7 @@ class Workspace {
1453
1475
  const extsWithoutRemoved = extensions.filterRemovedExtensions();
1454
1476
  const selfInMergedExtensions = extsWithoutRemoved.findExtension(componentId._legacy.toStringWithoutScopeAndVersion(), true, true);
1455
1477
  const extsWithoutSelf = selfInMergedExtensions !== null && selfInMergedExtensions !== void 0 && selfInMergedExtensions.extensionId ? extsWithoutRemoved.remove(selfInMergedExtensions.extensionId) : extsWithoutRemoved;
1456
- await this.loadExtensions(extsWithoutSelf);
1478
+ await this.loadExtensions(extsWithoutSelf, componentId);
1457
1479
  const {
1458
1480
  extensionDataListFiltered,
1459
1481
  envIsCurrentlySet
@@ -1694,8 +1716,10 @@ class Workspace {
1694
1716
  */
1695
1717
 
1696
1718
 
1697
- async loadAspects(ids = [], throwOnError = false) {
1698
- this.logger.debug(`loading ${ids.length} aspects`);
1719
+ async loadAspects(ids = [], throwOnError = false, neededFor) {
1720
+ this.logger.info(`loadAspects, loading ${ids.length} aspects.
1721
+ ids: ${ids.join(', ')}
1722
+ needed-for: ${(neededFor === null || neededFor === void 0 ? void 0 : neededFor.toString()) || '<unknown>'}`);
1699
1723
  const notLoadedIds = ids.filter(id => !this.aspectLoader.isAspectLoaded(id));
1700
1724
  if (!notLoadedIds.length) return [];
1701
1725
  const coreAspectsStringIds = this.aspectLoader.getCoreAspectIds();
@@ -1855,7 +1879,7 @@ class Workspace {
1855
1879
  */
1856
1880
 
1857
1881
 
1858
- async loadExtensions(extensions, throwOnError = false) {
1882
+ async loadExtensions(extensions, originatedFrom, throwOnError = false) {
1859
1883
  const extensionsIdsP = extensions.map(async extensionEntry => {
1860
1884
  // Core extension
1861
1885
  if (!extensionEntry.extensionId) {
@@ -1870,7 +1894,7 @@ class Workspace {
1870
1894
  const loadedExtensions = this.harmony.extensionsIds;
1871
1895
  const extensionsToLoad = (0, _lodash().difference)(extensionsIds, loadedExtensions);
1872
1896
  if (!extensionsToLoad.length) return;
1873
- await this.loadAspects(extensionsToLoad, throwOnError);
1897
+ await this.loadAspects(extensionsToLoad, throwOnError, originatedFrom);
1874
1898
  }
1875
1899
  /**
1876
1900
  * Provides a cache folder, unique per key.