@teambit/aspect 1.0.107 → 1.0.108

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.
Files changed (36) hide show
  1. package/aspect.aspect.ts +7 -0
  2. package/aspect.cmd.ts +255 -0
  3. package/aspect.env.ts +163 -0
  4. package/aspect.main.runtime.ts +299 -0
  5. package/aspect.templates.ts +24 -0
  6. package/core-exporter.task.ts +82 -0
  7. package/dist/aspect.cmd.d.ts +5 -5
  8. package/dist/aspect.cmd.js +2 -2
  9. package/dist/aspect.cmd.js.map +1 -1
  10. package/dist/aspect.composition.d.ts +2 -2
  11. package/dist/aspect.main.runtime.d.ts +1 -1
  12. package/dist/aspect.main.runtime.js +1 -2
  13. package/dist/aspect.main.runtime.js.map +1 -1
  14. package/dist/aspect.ui.runtime.d.ts +1 -1
  15. package/dist/eslint/eslintrc.d.ts +2 -2
  16. package/dist/prettier/prettier.config.d.ts +3 -3
  17. package/dist/{preview-1703590665075.js → preview-1703647408454.js} +2 -2
  18. package/index.ts +3 -0
  19. package/package.json +35 -41
  20. package/tsconfig.json +16 -21
  21. package/types/asset.d.ts +15 -3
  22. package/artifacts/env-template/public/186.25debdaad2dd48b317e3.js +0 -255
  23. package/artifacts/env-template/public/244.23981efc3a92f81df93b.js +0 -34
  24. package/artifacts/env-template/public/29.5411dfd2b6110e3c5e4c.js +0 -709
  25. package/artifacts/env-template/public/assets-manifest.json +0 -56
  26. package/artifacts/env-template/public/compositions.44bcfbb7019049e79def.js +0 -8
  27. package/artifacts/env-template/public/compositions.html +0 -2
  28. package/artifacts/env-template/public/overview.2b0d4ebb5229aaf77a0d.js +0 -5
  29. package/artifacts/env-template/public/overview.html +0 -2
  30. package/artifacts/env-template/public/peers.6303cd076137e8087823.js +0 -1
  31. package/artifacts/env-template/public/preview-root.f0216e0fe57c1003a87b.js +0 -1
  32. package/artifacts/env-template/public/static/css/29.dd569806.css +0 -1
  33. package/artifacts/env-template/public/static/css/compositions.e163efe5.css +0 -1
  34. package/artifacts/env-template/public/static/css/preview-root.120a1d04.css +0 -1
  35. /package/{compositions-1703590665075.js → compositions-1703647408454.js} +0 -0
  36. /package/{overview-1703590665075.js → overview-1703647408454.js} +0 -0
