@teambit/dev-files 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.
@@ -0,0 +1,5 @@
1
+ import { Aspect } from '@teambit/harmony';
2
+
3
+ export const DevFilesAspect = Aspect.create({
4
+ id: 'teambit.component/dev-files',
5
+ });
@@ -0,0 +1,34 @@
1
+ import { ShowFragment, Component } from '@teambit/component';
2
+ import { DevFilesMain } from './dev-files.main.runtime';
3
+
4
+ export class DevFilesFragment implements ShowFragment {
5
+ constructor(private devFiles: DevFilesMain) {}
6
+
7
+ title = 'dev files';
8
+
9
+ stringifyDevFiles(component: Component) {
10
+ const devFiles = this.devFiles.getDevFiles(component);
11
+ const tuples = devFiles.toTupleArray();
12
+ return tuples
13
+ .map(([file, aspectId]) => {
14
+ return `${file} (${aspectId})`;
15
+ })
16
+ .join('\n');
17
+ }
18
+
19
+ async renderRow(component: Component) {
20
+ return {
21
+ title: this.title,
22
+ content: this.stringifyDevFiles(component),
23
+ };
24
+ }
25
+
26
+ async json(component: Component) {
27
+ return {
28
+ title: this.title,
29
+ json: this.devFiles.getDevFiles(component).toObject(),
30
+ };
31
+ }
32
+
33
+ weight = 7;
34
+ }
@@ -0,0 +1,22 @@
1
+ import { Component } from '@teambit/component';
2
+ import { Schema } from '@teambit/graphql';
3
+ import gql from 'graphql-tag';
4
+
5
+ import { DevFilesMain } from './dev-files.main.runtime';
6
+
7
+ export function devFilesSchema(devFilesMain: DevFilesMain): Schema {
8
+ return {
9
+ typeDefs: gql`
10
+ extend type Component {
11
+ devFiles: [String!]
12
+ }
13
+ `,
14
+ resolvers: {
15
+ Component: {
16
+ devFiles: async (component: Component) => {
17
+ return devFilesMain.getDevFiles(component).list();
18
+ },
19
+ },
20
+ },
21
+ };
22
+ }
@@ -0,0 +1,254 @@
1
+ import { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';
2
+ import { MainRuntime } from '@teambit/cli';
3
+ import { parse } from 'comment-json';
4
+ import ScopeAspect, { ScopeMain } from '@teambit/scope';
5
+ import { flatten, isFunction } from 'lodash';
6
+ import { SlotRegistry, Slot } from '@teambit/harmony';
7
+ import WorkspaceAspect, { Workspace } from '@teambit/workspace';
8
+ import { EnvsAspect, EnvsMain } from '@teambit/envs';
9
+ import LegacyComponent from '@teambit/legacy/dist/consumer/component';
10
+ import { Component, ComponentMain, ComponentAspect } from '@teambit/component';
11
+ import { GraphqlAspect, GraphqlMain } from '@teambit/graphql';
12
+ import { DevFilesAspect } from './dev-files.aspect';
13
+ import { DevFiles } from './dev-files';
14
+ import { DevFilesFragment } from './dev-files.fragment';
15
+ import { devFilesSchema } from './dev-files.graphql';
16
+
17
+ type DevPatternDescriptor = {
18
+ /**
19
+ * Name of the dev pattern
20
+ */
21
+ name: string;
22
+
23
+ /**
24
+ * Glob pattern to select dev files
25
+ */
26
+ pattern: string[];
27
+ };
28
+
29
+ type DevPattern = string[] | DevPatternDescriptor;
30
+
31
+ /**
32
+ * dev pattern is a list of strings or a function that returns a list of strings. an example to a pattern can be "[*.spec.ts]"
33
+ */
34
+ export type DevPatterns = ((component: Component) => DevPattern) | DevPattern;
35
+
36
+ /**
37
+ * slot for dev file patterns.
38
+ */
39
+ export type DevPatternSlot = SlotRegistry<DevPatterns>;
40
+
41
+ export type DevFilesConfig = {
42
+ patterns: string[];
43
+ };
44
+
45
+ export class DevFilesMain {
46
+ constructor(
47
+ private envs: EnvsMain,
48
+
49
+ private workspace: Workspace,
50
+
51
+ private devPatternSlot: DevPatternSlot,
52
+
53
+ /**
54
+ * configuration loaded into the dev files aspect.
55
+ */
56
+ readonly config: DevFilesConfig
57
+ ) {}
58
+
59
+ /**
60
+ * compute all dev patterns on a component.
61
+ * computing of dev patterns is a merge of the configuration, the env (env.getDevPatterns(component)) and
62
+ * the registering aspects (through registerDevPattern()).
63
+ */
64
+ async computeDevPatterns(component: Component) {
65
+ const entry = component.state.aspects.get(DevFilesAspect.id);
66
+ const configuredPatterns = entry?.config.devFilePatterns || [];
67
+
68
+ const fromSlot = await this.computeDevPatternsFromSlot(component);
69
+ const fromEnv = await this.computeDevPatternsFromEnv(component, fromSlot.names);
70
+
71
+ const res = Object.assign(
72
+ {
73
+ config: configuredPatterns,
74
+ },
75
+ fromSlot.patterns,
76
+ fromEnv
77
+ );
78
+ return res;
79
+ }
80
+
81
+ private async computeDevPatternsFromSlot(
82
+ component: Component
83
+ ): Promise<{ patterns: { [id: string]: string[] }; names: { [name: string]: string } }> {
84
+ const patternSlot = this.devPatternSlot.toArray();
85
+ const getPatterns = (devPatterns: DevPatterns) => {
86
+ if (isFunction(devPatterns)) {
87
+ return devPatterns(component);
88
+ }
89
+ return devPatterns;
90
+ };
91
+ const fromSlot = patternSlot.reduce(
92
+ (acc, current) => {
93
+ const [aspectId, patterns] = current;
94
+ // if (component.state.aspects.get(aspectId)) acc[aspectId] = acc[aspectId].concat(patterns);
95
+ const patternsOrDescriptor = getPatterns(patterns);
96
+ const patternsArray = Array.isArray(patternsOrDescriptor) ? patternsOrDescriptor : patternsOrDescriptor.pattern;
97
+ const name = Array.isArray(patternsOrDescriptor) ? undefined : patternsOrDescriptor.name;
98
+ if (!acc.patterns[aspectId]) acc.patterns[aspectId] = [];
99
+ acc.patterns[aspectId] = acc.patterns[aspectId].concat(patternsArray);
100
+ if (name) {
101
+ acc.names[name] = aspectId;
102
+ }
103
+ return acc;
104
+ },
105
+ { patterns: {}, names: {} }
106
+ );
107
+ return fromSlot;
108
+ }
109
+
110
+ private async computeDevPatternsFromEnv(
111
+ component: Component,
112
+ patternNames: { [name: string]: string }
113
+ ): Promise<{ [id: string]: string[] }> {
114
+ const envId = this.envs.getEnvId(component);
115
+ const fromEnvJsonFile = await this.computeDevPatternsFromEnvJsoncFile(envId);
116
+ let fromEnvFunc;
117
+ if (!fromEnvJsonFile) {
118
+ const envDef = await this.envs.calculateEnv(component, { skipWarnings: !!this.workspace?.inInstallContext });
119
+ fromEnvFunc = envDef.env?.getDevPatterns ? envDef.env.getDevPatterns(component) : [];
120
+ }
121
+ const envPatterns = fromEnvJsonFile || fromEnvFunc || {};
122
+ if (Array.isArray(envPatterns)) {
123
+ return { [envId]: envPatterns };
124
+ }
125
+ const envPatternsObject = Object.entries(envPatterns).reduce((acc, [name, pattern]) => {
126
+ const aspectId = patternNames[name] || envId;
127
+ if (!acc[aspectId]) acc[aspectId] = [];
128
+ acc[aspectId] = acc[aspectId].concat(pattern);
129
+ return acc;
130
+ }, {});
131
+ return envPatternsObject;
132
+ }
133
+
134
+ private async computeDevPatternsFromEnvJsoncFile(
135
+ envId: string,
136
+ legacyFiles?: SourceFile[]
137
+ ): Promise<string[] | undefined> {
138
+ const isCoreEnv = this.envs.isCoreEnv(envId);
139
+ if (isCoreEnv) return undefined;
140
+ let envJson;
141
+ if (legacyFiles) {
142
+ envJson = legacyFiles.find((file) => {
143
+ return file.relative === 'env.jsonc' || file.relative === 'env.json';
144
+ });
145
+ } else {
146
+ const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);
147
+ envJson = envComponent.filesystem.files.find((file) => {
148
+ return file.relative === 'env.jsonc' || file.relative === 'env.json';
149
+ });
150
+ }
151
+
152
+ if (!envJson) return undefined;
153
+
154
+ const object = parse(envJson.contents.toString('utf8'));
155
+ return object.patterns;
156
+ }
157
+
158
+ /**
159
+ * get all dev files configured on a component.
160
+ */
161
+ getDevPatterns(component: Component, aspectId?: string): string[] {
162
+ const entry = component.state.aspects.get(DevFilesAspect.id);
163
+ const devPatterns = entry?.data.devPatterns || {};
164
+ return aspectId ? devPatterns[aspectId] : flatten(Object.values(devPatterns));
165
+ }
166
+
167
+ /**
168
+ * determine whether a file of a component is a dev file.
169
+ */
170
+ isDevFile(component: Component, filePath: string): boolean {
171
+ const devFiles = this.getDevFiles(component);
172
+ return devFiles.includes(filePath);
173
+ }
174
+
175
+ /**
176
+ * register a new dev pattern.
177
+ * @param regex dev pattern
178
+ */
179
+ registerDevPattern(pattern: DevPatterns) {
180
+ return this.devPatternSlot.register(pattern);
181
+ }
182
+
183
+ /**
184
+ * get all dev patterns registered.
185
+ * If you want to use this during onLoad event you might need to use computeDevFiles instead, since the component might not include this data yet
186
+ */
187
+ getDevFiles(component: Component): DevFiles {
188
+ const entry = component.state.aspects.get(DevFilesAspect.id);
189
+ const rawDevFiles = entry?.data.devFiles || {};
190
+ return new DevFiles(rawDevFiles);
191
+ }
192
+
193
+ async getDevFilesForConsumerComp(consumerComponent: LegacyComponent): Promise<string[]> {
194
+ const componentId = await this.workspace.resolveComponentId(consumerComponent.id);
195
+ // Do not change the storeInCache=false arg. if you think you need to change it, please talk to Gilad first
196
+ const component = await this.workspace.get(componentId, consumerComponent, true, false, { loadExtensions: false });
197
+ if (!component) throw Error(`failed to transform component ${consumerComponent.id.toString()} in harmony`);
198
+ const computedDevFiles = await this.computeDevFiles(component);
199
+ return computedDevFiles.list();
200
+ }
201
+
202
+ /**
203
+ * compute all dev files of a component.
204
+ */
205
+ async computeDevFiles(component: Component): Promise<DevFiles> {
206
+ const devPatterns = await this.computeDevPatterns(component);
207
+ const rawDevFiles = Object.keys(devPatterns).reduce((acc, aspectId) => {
208
+ if (!acc[aspectId]) acc[aspectId] = [];
209
+ const patterns = devPatterns[aspectId];
210
+ acc[aspectId] = component.state.filesystem.byGlob(patterns).map((file) => file.relative);
211
+ return acc;
212
+ }, {});
213
+
214
+ return new DevFiles(rawDevFiles);
215
+ }
216
+
217
+ static slots = [Slot.withType<DevPatterns>()];
218
+
219
+ static defaultConfig = {
220
+ patterns: [],
221
+ };
222
+
223
+ static runtime = MainRuntime;
224
+
225
+ static dependencies = [EnvsAspect, WorkspaceAspect, ComponentAspect, GraphqlAspect, ScopeAspect];
226
+
227
+ static async provider(
228
+ [envs, workspace, componentAspect, graphql, scope]: [EnvsMain, Workspace, ComponentMain, GraphqlMain, ScopeMain],
229
+ config: DevFilesConfig,
230
+ [devPatternSlot]: [DevPatternSlot]
231
+ ) {
232
+ const devFiles = new DevFilesMain(envs, workspace, devPatternSlot, config);
233
+ componentAspect.registerShowFragments([new DevFilesFragment(devFiles)]);
234
+
235
+ const calcDevOnLoad = async (component: Component) => {
236
+ return {
237
+ devPatterns: await devFiles.computeDevPatterns(component),
238
+ devFiles: (await devFiles.computeDevFiles(component)).toObject(),
239
+ };
240
+ };
241
+
242
+ if (workspace) {
243
+ workspace.registerOnComponentLoad(calcDevOnLoad);
244
+ }
245
+ if (scope) {
246
+ scope.registerOnCompAspectReCalc(calcDevOnLoad);
247
+ }
248
+
249
+ graphql.register(devFilesSchema(devFiles));
250
+ return devFiles;
251
+ }
252
+ }
253
+
254
+ DevFilesAspect.addRuntime(DevFilesMain);
@@ -0,0 +1,30 @@
1
+ import { expect } from 'chai';
2
+ import { DevFiles } from './dev-files';
3
+
4
+ describe('DevFiles', () => {
5
+ let devFiles = new DevFiles({});
6
+
7
+ beforeEach(() => {
8
+ devFiles = new DevFiles({
9
+ 'teambit.defender/tester': ['button.spec.tsx'],
10
+ 'teambit.compositions/compositions': ['button.composition.tsx'],
11
+ 'teambit.docs/docs': ['button.docs.ts'],
12
+ });
13
+ });
14
+ describe('get()', () => {
15
+ it('get all dev files of the docs aspect', () => {
16
+ expect(devFiles.get('teambit.docs/docs')).to.deep.eq(['button.docs.ts']);
17
+ });
18
+
19
+ it('should get undefined as there are no files for aspect id', () => {
20
+ expect(devFiles.get('teambit.compositions')).to.deep.eq([]);
21
+ });
22
+ });
23
+
24
+ describe('list()', () => {
25
+ it('should list all dev files', () => {
26
+ const allFiles = devFiles.list();
27
+ expect(allFiles).to.include.deep.eq(['button.spec.tsx', 'button.composition.tsx', 'button.docs.ts']);
28
+ });
29
+ });
30
+ });
package/dev-files.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { flatten } from 'lodash';
2
+
3
+ export class DevFiles {
4
+ constructor(private raw: { [key: string]: string[] }) {}
5
+
6
+ /**
7
+ * get all dev files of an aspect (for example: teambit.defender/tester)
8
+ */
9
+ get(aspectId: string): string[] {
10
+ return this.raw[aspectId] || [];
11
+ }
12
+
13
+ toTupleArray() {
14
+ return flatten(
15
+ Object.entries(this.raw).map(([aspectId, files]) => {
16
+ return files.map((file) => [file, aspectId]);
17
+ })
18
+ );
19
+ }
20
+
21
+ /**
22
+ * list all dev files.
23
+ */
24
+ list(): string[] {
25
+ return flatten(Object.values(this.raw));
26
+ }
27
+
28
+ /**
29
+ * determine whether a file is included in the dev files.
30
+ * @param filePath
31
+ */
32
+ includes(filePath: string) {
33
+ return this.list().includes(filePath);
34
+ }
35
+
36
+ /**
37
+ * return a plain object with all dev files.
38
+ */
39
+ toObject() {
40
+ return this.raw;
41
+ }
42
+
43
+ /**
44
+ * serialize all dev files into a JSON string.
45
+ */
46
+ toString(pretty = false) {
47
+ return JSON.stringify(this.toObject(), null, pretty ? 2 : 0);
48
+ }
49
+ }
@@ -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;
@@ -6,7 +6,7 @@ import LegacyComponent from '@teambit/legacy/dist/consumer/component';
6
6
  import { Component, ComponentMain } from '@teambit/component';