@@ -0,0 +1,299 @@
1
+ import { Harmony } from '@teambit/harmony';
2
+ import { AspectLoaderAspect, AspectLoaderMain } from '@teambit/aspect-loader';
3
+ import { LoggerAspect, LoggerMain } from '@teambit/logger';
4
+ import mergeDeepLeft from 'ramda/src/mergeDeepLeft';
5
+ import { BuilderAspect, BuilderMain } from '@teambit/builder';
6
+ import { compact } from 'lodash';
7
+ import { EnvPolicyConfigObject } from '@teambit/dependency-resolver';
8
+ import { BitError } from '@teambit/bit-error';
9
+ import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';
10
+ import { EnvContext, Environment, EnvsAspect, EnvsMain, EnvTransformer } from '@teambit/envs';
11
+ import { ReactAspect, ReactMain } from '@teambit/react';
12
+ import { GeneratorAspect, GeneratorMain } from '@teambit/generator';
13
+ import { BabelAspect, BabelMain } from '@teambit/babel';
14
+ import { ComponentID } from '@teambit/component-id';
15
+ import { AspectList } from '@teambit/component';
16
+ import WorkerAspect, { WorkerMain } from '@teambit/worker';
17
+ import WorkspaceAspect, { ExtensionsOrigin, Workspace } from '@teambit/workspace';
18
+ import { CompilerAspect, CompilerMain } from '@teambit/compiler';
19
+ import { AspectAspect } from './aspect.aspect';
20
+ import { AspectEnv } from './aspect.env';
21
+ import { CoreExporterTask } from './core-exporter.task';
22
+ import { babelConfig } from './babel/babel-config';
23
+ import {
24
+ AspectCmd,
25
+ GetAspectCmd,
26
+ ListAspectCmd,
27
+ SetAspectCmd,
28
+ SetAspectOptions,
29
+ UnsetAspectCmd,
30
+ UpdateAspectCmd,
31
+ } from './aspect.cmd';
32
+ import { getTemplates } from './aspect.templates';
33
+
34
+ export type AspectSource = { aspectName: string; source: string; level: string };
35
+
36
+ const tsconfig = require('./typescript/tsconfig.json');
37
+
38
+ export class AspectMain {
39
+ constructor(readonly aspectEnv: AspectEnv, private envs: EnvsMain, private workspace: Workspace) {}
40
+
41
+ /**
42
+ * compose your own aspect environment.
43
+ */
44
+ compose(transformers: EnvTransformer[] = [], targetEnv: Environment = {}) {
45
+ return this.envs.compose(this.envs.merge(targetEnv, this.aspectEnv), transformers);
46
+ }
47
+
48
+ async listAspectsOfComponent(pattern?: string): Promise<{ [component: string]: AspectSource[] }> {
49
+ const getIds = async () => {
50
+ if (!pattern) return this.workspace.listIds();
51
+ return this.workspace.idsByPattern(pattern);
52
+ };
53
+ const componentIds = await getIds();
54
+ const results = {};
55
+ await Promise.all(
56
+ componentIds.map(async (id) => {
57
+ const aspectSources = await this.getAspectNamesForComponent(id);
58
+ results[id.toString()] = aspectSources;
59
+ })
60
+ );
61
+ return results;
62
+ }
63
+
64
+ get babelConfig() {
65
+ return babelConfig;
66
+ }
67
+
68
+ private async getAspectNamesForComponent(id: ComponentID): Promise<AspectSource[]> {
69
+ const componentFromScope = await this.workspace.scope.get(id);
70
+ const { beforeMerge } = await this.workspace.componentExtensions(id, componentFromScope);
71
+ const aspectSources: AspectSource[] = [];
72
+ beforeMerge.forEach((source) => {
73
+ source.extensions.forEach((ext) => {
74
+ const aspectName = ext.name || ext.extensionId?.toString() || '<no-name>';
75
+ const alreadySaved = aspectSources.find((_) => _.aspectName === aspectName);
76
+ if (alreadySaved) return;
77
+ aspectSources.push({ aspectName, source: source.origin, level: this.getLevelBySourceOrigin(source.origin) });
78
+ });
79
+ });
80
+ return aspectSources;
81
+ }
82
+
83
+ private getLevelBySourceOrigin(origin: ExtensionsOrigin) {
84
+ switch (origin) {
85
+ case 'BitmapFile':
86
+ case 'ComponentJsonFile':
87
+ case 'ModelSpecific':
88
+ return 'component';
89
+ default:
90
+ return 'workspace';
91
+ }
92
+ }
93
+
94
+ async setAspectsToComponents(
95
+ pattern: string,
96
+ aspectId: string,
97
+ config: Record<string, any> = {},
98
+ options: SetAspectOptions = {}
99
+ ): Promise<ComponentID[]> {
100
+ const componentIds = await this.workspace.idsByPattern(pattern);
101
+ await Promise.all(
102
+ componentIds.map(async (componentId) => {
103
+ await this.workspace.addSpecificComponentConfig(componentId, aspectId, config, {
104
+ shouldMergeWithExisting: options.merge,
105
+ });
106
+ })
107
+ );
108
+ await this.workspace.bitMap.write(`aspect-set (${aspectId})`);
109
+
110
+ return componentIds;
111
+ }
112
+
113
+ async unsetAspectsFromComponents(pattern: string, aspectIdStr: string): Promise<ComponentID[]> {
114
+ const componentIds = await this.workspace.idsByPattern(pattern);
115
+ const aspectId = await this.workspace.resolveComponentId(aspectIdStr);
116
+ const components = await this.workspace.getMany(componentIds);
117
+ const updatedCompIds: ComponentID[] = [];
118
+ await Promise.all(
119
+ components.map(async (component) => {
120
+ const existAspect = component.state.aspects.get(aspectId.toStringWithoutVersion());
121
+ if (!existAspect) return;
122
+ await this.workspace.removeSpecificComponentConfig(component.id, existAspect.id.toString(), true);
123
+ updatedCompIds.push(component.id);
124
+ })
125
+ );
126
+ await this.workspace.bitMap.write(`aspect-unset (${aspectId})`);
127
+ return updatedCompIds;
128
+ }
129
+
130
+ /**
131
+ * returns all aspects info of a component, include the config and the data.
132
+ */
133
+ async getAspectsOfComponent(id: string | ComponentID): Promise<AspectList> {
134
+ if (typeof id === 'string') {
135
+ id = await this.workspace.resolveComponentId(id);
136
+ }
137
+ const component = await this.workspace.get(id);
138
+ return component.state.aspects;
139
+ }
140
+
141
+ /**
142
+ * helps debugging why/how an aspect was set to a component
143
+ */
144
+ async getAspectsOfComponentForDebugging(id: string | ComponentID) {
145
+ if (typeof id === 'string') {
146
+ id = await this.workspace.resolveComponentId(id);
147
+ }
148
+ const componentFromScope = await this.workspace.scope.get(id);
149
+ const { extensions, beforeMerge } = await this.workspace.componentExtensions(id, componentFromScope);
150
+ const component = await this.workspace.get(id);
151
+ return {
152
+ aspects: component.state.aspects,
153
+ extensions,
154
+ beforeMerge,
155
+ };
156
+ }
157
+
158
+ async updateAspectsToComponents(
159
+ aspectId: string,
160
+ pattern?: string
161
+ ): Promise<{ updated: ComponentID[]; alreadyUpToDate: ComponentID[] }> {
162
+ let aspectCompId = await this.workspace.resolveComponentId(aspectId);
163
+ if (!aspectCompId.hasVersion()) {
164
+ try {
165
+ const fromRemote = await this.workspace.scope.getRemoteComponent(aspectCompId);
166
+ aspectCompId = aspectCompId.changeVersion(fromRemote.id.version);
167
+ } catch (err) {
168
+ throw new BitError(
169
+ `unable to find ${aspectId} in the remote. if this is a local aspect, please provide a version with your aspect (${aspectId}) to update to`
170
+ );
171
+ }
172
+ }
173
+ const allCompIds = pattern ? await this.workspace.idsByPattern(pattern) : await this.workspace.listIds();
174
+ const allComps = await this.workspace.getMany(allCompIds);
175
+ const alreadyUpToDate: ComponentID[] = [];
176
+ const updatedComponentIds = await Promise.all(
177
+ allComps.map(async (comp) => {
178
+ const aspect = comp.state.aspects.get(aspectCompId.toStringWithoutVersion());
179
+ if (!aspect) return undefined;
180
+ if (aspect.id.version === aspectCompId.version) {
181
+ // nothing to update
182
+ alreadyUpToDate.push(comp.id);
183
+ return undefined;
184
+ }
185
+ // don't mark with minus if not exist in .bitmap. it's not needed. when the component is loaded, the
186
+ // merge-operation of the aspects removes duplicate aspect-id with different versions.
187
+ await this.workspace.removeSpecificComponentConfig(comp.id, aspect.id.toString(), false);
188
+ await this.workspace.addSpecificComponentConfig(comp.id, aspectCompId.toString(), aspect.config);
189
+ return comp.id;
190
+ })
191
+ );
192
+ await this.workspace.bitMap.write(`aspect-update (${aspectCompId})`);
193
+ return { updated: compact(updatedComponentIds), alreadyUpToDate };
194
+ }
195
+
196
+ /**
197
+ * override the dependency configuration of the component environment.
198
+ */
199
+ overrideDependencies(dependencyPolicy: EnvPolicyConfigObject) {
200
+ return this.envs.override({
201
+ getDependencies: async () => {
202
+ const reactDeps = await this.aspectEnv.getDependencies();
203
+ return mergeDeepLeft(dependencyPolicy, reactDeps);
204
+ },
205
+ });
206
+ }
207
+
208
+ static runtime = MainRuntime;
209
+ static dependencies = [
210
+ ReactAspect,
211
+ EnvsAspect,
212
+ BuilderAspect,
213
+ AspectLoaderAspect,
214
+ CompilerAspect,
215
+ BabelAspect,
216
+ GeneratorAspect,
217
+ WorkspaceAspect,
218
+ CLIAspect,
219
+ LoggerAspect,
220
+ WorkerAspect,
221
+ ];
222
+
223
+ static async provider(
224
+ [react, envs, builder, aspectLoader, compiler, babel, generator, workspace, cli, loggerMain, workerMain]: [
225
+ ReactMain,
226
+ EnvsMain,
227
+ BuilderMain,
228
+ AspectLoaderMain,
229
+ CompilerMain,
230
+ BabelMain,
231
+ GeneratorMain,
232
+ Workspace,
233
+ CLIMain,
234
+ LoggerMain,
235
+ WorkerMain
236
+ ],
237
+ config,
238
+ slots,
239
+ harmony: Harmony
240
+ ) {
241
+ const logger = loggerMain.createLogger(AspectAspect.id);
242
+
243
+ const babelCompiler = babel.createCompiler({
244
+ babelTransformOptions: babelConfig,
245
+ distDir: 'dist',
246
+ distGlobPatterns: [`dist/**`, `!dist/**/*.d.ts`, `!dist/tsconfig.tsbuildinfo`],
247
+ });
248
+ const compilerOverride = envs.override({
249
+ getCompiler: () => {
250
+ return babelCompiler;
251
+ },
252
+ });
253
+
254
+ const transformer = (tsConfigMutator) => {
255
+ tsConfigMutator
256
+ .mergeTsConfig(tsconfig)
257
+ .setArtifactName('declaration')
258
+ .setDistGlobPatterns([`dist/**/*.d.ts`])
259
+ .setShouldCopyNonSupportedFiles(false);
260
+ return tsConfigMutator;
261
+ };
262
+ const tsCompiler = react.env.getCjsCompilerTask([transformer]);
263
+
264
+ const compilerTasksOverride = react.overrideCompilerTasks([
265
+ compiler.createTask('BabelCompiler', babelCompiler),
266
+ tsCompiler,
267
+ ]);
268
+
269
+ const aspectEnv = react.compose(
270
+ [compilerOverride, compilerTasksOverride],
271
+ new AspectEnv(react.reactEnv, aspectLoader, logger)
272
+ );
273
+
274
+ const coreExporterTask = new CoreExporterTask(aspectEnv, aspectLoader);
275
+ if (!__dirname.includes('@teambit/bit')) {
276
+ builder.registerBuildTasks([coreExporterTask]);
277
+ }
278
+
279
+ envs.registerEnv(aspectEnv);
280
+ if (generator) {
281
+ const envContext = new EnvContext(ComponentID.fromString(ReactAspect.id), loggerMain, workerMain, harmony);
282
+ generator.registerComponentTemplate(getTemplates(envContext));
283
+ }
284
+ const aspectMain = new AspectMain(aspectEnv as AspectEnv, envs, workspace);
285
+ const aspectCmd = new AspectCmd();
286
+ aspectCmd.commands = [
287
+ new ListAspectCmd(aspectMain),
288
+ new GetAspectCmd(aspectMain),
289
+ new SetAspectCmd(aspectMain),
290
+ new UnsetAspectCmd(aspectMain),
291
+ new UpdateAspectCmd(aspectMain),
292
+ ];
293
+ cli.register(aspectCmd);
294
+
295
+ return aspectMain;
296
+ }
297
+ }
298
+
299
+ AspectAspect.addRuntime(AspectMain);
@@ -0,0 +1,24 @@
1
+ import {
2
+ HarmonyEnvTemplate,
3
+ HarmonyPlatformTemplate,
4
+ PlatformAspectTemplate,
5
+ HarmonyRuntimeTemplate,
6
+ AspectTemplate,
7
+ } from '@bitdev/harmony.generators.harmony-templates';
8
+ import { EnvContext } from '@teambit/envs';
9
+ import { ComponentTemplate, TemplateList } from '@teambit/generator';
10
+ import { aspectTemplate } from './templates/aspect';
11
+
12
+ const templateListHandler = TemplateList.from([
13
+ HarmonyPlatformTemplate.from({ env: 'bitdev.harmony/harmony-env' }),
14
+ PlatformAspectTemplate.from({ env: 'bitdev.harmony/harmony-env' }),
15
+ HarmonyRuntimeTemplate.from({ env: 'bitdev.harmony/harmony-env' }),
16
+ AspectTemplate.from({ env: 'bitdev.harmony/harmony-env' }),
17
+ HarmonyEnvTemplate.from(),
18
+ ]);
19
+
20
+ export function getTemplates(envContext: EnvContext): ComponentTemplate[] {
21
+ const templateList = templateListHandler(envContext);
22
+ const newTemplates = templateList.compute();
23
+ return [...newTemplates, aspectTemplate];
24
+ }
@@ -0,0 +1,82 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { BuildContext, BuiltTaskResult, BuildTask, TaskLocation } from '@teambit/builder';
4
+ import { AspectLoaderMain, getCoreAspectName, getCoreAspectPackageName } from '@teambit/aspect-loader';
5
+ import { Capsule } from '@teambit/isolator';
6
+ import { Environment } from '@teambit/envs';
7
+
8
+ export class CoreExporterTask implements BuildTask {
9
+ constructor(private env: Environment, private aspectLoader: AspectLoaderMain) {}
10
+
11
+ location: TaskLocation = 'start';
12
+ readonly aspectId = 'teambit.harmony/aspect';
13
+ readonly name = 'CoreExporter';
14
+ readonly description = 'export all core aspects via the main aspects';
15
+
16
+ async execute(context: BuildContext): Promise<BuiltTaskResult> {
17
+ const mainAspect = this.aspectLoader.mainAspect;
18
+ const capsules = context.capsuleNetwork.seedersCapsules;
19
+ const mainAspectCapsule = capsules.find((capsule) => capsule.component.id.name === mainAspect.name);
20
+ if (mainAspectCapsule) {
21
+ const distDir = this.env.getCompiler().distDir;
22
+ await this.addFolderForAllCoreAspects(mainAspectCapsule, distDir);
23
+ await this.addFolderForHarmony(mainAspectCapsule, distDir);
24
+ await this.addFolderForLegacy(mainAspectCapsule, distDir);
25
+ }
26
+
27
+ return {
28
+ componentsResults: [],
29
+ artifacts: [],
30
+ };
31
+ }
32
+
33
+ private addFolderForAllCoreAspects(mainAspectCapsule: Capsule, distDir: string) {
34
+ const coreAspectsIds = this.aspectLoader.getCoreAspectIds();
35
+ const coreAspectsNamesPackages = coreAspectsIds.map((id) => {
36
+ return {
37
+ name: getCoreAspectName(id),
38
+ packageName: getCoreAspectPackageName(id),
39
+ };
40
+ });
41
+ const capsuleDir = mainAspectCapsule.path;
42
+ const createBarrelFilesP = coreAspectsNamesPackages.map(async ({ name, packageName }) => {
43
+ const newDirPath = path.join(capsuleDir, distDir, name);
44
+ await fs.ensureDir(newDirPath);
45
+ const barrelContent = generateBarrelFile(packageName);
46
+ await fs.writeFile(path.join(newDirPath, 'index.js'), barrelContent);
47
+ });
48
+ return Promise.all(createBarrelFilesP);
49
+ }
50
+
51
+ private async addFolderForNonAspectCorePackages(
52
+ mainAspectCapsule: Capsule,
53
+ distDir: string,
54
+ name: string,
55
+ packageName = `@teambit/${name}`
56
+ ) {
57
+ const capsuleDir = mainAspectCapsule.path;
58
+ const newDirPath = path.join(capsuleDir, distDir, name);
59
+ await fs.ensureDir(newDirPath);
60
+ const barrelContent = generateBarrelFile(packageName);
61
+ await fs.writeFile(path.join(newDirPath, 'index.js'), barrelContent);
62
+ }
63
+
64
+ private async addFolderForHarmony(mainAspectCapsule: Capsule, distDir: string) {
65
+ const name = 'harmony';
66
+ await this.addFolderForNonAspectCorePackages(mainAspectCapsule, distDir, name);
67
+ }
68
+
69
+ private async addFolderForLegacy(mainAspectCapsule: Capsule, distDir: string) {
70
+ const name = 'legacy';
71
+ await this.addFolderForNonAspectCorePackages(mainAspectCapsule, distDir, name);
72
+ }
73
+ }
74
+
75
+ function generateBarrelFile(packageName) {
76
+ return `
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ // const aspect = require("${packageName}");
79
+ // module.exports = aspect;
80
+ module.exports.path = require.resolve("${packageName}");
81
+ `;
82
+ }
@@ -15,7 +15,7 @@ export declare class ListAspectCmd implements Command {
15
15
  debug: boolean;
16
16
  }): Promise<string>;
17
17
  }
18
- export declare type SetAspectOptions = {
18
+ export type SetAspectOptions = {
19
19
  merge?: boolean;
20
20
  };
21
21
  export declare class SetAspectCmd implements Command {
@@ -43,7 +43,7 @@ export declare class UpdateAspectCmd implements Command {
43
43
  cmd: string;
44
44
  description: string;
45
45
  }[];
46
- options: never[];
46
+ options: any[];
47
47
  group: string;
48
48
  constructor(aspect: AspectMain);
49
49
  report([aspectId, pattern]: [string, string]): Promise<string>;
@@ -56,7 +56,7 @@ export declare class UnsetAspectCmd implements Command {
56
56
  name: string;
57
57
  description: string;
58
58
  }[];
59
- options: never[];
59
+ options: any[];
60
60
  group: string;
61
61
  constructor(aspect: AspectMain);
62
62
  report([pattern, aspectId]: [string, string]): Promise<string>;
@@ -77,13 +77,13 @@ export declare class GetAspectCmd implements Command {
77
77
  }): Promise<string>;
78
78
  json([componentName]: [string], { debug }: {
79
79
  debug: boolean;
80
- }): Promise<Record<string, any>>;
80
+ }): Promise<{}>;
81
81
  }
82
82
  export declare class AspectCmd implements Command {
83
83
  name: string;
84
84
  alias: string;
85
85
  description: string;
86
- options: never[];
86
+ options: any[];
87
87
  group: string;
88
88
  commands: Command[];
89
89
  report([unrecognizedSubcommand]: [string]): Promise<string>;
@@ -166,7 +166,7 @@ class GetAspectCmd {
166
166
  config,
167
167
  extensionId
168
168
  } = e.toComponentObject();
169
- return `${_chalk().default.bold('name:')} ${name || (extensionId === null || extensionId === void 0 ? void 0 : extensionId.toString())}
169
+ return `${_chalk().default.bold('name:')} ${name || extensionId?.toString()}
170
170
  ${_chalk().default.bold('config:')} ${JSON.stringify(config, undefined, 2)}
171
171
  ${_chalk().default.bold('data:')} ${JSON.stringify(data, undefined, 2)}
172
172
  `;
@@ -207,7 +207,7 @@ ${_chalk().default.bold('data:')} ${JSON.stringify(data, undefined, 2)}
207
207
  config,
208
208
  extensionId
209
209
  } = current.toComponentObject();
210
- const aspectName = name || (extensionId === null || extensionId === void 0 ? void 0 : extensionId.toString()) || '<no-name>';
210
+ const aspectName = name || extensionId?.toString() || '<no-name>';
211
211
  acc[aspectName] = {
212
212
  name: aspectName,
213
213
  config,
@@ -1 +1 @@
1
- {"version":3,"names":["_cliTable","data","require","_chalk","_interopRequireDefault","_constants","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ListAspectCmd","constructor","aspect","name","description","COMPONENT_PATTERN_HELP","report","debug","listAspectsResults","listAspectsOfComponent","rows","keys","map","componentId","longestAspectName","Math","max","_","aspectName","length","aspects","aspectSource","origin","source","padEnd","level","join","table","CLITable","render","exports","SetAspectCmd","pattern","aspectId","config","options","configParsed","JSON","parse","results","setAspectsToComponents","chalk","yellow","bold","green","UpdateAspectCmd","cmd","updated","alreadyUpToDate","updateAspectsToComponents","UnsetAspectCmd","unsetAspectsFromComponents","GetAspectCmd","componentName","extensionsDetailsToString","extensions","extensionId","toComponentObject","toString","stringify","undefined","mergedExtensions","beforeMerge","getAspectsOfComponentForDebugging","beforeMergeOutput","extraData","title","details","moreData","afterMergeTitle","afterMergeOutput","afterFinalMergeTitle","afterFinalMergeOutput","toLegacy","getAspectsOfComponent","extensionDataList","json","extensionsDetailsToObject","reduce","acc","current","jsonObj","forEach","AfterMerge","FinalAfterMergeIncludeLoad","AspectCmd","unrecognizedSubcommand","red"],"sources":["aspect.cmd.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { CLITable } from '@teambit/cli-table';\nimport chalk from 'chalk';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { AspectMain } from './aspect.main.runtime';\n\nexport class ListAspectCmd implements Command {\n name = 'list [pattern]';\n description = 'list all aspects configured on component(s)';\n arguments = [\n {\n name: 'pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n options = [['d', 'debug', 'show the origins where the aspects were taken from']] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([name]: [string], { debug }: { debug: boolean }) {\n const listAspectsResults = await this.aspect.listAspectsOfComponent(name);\n const rows = Object.keys(listAspectsResults).map((componentId) => {\n const longestAspectName = Math.max(...listAspectsResults[componentId].map((_) => _.aspectName.length));\n const aspects = listAspectsResults[componentId]\n .map((aspectSource) => {\n const origin = debug ? ` (origin: ${aspectSource.source})` : '';\n const aspectName = aspectSource.aspectName.padEnd(longestAspectName);\n return `${aspectName} (level: ${aspectSource.level})${origin}`;\n })\n .join('\\n');\n\n return [componentId, aspects];\n });\n const table = new CLITable([], rows);\n return table.render();\n }\n}\n\nexport type SetAspectOptions = { merge?: boolean };\n\nexport class SetAspectCmd implements Command {\n name = 'set <pattern> <aspect-id> [config]';\n description = 'set components with an aspect to extend their development tools, metadata and (possibly) artifacts';\n arguments = [\n {\n name: 'pattern',\n description: `the components to extend. ${COMPONENT_PATTERN_HELP}`,\n },\n {\n name: 'aspect-id',\n description: \"the aspect's component id\",\n },\n {\n name: 'config',\n description: `the aspect config. enter the config as a stringified JSON (e.g. '{\"foo\":\"bar\"}' ). when no config is provided, an aspect is set with an empty config ({}).`,\n },\n ];\n options = [\n ['m', 'merge', 'merge with an existing config if exits. (by default, it replaces overlapping existing configs)'],\n ] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([pattern, aspectId, config]: [string, string, string], options: SetAspectOptions) {\n const configParsed = config ? JSON.parse(config) : {};\n const results = await this.aspect.setAspectsToComponents(pattern, aspectId, configParsed, options);\n if (!results.length)\n return chalk.yellow(`unable to find any matching components for ${chalk.bold(pattern)} pattern`);\n return chalk.green(`the following component(s) have been successfully updated:\\n${results.join('\\n')}`);\n }\n}\n\nexport class UpdateAspectCmd implements Command {\n name = 'update <aspect-id> [pattern]';\n description = 'update a version of an aspect for all or specified components';\n arguments = [\n {\n name: 'aspect-id',\n description:\n \"the aspect's component id. optionally, add a version (id@version), otherwise will use the latest version from the remote\",\n },\n {\n name: 'pattern',\n description: `the components to update (defaults to all components). ${COMPONENT_PATTERN_HELP}`,\n },\n ];\n examples = [\n {\n cmd: \"bit aspect update scope.org/aspect '**/ui/**'\",\n description: 'update all components with the \"ui\" namespace that use scope.org/aspect, to use its latest version',\n },\n {\n cmd: 'bit aspect update scope.org/aspect@2.0.0',\n description:\n 'update version of scope.org/aspect to version 2.0.0 for all components configured with that aspect.',\n },\n ];\n options = [];\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([aspectId, pattern]: [string, string]) {\n const { updated, alreadyUpToDate } = await this.aspect.updateAspectsToComponents(aspectId, pattern);\n if (updated.length) {\n return chalk.green(`the following component(s) have been successfully updated:\\n${updated.join('\\n')}`);\n }\n if (alreadyUpToDate.length) {\n return chalk.green(\n `all ${alreadyUpToDate.length} component(s) that use this aspect are already up to date. nothing to update`\n );\n }\n return chalk.yellow(`unable to find any components in this workspace that use ${chalk.bold(aspectId)}`);\n }\n}\n\nexport class UnsetAspectCmd implements Command {\n name = 'unset <pattern> <aspect-id>';\n description = `unset an aspect from component(s).`;\n arguments = [\n {\n name: 'pattern',\n description: `the components to target. ${COMPONENT_PATTERN_HELP}`,\n },\n {\n name: 'aspect-id',\n description: \"the aspect's component id\",\n },\n ];\n options = [];\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([pattern, aspectId]: [string, string]) {\n const results = await this.aspect.unsetAspectsFromComponents(pattern, aspectId);\n if (!results.length)\n return chalk.yellow(`unable to find any matching components for ${chalk.bold(pattern)} pattern`);\n return chalk.green(`the following component(s) have been successfully updated:\\n${results.join('\\n')}`);\n }\n}\n\nexport class GetAspectCmd implements Command {\n name = 'get <component-name>';\n description = 'list the aspects set on a component, as well as their configs and data';\n arguments = [\n {\n name: 'component-name',\n description: 'the component name or component id to fetch aspects for',\n },\n ];\n options = [\n ['d', 'debug', 'show the origins where the aspects were taken from'],\n ['j', 'json', 'format as json'],\n ] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([componentName]: [string], { debug }: { debug: boolean }) {\n const extensionsDetailsToString = (extensions: ExtensionDataList) =>\n extensions\n .map((e) => {\n const { name, data, config, extensionId } = e.toComponentObject();\n return `${chalk.bold('name:')} ${name || extensionId?.toString()}\n${chalk.bold('config:')} ${JSON.stringify(config, undefined, 2)}\n${chalk.bold('data:')} ${JSON.stringify(data, undefined, 2)}\n`;\n })\n .join('\\n');\n\n if (debug) {\n const {\n aspects,\n extensions: mergedExtensions,\n beforeMerge,\n } = await this.aspect.getAspectsOfComponentForDebugging(componentName);\n const beforeMergeOutput = beforeMerge\n .map(({ origin, extensions, extraData }) => {\n const title = chalk.green.bold(`Origin: ${origin}`);\n const details = extensionsDetailsToString(extensions);\n const moreData = extraData ? `\\n${chalk.bold('Extra Data:')} ${JSON.stringify(extraData, undefined, 2)}` : '';\n return `${title}\\n${details}${moreData}`;\n })\n .join('\\n\\n');\n\n const afterMergeTitle = chalk.green.bold('After merging the origins above');\n const afterMergeOutput = `${afterMergeTitle}\\n${extensionsDetailsToString(mergedExtensions)}`;\n\n const afterFinalMergeTitle = chalk.green.bold('Final - After merging the origins above and the loaded data');\n const afterFinalMergeOutput = `${afterFinalMergeTitle}\\n${extensionsDetailsToString(aspects.toLegacy())}`;\n\n return `${beforeMergeOutput}\\n\\n${afterMergeOutput}\\n\\n\\n${afterFinalMergeOutput}`;\n }\n const aspects = await this.aspect.getAspectsOfComponent(componentName);\n const extensionDataList = aspects.toLegacy();\n return extensionsDetailsToString(extensionDataList);\n }\n\n async json([componentName]: [string], { debug }: { debug: boolean }) {\n const extensionsDetailsToObject = (extensions: ExtensionDataList) =>\n extensions.reduce((acc, current) => {\n const { name, data, config, extensionId } = current.toComponentObject();\n const aspectName = name || extensionId?.toString() || '<no-name>';\n acc[aspectName] = {\n name: aspectName,\n config,\n data,\n };\n return acc;\n }, {});\n\n if (debug) {\n const {\n aspects,\n extensions: mergedExtensions,\n beforeMerge,\n } = await this.aspect.getAspectsOfComponentForDebugging(componentName);\n const jsonObj: Record<string, any> = {};\n beforeMerge.forEach(({ origin, extensions, extraData }) => {\n jsonObj[origin] = {\n extensions: extensionsDetailsToObject(extensions),\n extraData,\n };\n });\n\n jsonObj.AfterMerge = { extensions: extensionsDetailsToObject(mergedExtensions) };\n jsonObj.FinalAfterMergeIncludeLoad = { extensions: extensionsDetailsToObject(aspects.toLegacy()) };\n return jsonObj;\n }\n\n const aspects = await this.aspect.getAspectsOfComponent(componentName);\n\n return extensionsDetailsToObject(aspects.toLegacy());\n }\n}\n\nexport class AspectCmd implements Command {\n name = 'aspect <sub-command>';\n alias = '';\n description = 'manage aspects';\n options = [];\n group = 'development';\n commands: Command[] = [];\n\n async report([unrecognizedSubcommand]: [string]) {\n return chalk.red(\n `\"${unrecognizedSubcommand}\" is not a subcommand of \"aspect\", please run \"bit aspect --help\" to list the subcommands`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_cliTable","data","require","_chalk","_interopRequireDefault","_constants","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ListAspectCmd","constructor","aspect","name","description","COMPONENT_PATTERN_HELP","report","debug","listAspectsResults","listAspectsOfComponent","rows","keys","map","componentId","longestAspectName","Math","max","_","aspectName","length","aspects","aspectSource","origin","source","padEnd","level","join","table","CLITable","render","exports","SetAspectCmd","pattern","aspectId","config","options","configParsed","JSON","parse","results","setAspectsToComponents","chalk","yellow","bold","green","UpdateAspectCmd","cmd","updated","alreadyUpToDate","updateAspectsToComponents","UnsetAspectCmd","unsetAspectsFromComponents","GetAspectCmd","componentName","extensionsDetailsToString","extensions","extensionId","toComponentObject","toString","stringify","undefined","mergedExtensions","beforeMerge","getAspectsOfComponentForDebugging","beforeMergeOutput","extraData","title","details","moreData","afterMergeTitle","afterMergeOutput","afterFinalMergeTitle","afterFinalMergeOutput","toLegacy","getAspectsOfComponent","extensionDataList","json","extensionsDetailsToObject","reduce","acc","current","jsonObj","forEach","AfterMerge","FinalAfterMergeIncludeLoad","AspectCmd","unrecognizedSubcommand","red"],"sources":["aspect.cmd.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { CLITable } from '@teambit/cli-table';\nimport chalk from 'chalk';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy/dist/constants';\nimport { AspectMain } from './aspect.main.runtime';\n\nexport class ListAspectCmd implements Command {\n name = 'list [pattern]';\n description = 'list all aspects configured on component(s)';\n arguments = [\n {\n name: 'pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n options = [['d', 'debug', 'show the origins where the aspects were taken from']] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([name]: [string], { debug }: { debug: boolean }) {\n const listAspectsResults = await this.aspect.listAspectsOfComponent(name);\n const rows = Object.keys(listAspectsResults).map((componentId) => {\n const longestAspectName = Math.max(...listAspectsResults[componentId].map((_) => _.aspectName.length));\n const aspects = listAspectsResults[componentId]\n .map((aspectSource) => {\n const origin = debug ? ` (origin: ${aspectSource.source})` : '';\n const aspectName = aspectSource.aspectName.padEnd(longestAspectName);\n return `${aspectName} (level: ${aspectSource.level})${origin}`;\n })\n .join('\\n');\n\n return [componentId, aspects];\n });\n const table = new CLITable([], rows);\n return table.render();\n }\n}\n\nexport type SetAspectOptions = { merge?: boolean };\n\nexport class SetAspectCmd implements Command {\n name = 'set <pattern> <aspect-id> [config]';\n description = 'set components with an aspect to extend their development tools, metadata and (possibly) artifacts';\n arguments = [\n {\n name: 'pattern',\n description: `the components to extend. ${COMPONENT_PATTERN_HELP}`,\n },\n {\n name: 'aspect-id',\n description: \"the aspect's component id\",\n },\n {\n name: 'config',\n description: `the aspect config. enter the config as a stringified JSON (e.g. '{\"foo\":\"bar\"}' ). when no config is provided, an aspect is set with an empty config ({}).`,\n },\n ];\n options = [\n ['m', 'merge', 'merge with an existing config if exits. (by default, it replaces overlapping existing configs)'],\n ] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([pattern, aspectId, config]: [string, string, string], options: SetAspectOptions) {\n const configParsed = config ? JSON.parse(config) : {};\n const results = await this.aspect.setAspectsToComponents(pattern, aspectId, configParsed, options);\n if (!results.length)\n return chalk.yellow(`unable to find any matching components for ${chalk.bold(pattern)} pattern`);\n return chalk.green(`the following component(s) have been successfully updated:\\n${results.join('\\n')}`);\n }\n}\n\nexport class UpdateAspectCmd implements Command {\n name = 'update <aspect-id> [pattern]';\n description = 'update a version of an aspect for all or specified components';\n arguments = [\n {\n name: 'aspect-id',\n description:\n \"the aspect's component id. optionally, add a version (id@version), otherwise will use the latest version from the remote\",\n },\n {\n name: 'pattern',\n description: `the components to update (defaults to all components). ${COMPONENT_PATTERN_HELP}`,\n },\n ];\n examples = [\n {\n cmd: \"bit aspect update scope.org/aspect '**/ui/**'\",\n description: 'update all components with the \"ui\" namespace that use scope.org/aspect, to use its latest version',\n },\n {\n cmd: 'bit aspect update scope.org/aspect@2.0.0',\n description:\n 'update version of scope.org/aspect to version 2.0.0 for all components configured with that aspect.',\n },\n ];\n options = [];\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([aspectId, pattern]: [string, string]) {\n const { updated, alreadyUpToDate } = await this.aspect.updateAspectsToComponents(aspectId, pattern);\n if (updated.length) {\n return chalk.green(`the following component(s) have been successfully updated:\\n${updated.join('\\n')}`);\n }\n if (alreadyUpToDate.length) {\n return chalk.green(\n `all ${alreadyUpToDate.length} component(s) that use this aspect are already up to date. nothing to update`\n );\n }\n return chalk.yellow(`unable to find any components in this workspace that use ${chalk.bold(aspectId)}`);\n }\n}\n\nexport class UnsetAspectCmd implements Command {\n name = 'unset <pattern> <aspect-id>';\n description = `unset an aspect from component(s).`;\n arguments = [\n {\n name: 'pattern',\n description: `the components to target. ${COMPONENT_PATTERN_HELP}`,\n },\n {\n name: 'aspect-id',\n description: \"the aspect's component id\",\n },\n ];\n options = [];\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([pattern, aspectId]: [string, string]) {\n const results = await this.aspect.unsetAspectsFromComponents(pattern, aspectId);\n if (!results.length)\n return chalk.yellow(`unable to find any matching components for ${chalk.bold(pattern)} pattern`);\n return chalk.green(`the following component(s) have been successfully updated:\\n${results.join('\\n')}`);\n }\n}\n\nexport class GetAspectCmd implements Command {\n name = 'get <component-name>';\n description = 'list the aspects set on a component, as well as their configs and data';\n arguments = [\n {\n name: 'component-name',\n description: 'the component name or component id to fetch aspects for',\n },\n ];\n options = [\n ['d', 'debug', 'show the origins where the aspects were taken from'],\n ['j', 'json', 'format as json'],\n ] as CommandOptions;\n group = 'development';\n\n constructor(private aspect: AspectMain) {}\n\n async report([componentName]: [string], { debug }: { debug: boolean }) {\n const extensionsDetailsToString = (extensions: ExtensionDataList) =>\n extensions\n .map((e) => {\n const { name, data, config, extensionId } = e.toComponentObject();\n return `${chalk.bold('name:')} ${name || extensionId?.toString()}\n${chalk.bold('config:')} ${JSON.stringify(config, undefined, 2)}\n${chalk.bold('data:')} ${JSON.stringify(data, undefined, 2)}\n`;\n })\n .join('\\n');\n\n if (debug) {\n const {\n aspects,\n extensions: mergedExtensions,\n beforeMerge,\n } = await this.aspect.getAspectsOfComponentForDebugging(componentName);\n const beforeMergeOutput = beforeMerge\n .map(({ origin, extensions, extraData }) => {\n const title = chalk.green.bold(`Origin: ${origin}`);\n const details = extensionsDetailsToString(extensions);\n const moreData = extraData ? `\\n${chalk.bold('Extra Data:')} ${JSON.stringify(extraData, undefined, 2)}` : '';\n return `${title}\\n${details}${moreData}`;\n })\n .join('\\n\\n');\n\n const afterMergeTitle = chalk.green.bold('After merging the origins above');\n const afterMergeOutput = `${afterMergeTitle}\\n${extensionsDetailsToString(mergedExtensions)}`;\n\n const afterFinalMergeTitle = chalk.green.bold('Final - After merging the origins above and the loaded data');\n const afterFinalMergeOutput = `${afterFinalMergeTitle}\\n${extensionsDetailsToString(aspects.toLegacy())}`;\n\n return `${beforeMergeOutput}\\n\\n${afterMergeOutput}\\n\\n\\n${afterFinalMergeOutput}`;\n }\n const aspects = await this.aspect.getAspectsOfComponent(componentName);\n const extensionDataList = aspects.toLegacy();\n return extensionsDetailsToString(extensionDataList);\n }\n\n async json([componentName]: [string], { debug }: { debug: boolean }) {\n const extensionsDetailsToObject = (extensions: ExtensionDataList) =>\n extensions.reduce((acc, current) => {\n const { name, data, config, extensionId } = current.toComponentObject();\n const aspectName = name || extensionId?.toString() || '<no-name>';\n acc[aspectName] = {\n name: aspectName,\n config,\n data,\n };\n return acc;\n }, {});\n\n if (debug) {\n const {\n aspects,\n extensions: mergedExtensions,\n beforeMerge,\n } = await this.aspect.getAspectsOfComponentForDebugging(componentName);\n const jsonObj: Record<string, any> = {};\n beforeMerge.forEach(({ origin, extensions, extraData }) => {\n jsonObj[origin] = {\n extensions: extensionsDetailsToObject(extensions),\n extraData,\n };\n });\n\n jsonObj.AfterMerge = { extensions: extensionsDetailsToObject(mergedExtensions) };\n jsonObj.FinalAfterMergeIncludeLoad = { extensions: extensionsDetailsToObject(aspects.toLegacy()) };\n return jsonObj;\n }\n\n const aspects = await this.aspect.getAspectsOfComponent(componentName);\n\n return extensionsDetailsToObject(aspects.toLegacy());\n }\n}\n\nexport class AspectCmd implements Command {\n name = 'aspect <sub-command>';\n alias = '';\n description = 'manage aspects';\n options = [];\n group = 'development';\n commands: Command[] = [];\n\n async report([unrecognizedSubcommand]: [string]) {\n return chalk.red(\n `\"${unrecognizedSubcommand}\" is not a subcommand of \"aspect\", please run \"bit aspect --help\" to list the subcommands`\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare const Logo: () => React.JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const Logo: () => JSX.Element;
@@ -15,7 +15,7 @@ import { ExtensionsOrigin, Workspace } from '@teambit/workspace';
15
15
  import { CompilerMain } from '@teambit/compiler';
16
16
  import { AspectEnv } from './aspect.env';
17
17
  import { SetAspectOptions } from './aspect.cmd';
18
- export declare type AspectSource = {
18
+ export type AspectSource = {
19
19
  aspectName: string;
20
20
  source: string;
21
21
  level: string;
@@ -193,8 +193,7 @@ class AspectMain {
193
193
  const aspectSources = [];
194
194
  beforeMerge.forEach(source => {
195
195
  source.extensions.forEach(ext => {
196
- var _ext$extensionId;
197
- const aspectName = ext.name || ((_ext$extensionId = ext.extensionId) === null || _ext$extensionId === void 0 ? void 0 : _ext$extensionId.toString()) || '<no-name>';
196
+ const aspectName = ext.name || ext.extensionId?.toString() || '<no-name>';
198
197
  const alreadySaved = aspectSources.find(_ => _.aspectName === aspectName);
199
198
  if (alreadySaved) return;
200
199
  aspectSources.push({