7
7
  import { GraphqlMain } from '@teambit/graphql';
8
8
  import { DevFiles } from './dev-files';
9
- declare type DevPatternDescriptor = {
9
+ type DevPatternDescriptor = {
10
10
  /**
11
11
  * Name of the dev pattern
12
12
  */
@@ -16,16 +16,16 @@ declare type DevPatternDescriptor = {
16
16
  */
17
17
  pattern: string[];
18
18
  };
19
- declare type DevPattern = string[] | DevPatternDescriptor;
19
+ type DevPattern = string[] | DevPatternDescriptor;
20
20
  /**
21
21
  * dev pattern is a list of strings or a function that returns a list of strings. an example to a pattern can be "[*.spec.ts]"
22
22
  */
23
- export declare type DevPatterns = ((component: Component) => DevPattern) | DevPattern;
23
+ export type DevPatterns = ((component: Component) => DevPattern) | DevPattern;
24
24
  /**
25
25
  * slot for dev file patterns.
26
26
  */
27
- export declare type DevPatternSlot = SlotRegistry<DevPatterns>;
28
- export declare type DevFilesConfig = {
27
+ export type DevPatternSlot = SlotRegistry<DevPatterns>;
28
+ export type DevFilesConfig = {
29
29
  patterns: string[];
30
30
  };
31
31
  export declare class DevFilesMain {
@@ -81,7 +81,7 @@ export declare class DevFilesMain {
81
81
  computeDevFiles(component: Component): Promise<DevFiles>;
82
82
  static slots: ((registerFn: () => string) => SlotRegistry<DevPatterns>)[];
83
83
  static defaultConfig: {
84
- patterns: never[];
84
+ patterns: any[];
85
85
  };
86
86
  static runtime: import("@teambit/harmony").RuntimeDefinition;
87
87
  static dependencies: import("@teambit/harmony").Aspect[];
@@ -126,7 +126,7 @@ class DevFilesMain {
126
126
  */
127
127
  async computeDevPatterns(component) {
128
128
  const entry = component.state.aspects.get(_devFiles().DevFilesAspect.id);
129
- const configuredPatterns = (entry === null || entry === void 0 ? void 0 : entry.config.devFilePatterns) || [];
129
+ const configuredPatterns = entry?.config.devFilePatterns || [];
130
130
  const fromSlot = await this.computeDevPatternsFromSlot(component);
131
131
  const fromEnv = await this.computeDevPatternsFromEnv(component, fromSlot.names);
132
132
  const res = Object.assign({
@@ -165,11 +165,10 @@ class DevFilesMain {
165
165
  const fromEnvJsonFile = await this.computeDevPatternsFromEnvJsoncFile(envId);
166
166
  let fromEnvFunc;
167
167
  if (!fromEnvJsonFile) {
168
- var _this$workspace, _envDef$env;
169
168
  const envDef = await this.envs.calculateEnv(component, {
170
- skipWarnings: !!((_this$workspace = this.workspace) !== null && _this$workspace !== void 0 && _this$workspace.inInstallContext)
169
+ skipWarnings: !!this.workspace?.inInstallContext
171
170
  });
172
- fromEnvFunc = (_envDef$env = envDef.env) !== null && _envDef$env !== void 0 && _envDef$env.getDevPatterns ? envDef.env.getDevPatterns(component) : [];
171
+ fromEnvFunc = envDef.env?.getDevPatterns ? envDef.env.getDevPatterns(component) : [];
173
172
  }
174
173
  const envPatterns = fromEnvJsonFile || fromEnvFunc || {};
175
174
  if (Array.isArray(envPatterns)) {
@@ -209,7 +208,7 @@ class DevFilesMain {
209
208
  */
210
209
  getDevPatterns(component, aspectId) {
211
210
  const entry = component.state.aspects.get(_devFiles().DevFilesAspect.id);
212
- const devPatterns = (entry === null || entry === void 0 ? void 0 : entry.data.devPatterns) || {};
211
+ const devPatterns = entry?.data.devPatterns || {};
213
212
  return aspectId ? devPatterns[aspectId] : (0, _lodash().flatten)(Object.values(devPatterns));
214
213
  }
215
214
 
@@ -235,7 +234,7 @@ class DevFilesMain {
235
234
  */
236
235
  getDevFiles(component) {
237
236
  const entry = component.state.aspects.get(_devFiles().DevFilesAspect.id);
238
- const rawDevFiles = (entry === null || entry === void 0 ? void 0 : entry.data.devFiles) || {};
237
+ const rawDevFiles = entry?.data.devFiles || {};
239
238
  return new (_devFiles2().DevFiles)(rawDevFiles);
240
239
  }
241
240
  async getDevFilesForConsumerComp(consumerComponent) {
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_commentJson","_scope","_interopRequireDefault","_lodash","_harmony","_workspace","_envs","_component","_graphql","_devFiles","_devFiles2","_devFiles3","_devFiles4","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","DevFilesMain","constructor","envs","workspace","devPatternSlot","config","computeDevPatterns","component","entry","state","aspects","get","DevFilesAspect","id","configuredPatterns","devFilePatterns","fromSlot","computeDevPatternsFromSlot","fromEnv","computeDevPatternsFromEnv","names","res","assign","patterns","patternSlot","toArray","getPatterns","devPatterns","isFunction","reduce","acc","current","aspectId","patternsOrDescriptor","patternsArray","Array","isArray","pattern","name","undefined","concat","patternNames","envId","getEnvId","fromEnvJsonFile","computeDevPatternsFromEnvJsoncFile","fromEnvFunc","_this$workspace","_envDef$env","envDef","calculateEnv","skipWarnings","inInstallContext","env","getDevPatterns","envPatterns","envPatternsObject","entries","legacyFiles","isCoreEnv","envJson","find","file","relative","envComponent","getEnvComponentByEnvId","filesystem","files","object","parse","contents","toString","flatten","values","isDevFile","filePath","devFiles","getDevFiles","includes","registerDevPattern","register","rawDevFiles","DevFiles","getDevFilesForConsumerComp","consumerComponent","componentId","resolveComponentId","loadExtensions","Error","computedDevFiles","computeDevFiles","list","keys","byGlob","map","provider","componentAspect","graphql","scope","registerShowFragments","DevFilesFragment","calcDevOnLoad","toObject","registerOnComponentLoad","registerOnCompAspectReCalc","devFilesSchema","exports","Slot","withType","MainRuntime","EnvsAspect","WorkspaceAspect","ComponentAspect","GraphqlAspect","ScopeAspect","addRuntime"],"sources":["dev-files.main.runtime.ts"],"sourcesContent":["import { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { MainRuntime } from '@teambit/cli';\nimport { parse } from 'comment-json';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport { flatten, isFunction } from 'lodash';\nimport { SlotRegistry, Slot } from '@teambit/harmony';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport { Component, ComponentMain, ComponentAspect } from '@teambit/component';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { DevFilesAspect } from './dev-files.aspect';\nimport { DevFiles } from './dev-files';\nimport { DevFilesFragment } from './dev-files.fragment';\nimport { devFilesSchema } from './dev-files.graphql';\n\ntype DevPatternDescriptor = {\n /**\n * Name of the dev pattern\n */\n name: string;\n\n /**\n * Glob pattern to select dev files\n */\n pattern: string[];\n};\n\ntype DevPattern = string[] | DevPatternDescriptor;\n\n/**\n * dev pattern is a list of strings or a function that returns a list of strings. an example to a pattern can be \"[*.spec.ts]\"\n */\nexport type DevPatterns = ((component: Component) => DevPattern) | DevPattern;\n\n/**\n * slot for dev file patterns.\n */\nexport type DevPatternSlot = SlotRegistry<DevPatterns>;\n\nexport type DevFilesConfig = {\n patterns: string[];\n};\n\nexport class DevFilesMain {\n constructor(\n private envs: EnvsMain,\n\n private workspace: Workspace,\n\n private devPatternSlot: DevPatternSlot,\n\n /**\n * configuration loaded into the dev files aspect.\n */\n readonly config: DevFilesConfig\n ) {}\n\n /**\n * compute all dev patterns on a component.\n * computing of dev patterns is a merge of the configuration, the env (env.getDevPatterns(component)) and\n * the registering aspects (through registerDevPattern()).\n */\n async computeDevPatterns(component: Component) {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const configuredPatterns = entry?.config.devFilePatterns || [];\n\n const fromSlot = await this.computeDevPatternsFromSlot(component);\n const fromEnv = await this.computeDevPatternsFromEnv(component, fromSlot.names);\n\n const res = Object.assign(\n {\n config: configuredPatterns,\n },\n fromSlot.patterns,\n fromEnv\n );\n return res;\n }\n\n private async computeDevPatternsFromSlot(\n component: Component\n ): Promise<{ patterns: { [id: string]: string[] }; names: { [name: string]: string } }> {\n const patternSlot = this.devPatternSlot.toArray();\n const getPatterns = (devPatterns: DevPatterns) => {\n if (isFunction(devPatterns)) {\n return devPatterns(component);\n }\n return devPatterns;\n };\n const fromSlot = patternSlot.reduce(\n (acc, current) => {\n const [aspectId, patterns] = current;\n // if (component.state.aspects.get(aspectId)) acc[aspectId] = acc[aspectId].concat(patterns);\n const patternsOrDescriptor = getPatterns(patterns);\n const patternsArray = Array.isArray(patternsOrDescriptor) ? patternsOrDescriptor : patternsOrDescriptor.pattern;\n const name = Array.isArray(patternsOrDescriptor) ? undefined : patternsOrDescriptor.name;\n if (!acc.patterns[aspectId]) acc.patterns[aspectId] = [];\n acc.patterns[aspectId] = acc.patterns[aspectId].concat(patternsArray);\n if (name) {\n acc.names[name] = aspectId;\n }\n return acc;\n },\n { patterns: {}, names: {} }\n );\n return fromSlot;\n }\n\n private async computeDevPatternsFromEnv(\n component: Component,\n patternNames: { [name: string]: string }\n ): Promise<{ [id: string]: string[] }> {\n const envId = this.envs.getEnvId(component);\n const fromEnvJsonFile = await this.computeDevPatternsFromEnvJsoncFile(envId);\n let fromEnvFunc;\n if (!fromEnvJsonFile) {\n const envDef = await this.envs.calculateEnv(component, { skipWarnings: !!this.workspace?.inInstallContext });\n fromEnvFunc = envDef.env?.getDevPatterns ? envDef.env.getDevPatterns(component) : [];\n }\n const envPatterns = fromEnvJsonFile || fromEnvFunc || {};\n if (Array.isArray(envPatterns)) {\n return { [envId]: envPatterns };\n }\n const envPatternsObject = Object.entries(envPatterns).reduce((acc, [name, pattern]) => {\n const aspectId = patternNames[name] || envId;\n if (!acc[aspectId]) acc[aspectId] = [];\n acc[aspectId] = acc[aspectId].concat(pattern);\n return acc;\n }, {});\n return envPatternsObject;\n }\n\n private async computeDevPatternsFromEnvJsoncFile(\n envId: string,\n legacyFiles?: SourceFile[]\n ): Promise<string[] | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n let envJson;\n if (legacyFiles) {\n envJson = legacyFiles.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n } else {\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n envJson = envComponent.filesystem.files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n }\n\n if (!envJson) return undefined;\n\n const object = parse(envJson.contents.toString('utf8'));\n return object.patterns;\n }\n\n /**\n * get all dev files configured on a component.\n */\n getDevPatterns(component: Component, aspectId?: string): string[] {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const devPatterns = entry?.data.devPatterns || {};\n return aspectId ? devPatterns[aspectId] : flatten(Object.values(devPatterns));\n }\n\n /**\n * determine whether a file of a component is a dev file.\n */\n isDevFile(component: Component, filePath: string): boolean {\n const devFiles = this.getDevFiles(component);\n return devFiles.includes(filePath);\n }\n\n /**\n * register a new dev pattern.\n * @param regex dev pattern\n */\n registerDevPattern(pattern: DevPatterns) {\n return this.devPatternSlot.register(pattern);\n }\n\n /**\n * get all dev patterns registered.\n * If you want to use this during onLoad event you might need to use computeDevFiles instead, since the component might not include this data yet\n */\n getDevFiles(component: Component): DevFiles {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const rawDevFiles = entry?.data.devFiles || {};\n return new DevFiles(rawDevFiles);\n }\n\n async getDevFilesForConsumerComp(consumerComponent: LegacyComponent): Promise<string[]> {\n const componentId = await this.workspace.resolveComponentId(consumerComponent.id);\n // Do not change the storeInCache=false arg. if you think you need to change it, please talk to Gilad first\n const component = await this.workspace.get(componentId, consumerComponent, true, false, { loadExtensions: false });\n if (!component) throw Error(`failed to transform component ${consumerComponent.id.toString()} in harmony`);\n const computedDevFiles = await this.computeDevFiles(component);\n return computedDevFiles.list();\n }\n\n /**\n * compute all dev files of a component.\n */\n async computeDevFiles(component: Component): Promise<DevFiles> {\n const devPatterns = await this.computeDevPatterns(component);\n const rawDevFiles = Object.keys(devPatterns).reduce((acc, aspectId) => {\n if (!acc[aspectId]) acc[aspectId] = [];\n const patterns = devPatterns[aspectId];\n acc[aspectId] = component.state.filesystem.byGlob(patterns).map((file) => file.relative);\n return acc;\n }, {});\n\n return new DevFiles(rawDevFiles);\n }\n\n static slots = [Slot.withType<DevPatterns>()];\n\n static defaultConfig = {\n patterns: [],\n };\n\n static runtime = MainRuntime;\n\n static dependencies = [EnvsAspect, WorkspaceAspect, ComponentAspect, GraphqlAspect, ScopeAspect];\n\n static async provider(\n [envs, workspace, componentAspect, graphql, scope]: [EnvsMain, Workspace, ComponentMain, GraphqlMain, ScopeMain],\n config: DevFilesConfig,\n [devPatternSlot]: [DevPatternSlot]\n ) {\n const devFiles = new DevFilesMain(envs, workspace, devPatternSlot, config);\n componentAspect.registerShowFragments([new DevFilesFragment(devFiles)]);\n\n const calcDevOnLoad = async (component: Component) => {\n return {\n devPatterns: await devFiles.computeDevPatterns(component),\n devFiles: (await devFiles.computeDevFiles(component)).toObject(),\n };\n };\n\n if (workspace) {\n workspace.registerOnComponentLoad(calcDevOnLoad);\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(calcDevOnLoad);\n }\n\n graphql.register(devFilesSchema(devFiles));\n return devFiles;\n }\n}\n\nDevFilesAspect.addRuntime(DevFilesMain);\n"],"mappings":";;;;;;AACA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,aAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,YAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,OAAA;EAAA,MAAAH,IAAA,GAAAI,sBAAA,CAAAH,OAAA;EAAAE,MAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,SAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,QAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,WAAA;EAAA,MAAAP,IAAA,GAAAI,sBAAA,CAAAH,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,MAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,KAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,WAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,UAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,SAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,QAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,UAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,SAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,WAAA;EAAA,MAAAZ,IAAA,GAAAC,OAAA;EAAAW,UAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,WAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,UAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,WAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,UAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAqD,SAAAI,uBAAAW,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAgBrD;AACA;AACA;;AAGA;AACA;AACA;;AAOO,MAAMW,YAAY,CAAC;EACxBC,WAAWA,CACDC,IAAc,EAEdC,SAAoB,EAEpBC,cAA8B;EAEtC;AACJ;AACA;EACaC,MAAsB,EAC/B;IAAA,KAVQH,IAAc,GAAdA,IAAc;IAAA,KAEdC,SAAoB,GAApBA,SAAoB;IAAA,KAEpBC,cAA8B,GAA9BA,cAA8B;IAAA,KAK7BC,MAAsB,GAAtBA,MAAsB;EAC9B;;EAEH;AACF;AACA;AACA;AACA;EACE,MAAMC,kBAAkBA,CAACC,SAAoB,EAAE;IAC7C,MAAMC,KAAK,GAAGD,SAAS,CAACE,KAAK,CAACC,OAAO,CAACC,GAAG,CAACC,0BAAc,CAACC,EAAE,CAAC;IAC5D,MAAMC,kBAAkB,GAAG,CAAAN,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEH,MAAM,CAACU,eAAe,KAAI,EAAE;IAE9D,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAACV,SAAS,CAAC;IACjE,MAAMW,OAAO,GAAG,MAAM,IAAI,CAACC,yBAAyB,CAACZ,SAAS,EAAES,QAAQ,CAACI,KAAK,CAAC;IAE/E,MAAMC,GAAG,GAAGrC,MAAM,CAACsC,MAAM,CACvB;MACEjB,MAAM,EAAES;IACV,CAAC,EACDE,QAAQ,CAACO,QAAQ,EACjBL,OACF,CAAC;IACD,OAAOG,GAAG;EACZ;EAEA,MAAcJ,0BAA0BA,CACtCV,SAAoB,EACkE;IACtF,MAAMiB,WAAW,GAAG,IAAI,CAACpB,cAAc,CAACqB,OAAO,CAAC,CAAC;IACjD,MAAMC,WAAW,GAAIC,WAAwB,IAAK;MAChD,IAAI,IAAAC,oBAAU,EAACD,WAAW,CAAC,EAAE;QAC3B,OAAOA,WAAW,CAACpB,SAAS,CAAC;MAC/B;MACA,OAAOoB,WAAW;IACpB,CAAC;IACD,MAAMX,QAAQ,GAAGQ,WAAW,CAACK,MAAM,CACjC,CAACC,GAAG,EAAEC,OAAO,KAAK;MAChB,MAAM,CAACC,QAAQ,EAAET,QAAQ,CAAC,GAAGQ,OAAO;MACpC;MACA,MAAME,oBAAoB,GAAGP,WAAW,CAACH,QAAQ,CAAC;MAClD,MAAMW,aAAa,GAAGC,KAAK,CAACC,OAAO,CAACH,oBAAoB,CAAC,GAAGA,oBAAoB,GAAGA,oBAAoB,CAACI,OAAO;MAC/G,MAAMC,IAAI,GAAGH,KAAK,CAACC,OAAO,CAACH,oBAAoB,CAAC,GAAGM,SAAS,GAAGN,oBAAoB,CAACK,IAAI;MACxF,IAAI,CAACR,GAAG,CAACP,QAAQ,CAACS,QAAQ,CAAC,EAAEF,GAAG,CAACP,QAAQ,CAACS,QAAQ,CAAC,GAAG,EAAE;MACxDF,GAAG,CAACP,QAAQ,CAACS,QAAQ,CAAC,GAAGF,GAAG,CAACP,QAAQ,CAACS,QAAQ,CAAC,CAACQ,MAAM,CAACN,aAAa,CAAC;MACrE,IAAII,IAAI,EAAE;QACRR,GAAG,CAACV,KAAK,CAACkB,IAAI,CAAC,GAAGN,QAAQ;MAC5B;MACA,OAAOF,GAAG;IACZ,CAAC,EACD;MAAEP,QAAQ,EAAE,CAAC,CAAC;MAAEH,KAAK,EAAE,CAAC;IAAE,CAC5B,CAAC;IACD,OAAOJ,QAAQ;EACjB;EAEA,MAAcG,yBAAyBA,CACrCZ,SAAoB,EACpBkC,YAAwC,EACH;IACrC,MAAMC,KAAK,GAAG,IAAI,CAACxC,IAAI,CAACyC,QAAQ,CAACpC,SAAS,CAAC;IAC3C,MAAMqC,eAAe,GAAG,MAAM,IAAI,CAACC,kCAAkC,CAACH,KAAK,CAAC;IAC5E,IAAII,WAAW;IACf,IAAI,CAACF,eAAe,EAAE;MAAA,IAAAG,eAAA,EAAAC,WAAA;MACpB,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAC/C,IAAI,CAACgD,YAAY,CAAC3C,SAAS,EAAE;QAAE4C,YAAY,EAAE,CAAC,GAAAJ,eAAA,GAAC,IAAI,CAAC5C,SAAS,cAAA4C,eAAA,eAAdA,eAAA,CAAgBK,gBAAgB;MAAC,CAAC,CAAC;MAC5GN,WAAW,GAAG,CAAAE,WAAA,GAAAC,MAAM,CAACI,GAAG,cAAAL,WAAA,eAAVA,WAAA,CAAYM,cAAc,GAAGL,MAAM,CAACI,GAAG,CAACC,cAAc,CAAC/C,SAAS,CAAC,GAAG,EAAE;IACtF;IACA,MAAMgD,WAAW,GAAGX,eAAe,IAAIE,WAAW,IAAI,CAAC,CAAC;IACxD,IAAIX,KAAK,CAACC,OAAO,CAACmB,WAAW,CAAC,EAAE;MAC9B,OAAO;QAAE,CAACb,KAAK,GAAGa;MAAY,CAAC;IACjC;IACA,MAAMC,iBAAiB,GAAGxE,MAAM,CAACyE,OAAO,CAACF,WAAW,CAAC,CAAC1B,MAAM,CAAC,CAACC,GAAG,EAAE,CAACQ,IAAI,EAAED,OAAO,CAAC,KAAK;MACrF,MAAML,QAAQ,GAAGS,YAAY,CAACH,IAAI,CAAC,IAAII,KAAK;MAC5C,IAAI,CAACZ,GAAG,CAACE,QAAQ,CAAC,EAAEF,GAAG,CAACE,QAAQ,CAAC,GAAG,EAAE;MACtCF,GAAG,CAACE,QAAQ,CAAC,GAAGF,GAAG,CAACE,QAAQ,CAAC,CAACQ,MAAM,CAACH,OAAO,CAAC;MAC7C,OAAOP,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,OAAO0B,iBAAiB;EAC1B;EAEA,MAAcX,kCAAkCA,CAC9CH,KAAa,EACbgB,WAA0B,EACK;IAC/B,MAAMC,SAAS,GAAG,IAAI,CAACzD,IAAI,CAACyD,SAAS,CAACjB,KAAK,CAAC;IAC5C,IAAIiB,SAAS,EAAE,OAAOpB,SAAS;IAC/B,IAAIqB,OAAO;IACX,IAAIF,WAAW,EAAE;MACfE,OAAO,GAAGF,WAAW,CAACG,IAAI,CAAEC,IAAI,IAAK;QACnC,OAAOA,IAAI,CAACC,QAAQ,KAAK,WAAW,IAAID,IAAI,CAACC,QAAQ,KAAK,UAAU;MACtE,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,MAAMC,YAAY,GAAG,MAAM,IAAI,CAAC9D,IAAI,CAAC+D,sBAAsB,CAACvB,KAAK,EAAEA,KAAK,CAAC;MACzEkB,OAAO,GAAGI,YAAY,CAACE,UAAU,CAACC,KAAK,CAACN,IAAI,CAAEC,IAAI,IAAK;QACrD,OAAOA,IAAI,CAACC,QAAQ,KAAK,WAAW,IAAID,IAAI,CAACC,QAAQ,KAAK,UAAU;MACtE,CAAC,CAAC;IACJ;IAEA,IAAI,CAACH,OAAO,EAAE,OAAOrB,SAAS;IAE9B,MAAM6B,MAAM,GAAG,IAAAC,oBAAK,EAACT,OAAO,CAACU,QAAQ,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvD,OAAOH,MAAM,CAAC7C,QAAQ;EACxB;;EAEA;AACF;AACA;EACE+B,cAAcA,CAAC/C,SAAoB,EAAEyB,QAAiB,EAAY;IAChE,MAAMxB,KAAK,GAAGD,SAAS,CAACE,KAAK,CAACC,OAAO,CAACC,GAAG,CAACC,0BAAc,CAACC,EAAE,CAAC;IAC5D,MAAMc,WAAW,GAAG,CAAAnB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE9C,IAAI,CAACiE,WAAW,KAAI,CAAC,CAAC;IACjD,OAAOK,QAAQ,GAAGL,WAAW,CAACK,QAAQ,CAAC,GAAG,IAAAwC,iBAAO,EAACxF,MAAM,CAACyF,MAAM,CAAC9C,WAAW,CAAC,CAAC;EAC/E;;EAEA;AACF;AACA;EACE+C,SAASA,CAACnE,SAAoB,EAAEoE,QAAgB,EAAW;IACzD,MAAMC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAACtE,SAAS,CAAC;IAC5C,OAAOqE,QAAQ,CAACE,QAAQ,CAACH,QAAQ,CAAC;EACpC;;EAEA;AACF;AACA;AACA;EACEI,kBAAkBA,CAAC1C,OAAoB,EAAE;IACvC,OAAO,IAAI,CAACjC,cAAc,CAAC4E,QAAQ,CAAC3C,OAAO,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;EACEwC,WAAWA,CAACtE,SAAoB,EAAY;IAC1C,MAAMC,KAAK,GAAGD,SAAS,CAACE,KAAK,CAACC,OAAO,CAACC,GAAG,CAACC,0BAAc,CAACC,EAAE,CAAC;IAC5D,MAAMoE,WAAW,GAAG,CAAAzE,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE9C,IAAI,CAACkH,QAAQ,KAAI,CAAC,CAAC;IAC9C,OAAO,KAAIM,qBAAQ,EAACD,WAAW,CAAC;EAClC;EAEA,MAAME,0BAA0BA,CAACC,iBAAkC,EAAqB;IACtF,MAAMC,WAAW,GAAG,MAAM,IAAI,CAAClF,SAAS,CAACmF,kBAAkB,CAACF,iBAAiB,CAACvE,EAAE,CAAC;IACjF;IACA,MAAMN,SAAS,GAAG,MAAM,IAAI,CAACJ,SAAS,CAACQ,GAAG,CAAC0E,WAAW,EAAED,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE;MAAEG,cAAc,EAAE;IAAM,CAAC,CAAC;IAClH,IAAI,CAAChF,SAAS,EAAE,MAAMiF,KAAK,CAAE,iCAAgCJ,iBAAiB,CAACvE,EAAE,CAAC0D,QAAQ,CAAC,CAAE,aAAY,CAAC;IAC1G,MAAMkB,gBAAgB,GAAG,MAAM,IAAI,CAACC,eAAe,CAACnF,SAAS,CAAC;IAC9D,OAAOkF,gBAAgB,CAACE,IAAI,CAAC,CAAC;EAChC;;EAEA;AACF;AACA;EACE,MAAMD,eAAeA,CAACnF,SAAoB,EAAqB;IAC7D,MAAMoB,WAAW,GAAG,MAAM,IAAI,CAACrB,kBAAkB,CAACC,SAAS,CAAC;IAC5D,MAAM0E,WAAW,GAAGjG,MAAM,CAAC4G,IAAI,CAACjE,WAAW,CAAC,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEE,QAAQ,KAAK;MACrE,IAAI,CAACF,GAAG,CAACE,QAAQ,CAAC,EAAEF,GAAG,CAACE,QAAQ,CAAC,GAAG,EAAE;MACtC,MAAMT,QAAQ,GAAGI,WAAW,CAACK,QAAQ,CAAC;MACtCF,GAAG,CAACE,QAAQ,CAAC,GAAGzB,SAAS,CAACE,KAAK,CAACyD,UAAU,CAAC2B,MAAM,CAACtE,QAAQ,CAAC,CAACuE,GAAG,CAAEhC,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC;MACxF,OAAOjC,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,OAAO,KAAIoD,qBAAQ,EAACD,WAAW,CAAC;EAClC;EAYA,aAAac,QAAQA,CACnB,CAAC7F,IAAI,EAAEC,SAAS,EAAE6F,eAAe,EAAEC,OAAO,EAAEC,KAAK,CAA+D,EAChH7F,MAAsB,EACtB,CAACD,cAAc,CAAmB,EAClC;IACA,MAAMwE,QAAQ,GAAG,IAAI5E,YAAY,CAACE,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,MAAM,CAAC;IAC1E2F,eAAe,CAACG,qBAAqB,CAAC,CAAC,KAAIC,6BAAgB,EAACxB,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAMyB,aAAa,GAAG,MAAO9F,SAAoB,IAAK;MACpD,OAAO;QACLoB,WAAW,EAAE,MAAMiD,QAAQ,CAACtE,kBAAkB,CAACC,SAAS,CAAC;QACzDqE,QAAQ,EAAE,CAAC,MAAMA,QAAQ,CAACc,eAAe,CAACnF,SAAS,CAAC,EAAE+F,QAAQ,CAAC;MACjE,CAAC;IACH,CAAC;IAED,IAAInG,SAAS,EAAE;MACbA,SAAS,CAACoG,uBAAuB,CAACF,aAAa,CAAC;IAClD;IACA,IAAIH,KAAK,EAAE;MACTA,KAAK,CAACM,0BAA0B,CAACH,aAAa,CAAC;IACjD;IAEAJ,OAAO,CAACjB,QAAQ,CAAC,IAAAyB,2BAAc,EAAC7B,QAAQ,CAAC,CAAC;IAC1C,OAAOA,QAAQ;EACjB;AACF;AAAC8B,OAAA,CAAA1G,YAAA,GAAAA,YAAA;AAAApB,eAAA,CA/MYoB,YAAY,WA4KR,CAAC2G,eAAI,CAACC,QAAQ,CAAc,CAAC,CAAC;AAAAhI,eAAA,CA5KlCoB,YAAY,mBA8KA;EACrBuB,QAAQ,EAAE;AACZ,CAAC;AAAA3C,eAAA,CAhLUoB,YAAY,aAkLN6G,kBAAW;AAAAjI,eAAA,CAlLjBoB,YAAY,kBAoLD,CAAC8G,kBAAU,EAAEC,oBAAe,EAAEC,4BAAe,EAAEC,wBAAa,EAAEC,gBAAW,CAAC;AA6BlGtG,0BAAc,CAACuG,UAAU,CAACnH,YAAY,CAAC"}
1
+ {"version":3,"names":["_cli","data","require","_commentJson","_scope","_interopRequireDefault","_lodash","_harmony","_workspace","_envs","_component","_graphql","_devFiles","_devFiles2","_devFiles3","_devFiles4","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","DevFilesMain","constructor","envs","workspace","devPatternSlot","config","computeDevPatterns","component","entry","state","aspects","get","DevFilesAspect","id","configuredPatterns","devFilePatterns","fromSlot","computeDevPatternsFromSlot","fromEnv","computeDevPatternsFromEnv","names","res","assign","patterns","patternSlot","toArray","getPatterns","devPatterns","isFunction","reduce","acc","current","aspectId","patternsOrDescriptor","patternsArray","Array","isArray","pattern","name","undefined","concat","patternNames","envId","getEnvId","fromEnvJsonFile","computeDevPatternsFromEnvJsoncFile","fromEnvFunc","envDef","calculateEnv","skipWarnings","inInstallContext","env","getDevPatterns","envPatterns","envPatternsObject","entries","legacyFiles","isCoreEnv","envJson","find","file","relative","envComponent","getEnvComponentByEnvId","filesystem","files","object","parse","contents","toString","flatten","values","isDevFile","filePath","devFiles","getDevFiles","includes","registerDevPattern","register","rawDevFiles","DevFiles","getDevFilesForConsumerComp","consumerComponent","componentId","resolveComponentId","loadExtensions","Error","computedDevFiles","computeDevFiles","list","keys","byGlob","map","provider","componentAspect","graphql","scope","registerShowFragments","DevFilesFragment","calcDevOnLoad","toObject","registerOnComponentLoad","registerOnCompAspectReCalc","devFilesSchema","exports","Slot","withType","MainRuntime","EnvsAspect","WorkspaceAspect","ComponentAspect","GraphqlAspect","ScopeAspect","addRuntime"],"sources":["dev-files.main.runtime.ts"],"sourcesContent":["import { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { MainRuntime } from '@teambit/cli';\nimport { parse } from 'comment-json';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport { flatten, isFunction } from 'lodash';\nimport { SlotRegistry, Slot } from '@teambit/harmony';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport { Component, ComponentMain, ComponentAspect } from '@teambit/component';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { DevFilesAspect } from './dev-files.aspect';\nimport { DevFiles } from './dev-files';\nimport { DevFilesFragment } from './dev-files.fragment';\nimport { devFilesSchema } from './dev-files.graphql';\n\ntype DevPatternDescriptor = {\n /**\n * Name of the dev pattern\n */\n name: string;\n\n /**\n * Glob pattern to select dev files\n */\n pattern: string[];\n};\n\ntype DevPattern = string[] | DevPatternDescriptor;\n\n/**\n * dev pattern is a list of strings or a function that returns a list of strings. an example to a pattern can be \"[*.spec.ts]\"\n */\nexport type DevPatterns = ((component: Component) => DevPattern) | DevPattern;\n\n/**\n * slot for dev file patterns.\n */\nexport type DevPatternSlot = SlotRegistry<DevPatterns>;\n\nexport type DevFilesConfig = {\n patterns: string[];\n};\n\nexport class DevFilesMain {\n constructor(\n private envs: EnvsMain,\n\n private workspace: Workspace,\n\n private devPatternSlot: DevPatternSlot,\n\n /**\n * configuration loaded into the dev files aspect.\n */\n readonly config: DevFilesConfig\n ) {}\n\n /**\n * compute all dev patterns on a component.\n * computing of dev patterns is a merge of the configuration, the env (env.getDevPatterns(component)) and\n * the registering aspects (through registerDevPattern()).\n */\n async computeDevPatterns(component: Component) {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const configuredPatterns = entry?.config.devFilePatterns || [];\n\n const fromSlot = await this.computeDevPatternsFromSlot(component);\n const fromEnv = await this.computeDevPatternsFromEnv(component, fromSlot.names);\n\n const res = Object.assign(\n {\n config: configuredPatterns,\n },\n fromSlot.patterns,\n fromEnv\n );\n return res;\n }\n\n private async computeDevPatternsFromSlot(\n component: Component\n ): Promise<{ patterns: { [id: string]: string[] }; names: { [name: string]: string } }> {\n const patternSlot = this.devPatternSlot.toArray();\n const getPatterns = (devPatterns: DevPatterns) => {\n if (isFunction(devPatterns)) {\n return devPatterns(component);\n }\n return devPatterns;\n };\n const fromSlot = patternSlot.reduce(\n (acc, current) => {\n const [aspectId, patterns] = current;\n // if (component.state.aspects.get(aspectId)) acc[aspectId] = acc[aspectId].concat(patterns);\n const patternsOrDescriptor = getPatterns(patterns);\n const patternsArray = Array.isArray(patternsOrDescriptor) ? patternsOrDescriptor : patternsOrDescriptor.pattern;\n const name = Array.isArray(patternsOrDescriptor) ? undefined : patternsOrDescriptor.name;\n if (!acc.patterns[aspectId]) acc.patterns[aspectId] = [];\n acc.patterns[aspectId] = acc.patterns[aspectId].concat(patternsArray);\n if (name) {\n acc.names[name] = aspectId;\n }\n return acc;\n },\n { patterns: {}, names: {} }\n );\n return fromSlot;\n }\n\n private async computeDevPatternsFromEnv(\n component: Component,\n patternNames: { [name: string]: string }\n ): Promise<{ [id: string]: string[] }> {\n const envId = this.envs.getEnvId(component);\n const fromEnvJsonFile = await this.computeDevPatternsFromEnvJsoncFile(envId);\n let fromEnvFunc;\n if (!fromEnvJsonFile) {\n const envDef = await this.envs.calculateEnv(component, { skipWarnings: !!this.workspace?.inInstallContext });\n fromEnvFunc = envDef.env?.getDevPatterns ? envDef.env.getDevPatterns(component) : [];\n }\n const envPatterns = fromEnvJsonFile || fromEnvFunc || {};\n if (Array.isArray(envPatterns)) {\n return { [envId]: envPatterns };\n }\n const envPatternsObject = Object.entries(envPatterns).reduce((acc, [name, pattern]) => {\n const aspectId = patternNames[name] || envId;\n if (!acc[aspectId]) acc[aspectId] = [];\n acc[aspectId] = acc[aspectId].concat(pattern);\n return acc;\n }, {});\n return envPatternsObject;\n }\n\n private async computeDevPatternsFromEnvJsoncFile(\n envId: string,\n legacyFiles?: SourceFile[]\n ): Promise<string[] | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n let envJson;\n if (legacyFiles) {\n envJson = legacyFiles.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n } else {\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n envJson = envComponent.filesystem.files.find((file) => {\n return file.relative === 'env.jsonc' || file.relative === 'env.json';\n });\n }\n\n if (!envJson) return undefined;\n\n const object = parse(envJson.contents.toString('utf8'));\n return object.patterns;\n }\n\n /**\n * get all dev files configured on a component.\n */\n getDevPatterns(component: Component, aspectId?: string): string[] {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const devPatterns = entry?.data.devPatterns || {};\n return aspectId ? devPatterns[aspectId] : flatten(Object.values(devPatterns));\n }\n\n /**\n * determine whether a file of a component is a dev file.\n */\n isDevFile(component: Component, filePath: string): boolean {\n const devFiles = this.getDevFiles(component);\n return devFiles.includes(filePath);\n }\n\n /**\n * register a new dev pattern.\n * @param regex dev pattern\n */\n registerDevPattern(pattern: DevPatterns) {\n return this.devPatternSlot.register(pattern);\n }\n\n /**\n * get all dev patterns registered.\n * If you want to use this during onLoad event you might need to use computeDevFiles instead, since the component might not include this data yet\n */\n getDevFiles(component: Component): DevFiles {\n const entry = component.state.aspects.get(DevFilesAspect.id);\n const rawDevFiles = entry?.data.devFiles || {};\n return new DevFiles(rawDevFiles);\n }\n\n async getDevFilesForConsumerComp(consumerComponent: LegacyComponent): Promise<string[]> {\n const componentId = await this.workspace.resolveComponentId(consumerComponent.id);\n // Do not change the storeInCache=false arg. if you think you need to change it, please talk to Gilad first\n const component = await this.workspace.get(componentId, consumerComponent, true, false, { loadExtensions: false });\n if (!component) throw Error(`failed to transform component ${consumerComponent.id.toString()} in harmony`);\n const computedDevFiles = await this.computeDevFiles(component);\n return computedDevFiles.list();\n }\n\n /**\n * compute all dev files of a component.\n */\n async computeDevFiles(component: Component): Promise<DevFiles> {\n const devPatterns = await this.computeDevPatterns(component);\n const rawDevFiles = Object.keys(devPatterns).reduce((acc, aspectId) => {\n if (!acc[aspectId]) acc[aspectId] = [];\n const patterns = devPatterns[aspectId];\n acc[aspectId] = component.state.filesystem.byGlob(patterns).map((file) => file.relative);\n return acc;\n }, {});\n\n return new DevFiles(rawDevFiles);\n }\n\n static slots = [Slot.withType<DevPatterns>()];\n\n static defaultConfig = {\n patterns: [],\n };\n\n static runtime = MainRuntime;\n\n static dependencies = [EnvsAspect, WorkspaceAspect, ComponentAspect, GraphqlAspect, ScopeAspect];\n\n static async provider(\n [envs, workspace, componentAspect, graphql, scope]: [EnvsMain, Workspace, ComponentMain, GraphqlMain, ScopeMain],\n config: DevFilesConfig,\n [devPatternSlot]: [DevPatternSlot]\n ) {\n const devFiles = new DevFilesMain(envs, workspace, devPatternSlot, config);\n componentAspect.registerShowFragments([new DevFilesFragment(devFiles)]);\n\n const calcDevOnLoad = async (component: Component) => {\n return {\n devPatterns: await devFiles.computeDevPatterns(component),\n devFiles: (await devFiles.computeDevFiles(component)).toObject(),\n };\n };\n\n if (workspace) {\n workspace.registerOnComponentLoad(calcDevOnLoad);\n }\n if (scope) {\n scope.registerOnCompAspectReCalc(calcDevOnLoad);\n }\n\n graphql.register(devFilesSchema(devFiles));\n return devFiles;\n }\n}\n\nDevFilesAspect.addRuntime(DevFilesMain);\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_dev-files@1.0.107/dist/dev-files.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_dev-files@1.0.107/dist/dev-files.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_dev-files@1.0.108/dist/dev-files.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_dev-files@1.0.108/dist/dev-files.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { DevFilesAspect } from './dev-files.aspect';
2
+
3
+ export { DevFilesAspect };
4
+ export type { DevFilesMain } from './dev-files.main.runtime';
5
+ export default DevFilesAspect;
package/package.json CHANGED
@@ -1,43 +1,39 @@
1
1
  {
2
2
  "name": "@teambit/dev-files",
3
- "version": "1.0.107",
3
+ "version": "1.0.108",
4
4
  "homepage": "https://bit.cloud/teambit/component/dev-files",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "dev-files",
9
- "version": "1.0.107"
9
+ "version": "1.0.108"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphql-tag": "2.12.1",
13
13
  "comment-json": "3.0.3",
14
14
  "lodash": "4.17.21",
15
- "core-js": "^3.0.0",
16
- "@babel/runtime": "7.20.0",
17
15
  "@teambit/harmony": "0.4.6",
18
- "@teambit/component": "1.0.107",
19
- "@teambit/graphql": "1.0.107",
20
- "@teambit/cli": "0.0.839",
21
- "@teambit/envs": "1.0.107",
22
- "@teambit/scope": "1.0.107",
23
- "@teambit/workspace": "1.0.107"
16
+ "@teambit/component": "1.0.108",
17
+ "@teambit/graphql": "1.0.108",
18
+ "@teambit/cli": "0.0.840",
19
+ "@teambit/envs": "1.0.108",
20
+ "@teambit/scope": "1.0.108",
21
+ "@teambit/workspace": "1.0.108"
24
22
  },
25
23
  "devDependencies": {
26
- "@types/react": "^17.0.8",
27
24
  "@types/lodash": "4.14.165",
28
25
  "@types/chai": "4.2.15",
29
26
  "chai": "4.3.0",
30
27
  "@types/mocha": "9.1.0",
31
- "@types/node": "12.20.4",
32
- "@types/react-dom": "^17.0.5",
33
- "@types/jest": "^26.0.0",
34
- "@types/testing-library__jest-dom": "5.9.5",
35
- "@teambit/component.content.dev-files": "1.95.9"
28
+ "@types/jest": "^29.2.2",
29
+ "@types/testing-library__jest-dom": "^5.9.5",
30
+ "@teambit/component.content.dev-files": "1.95.9",
31
+ "@teambit/harmony.envs.core-aspect-env": "0.0.13"
36
32
  },
37
33
  "peerDependencies": {
38
- "@teambit/legacy": "1.0.624",
39
- "react": "^16.8.0 || ^17.0.0",
40
- "react-dom": "^16.8.0 || ^17.0.0"
34
+ "react": "^17.0.0 || ^18.0.0",
35
+ "@types/react": "^18.2.12",
36
+ "@teambit/legacy": "1.0.624"
41
37
  },
42
38
  "license": "Apache-2.0",
43
39
  "optionalDependencies": {},
@@ -51,7 +47,7 @@
51
47
  },
52
48
  "private": false,
53
49
  "engines": {
54
- "node": ">=12.22.0"
50
+ "node": ">=16.0.0"
55
51
  },
56
52
  "repository": {
57
53
  "type": "git",
@@ -60,12 +56,9 @@
60
56
  "keywords": [
61
57
  "bit",
62
58
  "bit-aspect",
59
+ "bit-core-aspect",
63
60
  "components",
64
61
  "collaboration",
65
- "web",
66
- "react",
67
- "react-components",
68
- "angular",
69
- "angular-components"
62
+ "web"
70
63
  ]
71
64
  }
package/tsconfig.json CHANGED
@@ -1,38 +1,33 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "lib": [
4
- "es2019",
5
- "DOM",
6
- "ES6",
7
- "DOM.Iterable",
8
- "ScriptHost"
4
+ "esnext",
5
+ "dom",
6
+ "dom.Iterable"
9
7
  ],
10
- "target": "es2015",
11
- "module": "CommonJS",
12
- "jsx": "react",
13
- "allowJs": true,
14
- "composite": true,
8
+ "target": "es2020",
9
+ "module": "es2020",
10
+ "jsx": "react-jsx",
15
11
  "declaration": true,
16
12
  "sourceMap": true,
17
- "skipLibCheck": true,
18
13
  "experimentalDecorators": true,
19
- "outDir": "dist",
14
+ "skipLibCheck": true,
20
15
  "moduleResolution": "node",
21
16
  "esModuleInterop": true,
22
- "rootDir": ".",
23
17
  "resolveJsonModule": true,
24
- "emitDeclarationOnly": true,
25
- "emitDecoratorMetadata": true,
26
- "allowSyntheticDefaultImports": true,
27
- "strictPropertyInitialization": false,
28
- "strict": true,
29
- "noImplicitAny": false,
30
- "preserveConstEnums": true
18
+ "allowJs": true,
19
+ "outDir": "dist",
20
+ "emitDeclarationOnly": true
31
21
  },
32
22
  "exclude": [
23
+ "artifacts",
24
+ "public",
33
25
  "dist",
26
+ "node_modules",
27
+ "package.json",
34
28
  "esm.mjs",
35
- "package.json"
29
+ "**/*.cjs",
30
+ "./dist"
36
31
  ],
37
32
  "include": [
38
33
  "**/*",
package/types/asset.d.ts CHANGED
@@ -5,12 +5,12 @@ declare module '*.png' {
5
5
  declare module '*.svg' {
6
6
  import type { FunctionComponent, SVGProps } from 'react';
7
7
 
8
- export const ReactComponent: FunctionComponent<SVGProps<SVGSVGElement> & { title?: string }>;
8
+ export const ReactComponent: FunctionComponent<
9
+ SVGProps<SVGSVGElement> & { title?: string }
10
+ >;
9
11
  const src: string;
10
12
  export default src;
11
13
  }
12
-
13
- // @TODO Gilad
14
14
  declare module '*.jpg' {
15
15
  const value: any;
16
16
  export = value;
@@ -27,3 +27,15 @@ declare module '*.bmp' {
27
27
  const value: any;
28
28
  export = value;
29
29
  }
30
+ declare module '*.otf' {
31
+ const value: any;
32
+ export = value;
33
+ }
34
+ declare module '*.woff' {
35
+ const value: any;
36
+ export = value;
37
+ }
38
+ declare module '*.woff2' {
39
+ const value: any;
40
+ export = value;
41
+ }