@teambit/component 0.0.648 → 0.0.652

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.648/dist/component.docs.mdx')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.652/dist/component.docs.mdx')]
@@ -1,4 +1,7 @@
1
- import { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';
1
+ /**
2
+ * avoid importing any (non-type) legacy code here. otherwise, PreviewTask will throw cryptic errors
3
+ */
4
+ import type { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';
2
5
  import { ComponentID } from '@teambit/component-id';
3
6
  export declare type Serializable = {
4
7
  toString(): string;
@@ -9,6 +12,7 @@ export declare type SerializableMap = {
9
12
  export declare type AspectData = {
10
13
  [key: string]: any;
11
14
  };
15
+ export declare type ResolveComponentIdFunc = (id: string) => Promise<ComponentID>;
12
16
  export declare class AspectEntry {
13
17
  id: ComponentID;
14
18
  private legacyEntry;
@@ -5,6 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.AspectEntry = void 0;
7
7
 
8
+ /**
9
+ * avoid importing any (non-type) legacy code here. otherwise, PreviewTask will throw cryptic errors
10
+ */
8
11
  class AspectEntry {
9
12
  constructor(id, legacyEntry) {
10
13
  this.id = id;
@@ -1 +1 @@
1
- {"version":3,"sources":["aspect-entry.ts"],"names":["AspectEntry","constructor","id","legacyEntry","legacy","isLegacy","config","__legacy","data","isRemoved","val","transform","newData","newEntry","clone","serialize","toString","icon"],"mappings":";;;;;;;AAeO,MAAMA,WAAN,CAAkB;AACvBC,EAAAA,WAAW,CAAQC,EAAR,EAAiCC,WAAjC,EAAkE;AAAA,SAA1DD,EAA0D,GAA1DA,EAA0D;AAAA,SAAjCC,WAAiC,GAAjCA,WAAiC;AAAE;;AAErE,MAANC,MAAM,GAAG;AACX,WAAO,KAAKD,WAAZ;AACD;;AAEW,MAARE,QAAQ,GAAY;AAAA;;AACtB,wBAAI,KAAKC,MAAT,yCAAI,aAAaC,QAAjB,EAA2B,OAAO,IAAP;AAC3B,WAAO,KAAP;AACD;;AAES,MAAND,MAAM,GAAG;AACX,WAAO,KAAKF,MAAL,CAAYE,MAAnB;AACD;;AAES,MAANA,MAAM,CAACA,MAAD,EAAS;AACjB,SAAKF,MAAL,CAAYE,MAAZ,GAAqBA,MAArB;AACD;;AAEO,MAAJE,IAAI,GAA2B;AACjC,WAAO,KAAKJ,MAAL,CAAYI,IAAnB;AACD;;AAEY,MAATC,SAAS,GAAY;AACvB,WAAO,KAAKL,MAAL,CAAYK,SAAnB;AACD,GA1BsB,CA4BvB;;;AACQ,MAAJD,IAAI,CAACE,GAAD,EAA8B;AACpC,SAAKN,MAAL,CAAYI,IAAZ,GAAmBE,GAAnB;AACD;;AAEDC,EAAAA,SAAS,CAACC,OAAD,EAAwC;AAC/C,UAAMC,QAAQ,GAAG,KAAKC,KAAL,EAAjB;AACAD,IAAAA,QAAQ,CAACL,IAAT,GAAgBI,OAAhB;AACA,WAAO,IAAIZ,WAAJ,CAAgB,KAAKE,EAArB,EAAyBW,QAAQ,CAACT,MAAlC,CAAP;AACD;;AAEDU,EAAAA,KAAK,GAAgB;AACnB,WAAO,IAAId,WAAJ,CAAgB,KAAKE,EAArB,EAAyB,KAAKC,WAAL,CAAiBW,KAAjB,EAAzB,CAAP;AACD;;AAEDC,EAAAA,SAAS,GAAG;AACV,WAAO;AACLb,MAAAA,EAAE,EAAE,KAAKA,EAAL,CAAQc,QAAR,EADC;AAELV,MAAAA,MAAM,EAAE,KAAKA,MAFR;AAGLE,MAAAA,IAAI,EAAE,KAAKA,IAHN;AAILS,MAAAA,IAAI,EAAE,qDAJD,CAIwD;;AAJxD,KAAP;AAMD;;AAlDsB","sourcesContent":["import { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\n\nexport type Serializable = {\n toString(): string;\n};\n\nexport type SerializableMap = {\n [key: string]: Serializable;\n};\n\nexport type AspectData = {\n [key: string]: any;\n};\n\nexport class AspectEntry {\n constructor(public id: ComponentID, private legacyEntry: ExtensionDataEntry) {}\n\n get legacy() {\n return this.legacyEntry;\n }\n\n get isLegacy(): boolean {\n if (this.config?.__legacy) return true;\n return false;\n }\n\n get config() {\n return this.legacy.config;\n }\n\n set config(config) {\n this.legacy.config = config;\n }\n\n get data(): { [key: string]: any } {\n return this.legacy.data;\n }\n\n get isRemoved(): boolean {\n return this.legacy.isRemoved;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n set data(val: { [key: string]: any }) {\n this.legacy.data = val;\n }\n\n transform(newData: SerializableMap): AspectEntry {\n const newEntry = this.clone();\n newEntry.data = newData;\n return new AspectEntry(this.id, newEntry.legacy);\n }\n\n clone(): AspectEntry {\n return new AspectEntry(this.id, this.legacyEntry.clone());\n }\n\n serialize() {\n return {\n id: this.id.toString(),\n config: this.config,\n data: this.data,\n icon: 'https://static.bit.dev/extensions-icons/default.svg', // TODO @gilad - once you connect the icon here please use this url as the default icon\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["aspect-entry.ts"],"names":["AspectEntry","constructor","id","legacyEntry","legacy","isLegacy","config","__legacy","data","isRemoved","val","transform","newData","newEntry","clone","serialize","toString","icon"],"mappings":";;;;;;;AAAA;AACA;AACA;AAkBO,MAAMA,WAAN,CAAkB;AACvBC,EAAAA,WAAW,CAAQC,EAAR,EAAiCC,WAAjC,EAAkE;AAAA,SAA1DD,EAA0D,GAA1DA,EAA0D;AAAA,SAAjCC,WAAiC,GAAjCA,WAAiC;AAAE;;AAErE,MAANC,MAAM,GAAG;AACX,WAAO,KAAKD,WAAZ;AACD;;AAEW,MAARE,QAAQ,GAAY;AAAA;;AACtB,wBAAI,KAAKC,MAAT,yCAAI,aAAaC,QAAjB,EAA2B,OAAO,IAAP;AAC3B,WAAO,KAAP;AACD;;AAES,MAAND,MAAM,GAAG;AACX,WAAO,KAAKF,MAAL,CAAYE,MAAnB;AACD;;AAES,MAANA,MAAM,CAACA,MAAD,EAAS;AACjB,SAAKF,MAAL,CAAYE,MAAZ,GAAqBA,MAArB;AACD;;AAEO,MAAJE,IAAI,GAA2B;AACjC,WAAO,KAAKJ,MAAL,CAAYI,IAAnB;AACD;;AAEY,MAATC,SAAS,GAAY;AACvB,WAAO,KAAKL,MAAL,CAAYK,SAAnB;AACD,GA1BsB,CA4BvB;;;AACQ,MAAJD,IAAI,CAACE,GAAD,EAA8B;AACpC,SAAKN,MAAL,CAAYI,IAAZ,GAAmBE,GAAnB;AACD;;AAEDC,EAAAA,SAAS,CAACC,OAAD,EAAwC;AAC/C,UAAMC,QAAQ,GAAG,KAAKC,KAAL,EAAjB;AACAD,IAAAA,QAAQ,CAACL,IAAT,GAAgBI,OAAhB;AACA,WAAO,IAAIZ,WAAJ,CAAgB,KAAKE,EAArB,EAAyBW,QAAQ,CAACT,MAAlC,CAAP;AACD;;AAEDU,EAAAA,KAAK,GAAgB;AACnB,WAAO,IAAId,WAAJ,CAAgB,KAAKE,EAArB,EAAyB,KAAKC,WAAL,CAAiBW,KAAjB,EAAzB,CAAP;AACD;;AAEDC,EAAAA,SAAS,GAAG;AACV,WAAO;AACLb,MAAAA,EAAE,EAAE,KAAKA,EAAL,CAAQc,QAAR,EADC;AAELV,MAAAA,MAAM,EAAE,KAAKA,MAFR;AAGLE,MAAAA,IAAI,EAAE,KAAKA,IAHN;AAILS,MAAAA,IAAI,EAAE,qDAJD,CAIwD;;AAJxD,KAAP;AAMD;;AAlDsB","sourcesContent":["/**\n * avoid importing any (non-type) legacy code here. otherwise, PreviewTask will throw cryptic errors\n */\n\nimport type { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\n\nexport type Serializable = {\n toString(): string;\n};\n\nexport type SerializableMap = {\n [key: string]: Serializable;\n};\n\nexport type AspectData = {\n [key: string]: any;\n};\n\nexport type ResolveComponentIdFunc = (id: string) => Promise<ComponentID>;\nexport class AspectEntry {\n constructor(public id: ComponentID, private legacyEntry: ExtensionDataEntry) {}\n\n get legacy() {\n return this.legacyEntry;\n }\n\n get isLegacy(): boolean {\n if (this.config?.__legacy) return true;\n return false;\n }\n\n get config() {\n return this.legacy.config;\n }\n\n set config(config) {\n this.legacy.config = config;\n }\n\n get data(): { [key: string]: any } {\n return this.legacy.data;\n }\n\n get isRemoved(): boolean {\n return this.legacy.isRemoved;\n }\n\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n set data(val: { [key: string]: any }) {\n this.legacy.data = val;\n }\n\n transform(newData: SerializableMap): AspectEntry {\n const newEntry = this.clone();\n newEntry.data = newData;\n return new AspectEntry(this.id, newEntry.legacy);\n }\n\n clone(): AspectEntry {\n return new AspectEntry(this.id, this.legacyEntry.clone());\n }\n\n serialize() {\n return {\n id: this.id.toString(),\n config: this.config,\n data: this.data,\n icon: 'https://static.bit.dev/extensions-icons/default.svg', // TODO @gilad - once you connect the icon here please use this url as the default icon\n };\n }\n}\n"]}
@@ -8,6 +8,10 @@ export declare class AspectList {
8
8
  readonly entries: AspectEntry[];
9
9
  constructor(entries: AspectEntry[]);
10
10
  addEntry(aspectId: ComponentID, data?: SerializableMap): AspectEntry;
11
+ /**
12
+ * transform an aspect list into a new one without the given aspect ids
13
+ */
14
+ withoutEntries(aspectIds: string[]): AspectList;
11
15
  /**
12
16
  * get all ids as strings from the aspect list.
13
17
  */
@@ -39,6 +43,7 @@ export declare class AspectList {
39
43
  };
40
44
  icon: string;
41
45
  }[];
46
+ filter(ids?: string[]): AspectList;
42
47
  toLegacy(): ExtensionDataList;
43
48
  stringIds(): string[];
44
49
  static fromLegacyExtensions(legacyDataList: ExtensionDataList, scope?: string): AspectList;
@@ -9,16 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.AspectList = void 0;
11
11
 
12
- function _lodash() {
13
- const data = require("lodash");
14
-
15
- _lodash = function () {
16
- return data;
17
- };
18
-
19
- return data;
20
- }
21
-
22
12
  function _extensionData() {
23
13
  const data = require("@teambit/legacy/dist/consumer/config/extension-data");
24
14
 
@@ -63,6 +53,15 @@ class AspectList {
63
53
  this.entries.push(entry);
64
54
  return entry;
65
55
  }
56
+ /**
57
+ * transform an aspect list into a new one without the given aspect ids
58
+ */
59
+
60
+
61
+ withoutEntries(aspectIds) {
62
+ const entries = this.entries.filter(entry => !aspectIds.includes(entry.legacy.stringId));
63
+ return new AspectList(entries);
64
+ }
66
65
  /**
67
66
  * get all ids as strings from the aspect list.
68
67
  */
@@ -79,7 +78,7 @@ class AspectList {
79
78
 
80
79
  get(id) {
81
80
  return this.entries.find(entry => {
82
- return entry.legacy.stringId === id;
81
+ return entry.legacy.stringId === id || entry.id.toStringWithoutVersion() === id;
83
82
  });
84
83
  }
85
84
  /**
@@ -117,8 +116,8 @@ class AspectList {
117
116
  toConfigObject() {
118
117
  const res = {};
119
118
  this.entries.forEach(entry => {
120
- if (entry.config && !(0, _lodash().isEmpty)(entry.config)) {
121
- res[entry.id.toString()] = entry.config;
119
+ if (entry.config) {
120
+ res[entry.id.toString()] = (0, _extensionData().removeInternalConfigFields)(entry.config);
122
121
  }
123
122
  });
124
123
  return res;
@@ -129,6 +128,14 @@ class AspectList {
129
128
  return serializedEntries;
130
129
  }
131
130
 
131
+ filter(ids) {
132
+ if (!(ids !== null && ids !== void 0 && ids.length)) return new AspectList(this.entries);
133
+ const entries = this.entries.filter(aspectEntry => {
134
+ return ids === null || ids === void 0 ? void 0 : ids.includes(aspectEntry.id.toStringWithoutVersion());
135
+ });
136
+ return new AspectList(entries);
137
+ }
138
+
132
139
  toLegacy() {
133
140
  const legacyEntries = this.entries.map(entry => entry.legacy);
134
141
  return _extensionData().ExtensionDataList.fromArray(legacyEntries);
@@ -1 +1 @@
1
- {"version":3,"sources":["aspect-list.ts"],"names":["AspectList","constructor","entries","addEntry","aspectId","data","extensionDataEntry","ExtensionDataEntry","undefined","_legacy","entry","AspectEntry","push","ids","list","map","id","toString","get","find","legacy","stringId","ignoreVersion","aspectEntry","isEqual","predicate","pmap","entriesP","Promise","all","toConfigObject","res","forEach","config","serialize","serializedEntries","toLegacy","legacyEntries","ExtensionDataList","fromArray","stringIds","fromLegacyExtensions","legacyDataList","scope","newEntries","getAspectId","extensionId","name","ComponentID","fromString","fromLegacy","Error"],"mappings":"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","sourcesContent":["import { isEmpty } from 'lodash';\nimport { ExtensionDataList, ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\nimport { AspectEntry, SerializableMap } from './aspect-entry';\n\n/**\n * list of aspects, each may have data and artifacts saved per component.\n */\nexport class AspectList {\n constructor(readonly entries: AspectEntry[]) {}\n\n addEntry(aspectId: ComponentID, data: SerializableMap = {}) {\n const extensionDataEntry = new ExtensionDataEntry(undefined, aspectId._legacy, undefined, {}, data);\n const entry = new AspectEntry(aspectId, extensionDataEntry);\n this.entries.push(entry);\n return entry;\n }\n\n /**\n * get all ids as strings from the aspect list.\n */\n get ids(): string[] {\n const list = this.entries.map((entry) => entry.id.toString());\n return list;\n }\n\n /**\n * get an aspect from the list using a serialized ID.\n */\n get(id: string): AspectEntry | undefined {\n return this.entries.find((entry) => {\n return entry.legacy.stringId === id;\n });\n }\n\n /**\n * find aspect by component ID.\n */\n find(id: ComponentID, ignoreVersion = false): AspectEntry | undefined {\n return this.entries.find((aspectEntry) => {\n return id.isEqual(aspectEntry.id, { ignoreVersion });\n });\n }\n\n /**\n * transform an aspect list into a new one.\n */\n map(predicate: (entry: AspectEntry) => AspectEntry) {\n const entries = this.entries.map(predicate);\n return new AspectList(entries);\n }\n\n /**\n * transform an aspect list into a new one.\n */\n async pmap(predicate: (entry: AspectEntry) => Promise<AspectEntry>) {\n const entriesP = this.entries.map(predicate);\n const entries = await Promise.all(entriesP);\n return new AspectList(entries);\n }\n\n toConfigObject() {\n const res = {};\n this.entries.forEach((entry) => {\n if (entry.config && !isEmpty(entry.config)) {\n res[entry.id.toString()] = entry.config;\n }\n });\n return res;\n }\n\n serialize() {\n const serializedEntries = this.entries.map((entry) => entry.serialize());\n return serializedEntries;\n }\n\n toLegacy(): ExtensionDataList {\n const legacyEntries = this.entries.map((entry) => entry.legacy);\n return ExtensionDataList.fromArray(legacyEntries);\n }\n\n stringIds(): string[] {\n const ids = this.entries.map((entry) => entry.id.toString());\n return ids;\n }\n\n static fromLegacyExtensions(legacyDataList: ExtensionDataList, scope?: string): AspectList {\n const newEntries = legacyDataList.map((entry) => {\n return new AspectEntry(getAspectId(entry, scope), entry);\n });\n\n return new AspectList(newEntries);\n }\n}\n\nfunction getAspectId(entry: ExtensionDataEntry, scope?: string) {\n if (!entry.extensionId && entry.name) return ComponentID.fromString(entry.name);\n if (entry.extensionId) return ComponentID.fromLegacy(entry.extensionId, scope);\n throw new Error('aspect cannot be loaded without setting an ID');\n}\n"]}
1
+ {"version":3,"sources":["aspect-list.ts"],"names":["AspectList","constructor","entries","addEntry","aspectId","data","extensionDataEntry","ExtensionDataEntry","undefined","_legacy","entry","AspectEntry","push","withoutEntries","aspectIds","filter","includes","legacy","stringId","ids","list","map","id","toString","get","find","toStringWithoutVersion","ignoreVersion","aspectEntry","isEqual","predicate","pmap","entriesP","Promise","all","toConfigObject","res","forEach","config","serialize","serializedEntries","length","toLegacy","legacyEntries","ExtensionDataList","fromArray","stringIds","fromLegacyExtensions","legacyDataList","scope","newEntries","getAspectId","extensionId","name","ComponentID","fromString","fromLegacy","Error"],"mappings":"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","sourcesContent":["import {\n ExtensionDataList,\n ExtensionDataEntry,\n removeInternalConfigFields,\n} from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { ComponentID } from '@teambit/component-id';\nimport { AspectEntry, SerializableMap } from './aspect-entry';\n\n/**\n * list of aspects, each may have data and artifacts saved per component.\n */\nexport class AspectList {\n constructor(readonly entries: AspectEntry[]) {}\n\n addEntry(aspectId: ComponentID, data: SerializableMap = {}) {\n const extensionDataEntry = new ExtensionDataEntry(undefined, aspectId._legacy, undefined, {}, data);\n const entry = new AspectEntry(aspectId, extensionDataEntry);\n this.entries.push(entry);\n return entry;\n }\n\n /**\n * transform an aspect list into a new one without the given aspect ids\n */\n withoutEntries(aspectIds: string[]): AspectList {\n const entries = this.entries.filter((entry) => !aspectIds.includes(entry.legacy.stringId));\n return new AspectList(entries);\n }\n\n /**\n * get all ids as strings from the aspect list.\n */\n get ids(): string[] {\n const list = this.entries.map((entry) => entry.id.toString());\n return list;\n }\n\n /**\n * get an aspect from the list using a serialized ID.\n */\n get(id: string): AspectEntry | undefined {\n return this.entries.find((entry) => {\n return entry.legacy.stringId === id || entry.id.toStringWithoutVersion() === id;\n });\n }\n\n /**\n * find aspect by component ID.\n */\n find(id: ComponentID, ignoreVersion = false): AspectEntry | undefined {\n return this.entries.find((aspectEntry) => {\n return id.isEqual(aspectEntry.id, { ignoreVersion });\n });\n }\n\n /**\n * transform an aspect list into a new one.\n */\n map(predicate: (entry: AspectEntry) => AspectEntry) {\n const entries = this.entries.map(predicate);\n return new AspectList(entries);\n }\n\n /**\n * transform an aspect list into a new one.\n */\n async pmap(predicate: (entry: AspectEntry) => Promise<AspectEntry>) {\n const entriesP = this.entries.map(predicate);\n const entries = await Promise.all(entriesP);\n return new AspectList(entries);\n }\n\n toConfigObject() {\n const res = {};\n this.entries.forEach((entry) => {\n if (entry.config) {\n res[entry.id.toString()] = removeInternalConfigFields(entry.config);\n }\n });\n return res;\n }\n\n serialize() {\n const serializedEntries = this.entries.map((entry) => entry.serialize());\n return serializedEntries;\n }\n\n filter(ids?: string[]): AspectList {\n if (!ids?.length) return new AspectList(this.entries);\n const entries = this.entries.filter((aspectEntry) => {\n return ids?.includes(aspectEntry.id.toStringWithoutVersion());\n });\n return new AspectList(entries);\n }\n\n toLegacy(): ExtensionDataList {\n const legacyEntries = this.entries.map((entry) => entry.legacy);\n return ExtensionDataList.fromArray(legacyEntries);\n }\n\n stringIds(): string[] {\n const ids = this.entries.map((entry) => entry.id.toString());\n return ids;\n }\n\n static fromLegacyExtensions(legacyDataList: ExtensionDataList, scope?: string): AspectList {\n const newEntries = legacyDataList.map((entry) => {\n return new AspectEntry(getAspectId(entry, scope), entry);\n });\n\n return new AspectList(newEntries);\n }\n}\n\nfunction getAspectId(entry: ExtensionDataEntry, scope?: string) {\n if (!entry.extensionId && entry.name) return ComponentID.fromString(entry.name);\n if (entry.extensionId) return ComponentID.fromLegacy(entry.extensionId, scope);\n throw new Error('aspect cannot be loaded without setting an ID');\n}\n"]}
@@ -55,7 +55,7 @@ export interface ComponentFactory {
55
55
  * load aspects.
56
56
  * returns the loaded aspect ids including the loaded versions.
57
57
  */
58
- loadAspects: (ids: string[], throwOnError: boolean) => Promise<string[]>;
58
+ loadAspects: (ids: string[], throwOnError?: boolean, neededFor?: ComponentID) => Promise<string[]>;
59
59
  /**
60
60
  * Resolve dirs for aspects
61
61
  */
@@ -16,7 +16,9 @@ export declare function componentSchema(componentExtension: ComponentMain): {
16
16
  headTag: (component: Component) => import(".").TagProps | undefined;
17
17
  latest: (component: Component) => string | undefined;
18
18
  tags: (component: any) => any;
19
- aspects: (component: Component) => {
19
+ aspects: (component: Component, { include }: {
20
+ include?: string[] | undefined;
21
+ }) => {
20
22
  id: string;
21
23
  config: {
22
24
  [key: string]: any;
@@ -135,7 +135,7 @@ function componentSchema(componentExtension) {
135
135
  # list of component releases.
136
136
  tags: [Tag]!
137
137
 
138
- aspects: [Aspect]
138
+ aspects(include: [String]): [Aspect]
139
139
  }
140
140
 
141
141
  type Aspect {
@@ -200,9 +200,10 @@ function componentSchema(componentExtension) {
200
200
  // graphql doesn't support map types
201
201
  return component.tags.toArray().map(tag => tag.toObject());
202
202
  },
203
- aspects: component => {
204
- const aspects = component.state.aspects.serialize();
205
- return aspects;
203
+ aspects: (component, {
204
+ include
205
+ }) => {
206
+ return component.state.aspects.filter(include).serialize();
206
207
  }
207
208
  },
208
209
  ComponentHost: {
@@ -1 +1 @@
1
- {"version":3,"sources":["component.graphql.ts"],"names":["componentSchema","componentExtension","typeDefs","resolvers","JSONObject","GraphQLJSONObject","Component","id","component","toObject","displayName","fs","state","filesystem","files","map","file","relative","getFile","path","maybeFile","find","undefined","contents","toString","mainFile","_consumer","headTag","latest","tags","toArray","tag","aspects","serialize","ComponentHost","get","host","componentId","resolveComponentId","error","snaps","getLogs","list","filter","listInvalid","invalidComps","err","errorName","name","errorMessage","message","Query","getHost","componentExt"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMO,SAASA,eAAT,CAAyBC,kBAAzB,EAA4D;AACjE,SAAO;AACLC,IAAAA,QAAQ,EAAE,0BAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzHS;AA0HLC,IAAAA,SAAS,EAAE;AACTC,MAAAA,UAAU,EAAEC,oCADH;AAETC,MAAAA,SAAS,EAAE;AACTC,QAAAA,EAAE,EAAGC,SAAD,IAA0BA,SAAS,CAACD,EAAV,CAAaE,QAAb,EADrB;AAETC,QAAAA,WAAW,EAAGF,SAAD,IAA0BA,SAAS,CAACE,WAFxC;AAGTC,QAAAA,EAAE,EAAGH,SAAD,IAA0B;AAC5B,iBAAOA,SAAS,CAACI,KAAV,CAAgBC,UAAhB,CAA2BC,KAA3B,CAAiCC,GAAjC,CAAsCC,IAAD,IAAUA,IAAI,CAACC,QAApD,CAAP;AACD,SALQ;AAMTC,QAAAA,OAAO,EAAE,CAACV,SAAD,EAAuB;AAAEW,UAAAA;AAAF,SAAvB,KAAsD;AAC7D,gBAAMC,SAAS,GAAGZ,SAAS,CAACI,KAAV,CAAgBC,UAAhB,CAA2BC,KAA3B,CAAiCO,IAAjC,CACfL,IAAD,IAAU,mCAAqBA,IAAI,CAACC,QAA1B,MAAwCE,IADlC,CAAlB;AAGA,cAAI,CAACC,SAAL,EAAgB,OAAOE,SAAP;AAChB,iBAAOF,SAAS,CAACG,QAAV,CAAmBC,QAAnB,CAA4B,OAA5B,CAAP;AACD,SAZQ;AAaTC,QAAAA,QAAQ,EAAGjB,SAAD,IAA0B;AAClC,iBAAOA,SAAS,CAACI,KAAV,CAAgBc,SAAhB,CAA0BD,QAAjC;AACD,SAfQ;AAgBTE,QAAAA,OAAO,EAAGnB,SAAD;AAAA;;AAAA,uCAA0BA,SAAS,CAACmB,OAApC,uDAA0B,mBAAmBlB,QAAnB,EAA1B;AAAA,SAhBA;AAiBTmB,QAAAA,MAAM,EAAGpB,SAAD,IAA0BA,SAAS,CAACoB,MAjBnC;AAkBTC,QAAAA,IAAI,EAAGrB,SAAD,IAAe;AACnB;AACA,iBAAOA,SAAS,CAACqB,IAAV,CAAeC,OAAf,GAAyBf,GAAzB,CAA8BgB,GAAD,IAASA,GAAG,CAACtB,QAAJ,EAAtC,CAAP;AACD,SArBQ;AAsBTuB,QAAAA,OAAO,EAAGxB,SAAD,IAA0B;AACjC,gBAAMwB,OAAO,GAAGxB,SAAS,CAACI,KAAV,CAAgBoB,OAAhB,CAAwBC,SAAxB,EAAhB;AACA,iBAAOD,OAAP;AACD;AAzBQ,OAFF;AA6BTE,MAAAA,aAAa,EAAE;AACbC,QAAAA,GAAG,EAAE,OAAOC,IAAP,EAA+B;AAAE7B,UAAAA;AAAF,SAA/B,KAA0D;AAC7D,cAAI;AACF,kBAAM8B,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwB/B,EAAxB,CAA1B;AACA,kBAAMC,SAAS,GAAG,MAAM4B,IAAI,CAACD,GAAL,CAASE,WAAT,CAAxB;AACA,mBAAO7B,SAAP;AACD,WAJD,CAIE,OAAO+B,KAAP,EAAmB;AACnB,mBAAO,IAAP;AACD;AACF,SATY;AAUbC,QAAAA,KAAK,EAAE,OAAOJ,IAAP,EAA+B;AAAE7B,UAAAA;AAAF,SAA/B,KAA0D;AAC/D,gBAAM8B,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwB/B,EAAxB,CAA1B,CAD+D,CAE/D;;AACA,iBAAO6B,IAAI,CAACK,OAAL,CAAaJ,WAAb,CAAP;AACD,SAdY;AAebK,QAAAA,IAAI,EAAE,OAAON,IAAP,EAA+BO,MAA/B,KAA8E;AAClF,iBAAOP,IAAI,CAACM,IAAL,CAAUC,MAAV,CAAP;AACD,SAjBY;AAkBbC,QAAAA,WAAW,EAAE,MAAOR,IAAP,IAAkC;AAC7C,gBAAMS,YAAY,GAAG,MAAMT,IAAI,CAACQ,WAAL,EAA3B;AACA,iBAAOC,YAAY,CAAC9B,GAAb,CAAiB,CAAC;AAAER,YAAAA,EAAF;AAAMuC,YAAAA;AAAN,WAAD,MAAkB;AACxCvC,YAAAA,EADwC;AAExCwC,YAAAA,SAAS,EAAED,GAAG,CAACE,IAFyB;AAGxCC,YAAAA,YAAY,EAAEH,GAAG,CAACI,OAAJ,GAAc,0BAAUJ,GAAG,CAACI,OAAd,CAAd,GAAuCJ,GAAG,CAACE;AAHjB,WAAlB,CAAjB,CAAP;AAKD,SAzBY;AA0BbzC,QAAAA,EAAE,EAAE,MAAO6B,IAAP,IAAkC;AACpC,iBAAOA,IAAI,CAACY,IAAZ;AACD,SA5BY;AA6BbA,QAAAA,IAAI,EAAE,MAAOZ,IAAP,IAAkC;AACtC,iBAAOA,IAAI,CAACY,IAAZ;AACD;AA/BY,OA7BN;AA8DTG,MAAAA,KAAK,EAAE;AACLC,QAAAA,OAAO,EAAE,CAACC,YAAD,EAA8B;AAAE9C,UAAAA;AAAF,SAA9B,KAAyD;AAChE,iBAAON,kBAAkB,CAACmD,OAAnB,CAA2B7C,EAA3B,CAAP;AACD;AAHI;AA9DE;AA1HN,GAAP;AA+LD","sourcesContent":["import stripAnsi from 'strip-ansi';\nimport gql from 'graphql-tag';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\n\nimport { Component } from './component';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentMain } from './component.main.runtime';\n\nexport function componentSchema(componentExtension: ComponentMain) {\n return {\n typeDefs: gql`\n scalar JSON\n scalar JSONObject\n\n type ComponentID {\n name: String!\n version: String\n scope: String\n }\n\n type Tag {\n # semver assigned to the tag.\n version: String!\n\n # tag hash.\n hash: String!\n }\n\n type Snap {\n # hash of the snapshot.\n hash: String!\n\n # time of the snapshot.\n timestamp: String!\n\n # parents of the snap\n parents: [Snap]!\n\n # snapper\n author: Author!\n\n # snapshot message\n message: String\n }\n\n type LogEntry {\n message: String!\n username: String\n email: String\n date: String\n hash: String!\n tag: String\n # id: String!\n }\n\n type Author {\n # display name of the snapper.\n displayName: String!\n\n # author of the snapper.\n email: String!\n }\n\n type Component {\n # id of the component.\n id: ComponentID!\n\n # head snap of the component.\n head: Snap\n\n # head tag of the component.\n headTag: Tag\n\n # list of all relative component paths.\n fs: [String]\n\n # relative path to the main file of the component\n mainFile: String\n\n # return specific file contents by relative file path.\n getFile(path: String): String\n\n # latest version of the component.\n latest: String\n\n # display name of the component\n displayName: String!\n\n # component buildStatus\n buildStatus: String\n\n # list of component releases.\n tags: [Tag]!\n\n aspects: [Aspect]\n }\n\n type Aspect {\n id: String!\n icon: String\n config: JSONObject\n data: JSONObject\n }\n\n type InvalidComponent {\n id: ComponentID!\n errorName: String!\n errorMessage: String!\n }\n\n type ComponentHost {\n id: ID!\n name: String!\n\n # load a component.\n get(id: String!, withState: Boolean): Component\n\n # list components\n list(offset: Int, limit: Int): [Component]!\n\n # list invalid components and their errors\n listInvalid: [InvalidComponent]!\n\n # get component logs(snaps) by component id\n snaps(id: String!): [LogEntry]!\n }\n\n type Query {\n getHost(id: String): ComponentHost\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n Component: {\n id: (component: Component) => component.id.toObject(),\n displayName: (component: Component) => component.displayName,\n fs: (component: Component) => {\n return component.state.filesystem.files.map((file) => file.relative);\n },\n getFile: (component: Component, { path }: { path: string }) => {\n const maybeFile = component.state.filesystem.files.find(\n (file) => pathNormalizeToLinux(file.relative) === path\n );\n if (!maybeFile) return undefined;\n return maybeFile.contents.toString('utf-8');\n },\n mainFile: (component: Component) => {\n return component.state._consumer.mainFile;\n },\n headTag: (component: Component) => component.headTag?.toObject(),\n latest: (component: Component) => component.latest,\n tags: (component) => {\n // graphql doesn't support map types\n return component.tags.toArray().map((tag) => tag.toObject());\n },\n aspects: (component: Component) => {\n const aspects = component.state.aspects.serialize();\n return aspects;\n },\n },\n ComponentHost: {\n get: async (host: ComponentFactory, { id }: { id: string }) => {\n try {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n return component;\n } catch (error: any) {\n return null;\n }\n },\n snaps: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n // return (await host.getLogs(componentId)).map(log => ({...log, id: log.hash}))\n return host.getLogs(componentId);\n },\n list: async (host: ComponentFactory, filter?: { offset: number; limit: number }) => {\n return host.list(filter);\n },\n listInvalid: async (host: ComponentFactory) => {\n const invalidComps = await host.listInvalid();\n return invalidComps.map(({ id, err }) => ({\n id,\n errorName: err.name,\n errorMessage: err.message ? stripAnsi(err.message) : err.name,\n }));\n },\n id: async (host: ComponentFactory) => {\n return host.name;\n },\n name: async (host: ComponentFactory) => {\n return host.name;\n },\n },\n Query: {\n getHost: (componentExt: ComponentMain, { id }: { id: string }) => {\n return componentExtension.getHost(id);\n },\n },\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["component.graphql.ts"],"names":["componentSchema","componentExtension","typeDefs","resolvers","JSONObject","GraphQLJSONObject","Component","id","component","toObject","displayName","fs","state","filesystem","files","map","file","relative","getFile","path","maybeFile","find","undefined","contents","toString","mainFile","_consumer","headTag","latest","tags","toArray","tag","aspects","include","filter","serialize","ComponentHost","get","host","componentId","resolveComponentId","error","snaps","getLogs","list","listInvalid","invalidComps","err","errorName","name","errorMessage","message","Query","getHost","componentExt"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMO,SAASA,eAAT,CAAyBC,kBAAzB,EAA4D;AACjE,SAAO;AACLC,IAAAA,QAAQ,EAAE,0BAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzHS;AA0HLC,IAAAA,SAAS,EAAE;AACTC,MAAAA,UAAU,EAAEC,oCADH;AAETC,MAAAA,SAAS,EAAE;AACTC,QAAAA,EAAE,EAAGC,SAAD,IAA0BA,SAAS,CAACD,EAAV,CAAaE,QAAb,EADrB;AAETC,QAAAA,WAAW,EAAGF,SAAD,IAA0BA,SAAS,CAACE,WAFxC;AAGTC,QAAAA,EAAE,EAAGH,SAAD,IAA0B;AAC5B,iBAAOA,SAAS,CAACI,KAAV,CAAgBC,UAAhB,CAA2BC,KAA3B,CAAiCC,GAAjC,CAAsCC,IAAD,IAAUA,IAAI,CAACC,QAApD,CAAP;AACD,SALQ;AAMTC,QAAAA,OAAO,EAAE,CAACV,SAAD,EAAuB;AAAEW,UAAAA;AAAF,SAAvB,KAAsD;AAC7D,gBAAMC,SAAS,GAAGZ,SAAS,CAACI,KAAV,CAAgBC,UAAhB,CAA2BC,KAA3B,CAAiCO,IAAjC,CACfL,IAAD,IAAU,mCAAqBA,IAAI,CAACC,QAA1B,MAAwCE,IADlC,CAAlB;AAGA,cAAI,CAACC,SAAL,EAAgB,OAAOE,SAAP;AAChB,iBAAOF,SAAS,CAACG,QAAV,CAAmBC,QAAnB,CAA4B,OAA5B,CAAP;AACD,SAZQ;AAaTC,QAAAA,QAAQ,EAAGjB,SAAD,IAA0B;AAClC,iBAAOA,SAAS,CAACI,KAAV,CAAgBc,SAAhB,CAA0BD,QAAjC;AACD,SAfQ;AAgBTE,QAAAA,OAAO,EAAGnB,SAAD;AAAA;;AAAA,uCAA0BA,SAAS,CAACmB,OAApC,uDAA0B,mBAAmBlB,QAAnB,EAA1B;AAAA,SAhBA;AAiBTmB,QAAAA,MAAM,EAAGpB,SAAD,IAA0BA,SAAS,CAACoB,MAjBnC;AAkBTC,QAAAA,IAAI,EAAGrB,SAAD,IAAe;AACnB;AACA,iBAAOA,SAAS,CAACqB,IAAV,CAAeC,OAAf,GAAyBf,GAAzB,CAA8BgB,GAAD,IAASA,GAAG,CAACtB,QAAJ,EAAtC,CAAP;AACD,SArBQ;AAsBTuB,QAAAA,OAAO,EAAE,CAACxB,SAAD,EAAuB;AAAEyB,UAAAA;AAAF,SAAvB,KAA+D;AACtE,iBAAOzB,SAAS,CAACI,KAAV,CAAgBoB,OAAhB,CAAwBE,MAAxB,CAA+BD,OAA/B,EAAwCE,SAAxC,EAAP;AACD;AAxBQ,OAFF;AA4BTC,MAAAA,aAAa,EAAE;AACbC,QAAAA,GAAG,EAAE,OAAOC,IAAP,EAA+B;AAAE/B,UAAAA;AAAF,SAA/B,KAA0D;AAC7D,cAAI;AACF,kBAAMgC,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwBjC,EAAxB,CAA1B;AACA,kBAAMC,SAAS,GAAG,MAAM8B,IAAI,CAACD,GAAL,CAASE,WAAT,CAAxB;AACA,mBAAO/B,SAAP;AACD,WAJD,CAIE,OAAOiC,KAAP,EAAmB;AACnB,mBAAO,IAAP;AACD;AACF,SATY;AAUbC,QAAAA,KAAK,EAAE,OAAOJ,IAAP,EAA+B;AAAE/B,UAAAA;AAAF,SAA/B,KAA0D;AAC/D,gBAAMgC,WAAW,GAAG,MAAMD,IAAI,CAACE,kBAAL,CAAwBjC,EAAxB,CAA1B,CAD+D,CAE/D;;AACA,iBAAO+B,IAAI,CAACK,OAAL,CAAaJ,WAAb,CAAP;AACD,SAdY;AAebK,QAAAA,IAAI,EAAE,OAAON,IAAP,EAA+BJ,MAA/B,KAA8E;AAClF,iBAAOI,IAAI,CAACM,IAAL,CAAUV,MAAV,CAAP;AACD,SAjBY;AAkBbW,QAAAA,WAAW,EAAE,MAAOP,IAAP,IAAkC;AAC7C,gBAAMQ,YAAY,GAAG,MAAMR,IAAI,CAACO,WAAL,EAA3B;AACA,iBAAOC,YAAY,CAAC/B,GAAb,CAAiB,CAAC;AAAER,YAAAA,EAAF;AAAMwC,YAAAA;AAAN,WAAD,MAAkB;AACxCxC,YAAAA,EADwC;AAExCyC,YAAAA,SAAS,EAAED,GAAG,CAACE,IAFyB;AAGxCC,YAAAA,YAAY,EAAEH,GAAG,CAACI,OAAJ,GAAc,0BAAUJ,GAAG,CAACI,OAAd,CAAd,GAAuCJ,GAAG,CAACE;AAHjB,WAAlB,CAAjB,CAAP;AAKD,SAzBY;AA0Bb1C,QAAAA,EAAE,EAAE,MAAO+B,IAAP,IAAkC;AACpC,iBAAOA,IAAI,CAACW,IAAZ;AACD,SA5BY;AA6BbA,QAAAA,IAAI,EAAE,MAAOX,IAAP,IAAkC;AACtC,iBAAOA,IAAI,CAACW,IAAZ;AACD;AA/BY,OA5BN;AA6DTG,MAAAA,KAAK,EAAE;AACLC,QAAAA,OAAO,EAAE,CAACC,YAAD,EAA8B;AAAE/C,UAAAA;AAAF,SAA9B,KAAyD;AAChE,iBAAON,kBAAkB,CAACoD,OAAnB,CAA2B9C,EAA3B,CAAP;AACD;AAHI;AA7DE;AA1HN,GAAP;AA8LD","sourcesContent":["import stripAnsi from 'strip-ansi';\nimport gql from 'graphql-tag';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\n\nimport { Component } from './component';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentMain } from './component.main.runtime';\n\nexport function componentSchema(componentExtension: ComponentMain) {\n return {\n typeDefs: gql`\n scalar JSON\n scalar JSONObject\n\n type ComponentID {\n name: String!\n version: String\n scope: String\n }\n\n type Tag {\n # semver assigned to the tag.\n version: String!\n\n # tag hash.\n hash: String!\n }\n\n type Snap {\n # hash of the snapshot.\n hash: String!\n\n # time of the snapshot.\n timestamp: String!\n\n # parents of the snap\n parents: [Snap]!\n\n # snapper\n author: Author!\n\n # snapshot message\n message: String\n }\n\n type LogEntry {\n message: String!\n username: String\n email: String\n date: String\n hash: String!\n tag: String\n # id: String!\n }\n\n type Author {\n # display name of the snapper.\n displayName: String!\n\n # author of the snapper.\n email: String!\n }\n\n type Component {\n # id of the component.\n id: ComponentID!\n\n # head snap of the component.\n head: Snap\n\n # head tag of the component.\n headTag: Tag\n\n # list of all relative component paths.\n fs: [String]\n\n # relative path to the main file of the component\n mainFile: String\n\n # return specific file contents by relative file path.\n getFile(path: String): String\n\n # latest version of the component.\n latest: String\n\n # display name of the component\n displayName: String!\n\n # component buildStatus\n buildStatus: String\n\n # list of component releases.\n tags: [Tag]!\n\n aspects(include: [String]): [Aspect]\n }\n\n type Aspect {\n id: String!\n icon: String\n config: JSONObject\n data: JSONObject\n }\n\n type InvalidComponent {\n id: ComponentID!\n errorName: String!\n errorMessage: String!\n }\n\n type ComponentHost {\n id: ID!\n name: String!\n\n # load a component.\n get(id: String!, withState: Boolean): Component\n\n # list components\n list(offset: Int, limit: Int): [Component]!\n\n # list invalid components and their errors\n listInvalid: [InvalidComponent]!\n\n # get component logs(snaps) by component id\n snaps(id: String!): [LogEntry]!\n }\n\n type Query {\n getHost(id: String): ComponentHost\n }\n `,\n resolvers: {\n JSONObject: GraphQLJSONObject,\n Component: {\n id: (component: Component) => component.id.toObject(),\n displayName: (component: Component) => component.displayName,\n fs: (component: Component) => {\n return component.state.filesystem.files.map((file) => file.relative);\n },\n getFile: (component: Component, { path }: { path: string }) => {\n const maybeFile = component.state.filesystem.files.find(\n (file) => pathNormalizeToLinux(file.relative) === path\n );\n if (!maybeFile) return undefined;\n return maybeFile.contents.toString('utf-8');\n },\n mainFile: (component: Component) => {\n return component.state._consumer.mainFile;\n },\n headTag: (component: Component) => component.headTag?.toObject(),\n latest: (component: Component) => component.latest,\n tags: (component) => {\n // graphql doesn't support map types\n return component.tags.toArray().map((tag) => tag.toObject());\n },\n aspects: (component: Component, { include }: { include?: string[] }) => {\n return component.state.aspects.filter(include).serialize();\n },\n },\n ComponentHost: {\n get: async (host: ComponentFactory, { id }: { id: string }) => {\n try {\n const componentId = await host.resolveComponentId(id);\n const component = await host.get(componentId);\n return component;\n } catch (error: any) {\n return null;\n }\n },\n snaps: async (host: ComponentFactory, { id }: { id: string }) => {\n const componentId = await host.resolveComponentId(id);\n // return (await host.getLogs(componentId)).map(log => ({...log, id: log.hash}))\n return host.getLogs(componentId);\n },\n list: async (host: ComponentFactory, filter?: { offset: number; limit: number }) => {\n return host.list(filter);\n },\n listInvalid: async (host: ComponentFactory) => {\n const invalidComps = await host.listInvalid();\n return invalidComps.map(({ id, err }) => ({\n id,\n errorName: err.name,\n errorMessage: err.message ? stripAnsi(err.message) : err.name,\n }));\n },\n id: async (host: ComponentFactory) => {\n return host.name;\n },\n name: async (host: ComponentFactory) => {\n return host.name;\n },\n },\n Query: {\n getHost: (componentExt: ComponentMain, { id }: { id: string }) => {\n return componentExtension.getHost(id);\n },\n },\n },\n };\n}\n"]}
@@ -35,7 +35,17 @@ export declare class ComponentMain {
35
35
  * register a new component host.
36
36
  */
37
37
  registerHost(host: ComponentFactory): this;
38
- createAspectList(legacyExtensionDataList: ExtensionDataList, scope?: string): AspectList;
38
+ /**
39
+ * important! avoid using this method.
40
+ * seems like this method was written to work around a very specific case when the ComponentID of the aspects are
41
+ * not available. in case of new components, to get the ComponentID, the workspace-aspect is needed to get the
42
+ * default-scope. when this method is called from the scope, there is no way to get the real component-id.
43
+ * instead, this method asks for the "scope", which when called by the scope-aspect is the current scope-name.
44
+ * it may or may not be the real scope-name of the aspect.
45
+ * to fix this possibly incorrect scope-name, the `workspace.resolveScopeAspectListIds()` checks whether the
46
+ * scope-name is the same as scope.name, and if so, resolve it to the correct scope-name.
47
+ */
48
+ createAspectListFromLegacy(legacyExtensionDataList: ExtensionDataList, scope?: string): AspectList;
39
49
  createAspectListFromEntries(entries: AspectEntry[]): AspectList;
40
50
  registerRoute(routes: RegisteredComponentRoute[]): this;
41
51
  /**
@@ -165,8 +165,19 @@ class ComponentMain {
165
165
  this.hostSlot.register(host);
166
166
  return this;
167
167
  }
168
+ /**
169
+ * important! avoid using this method.
170
+ * seems like this method was written to work around a very specific case when the ComponentID of the aspects are
171
+ * not available. in case of new components, to get the ComponentID, the workspace-aspect is needed to get the
172
+ * default-scope. when this method is called from the scope, there is no way to get the real component-id.
173
+ * instead, this method asks for the "scope", which when called by the scope-aspect is the current scope-name.
174
+ * it may or may not be the real scope-name of the aspect.
175
+ * to fix this possibly incorrect scope-name, the `workspace.resolveScopeAspectListIds()` checks whether the
176
+ * scope-name is the same as scope.name, and if so, resolve it to the correct scope-name.
177
+ */
178
+
168
179
 
169
- createAspectList(legacyExtensionDataList, scope) {
180
+ createAspectListFromLegacy(legacyExtensionDataList, scope) {
170
181
  return _aspectList().AspectList.fromLegacyExtensions(legacyExtensionDataList, scope);
171
182
  }
172
183
 
@@ -1 +1 @@
1
- {"version":3,"sources":["component.main.runtime.ts"],"names":["ComponentMain","constructor","hostSlot","express","showFragmentSlot","registerHost","host","register","createAspectList","legacyExtensionDataList","scope","AspectList","fromLegacyExtensions","createAspectListFromEntries","entries","registerRoute","routes","routeEntries","map","route","ComponentRoute","flattenRoutes","setHostPriority","id","get","HostNotFound","_priorHost","getHost","getPriorHost","getRoute","routeName","toString","hosts","values","priorityHost","find","priority","getShowFragments","fragments","isHost","name","registerShowFragments","showFragments","provider","graphql","cli","configAspect","config","componentExtension","workspaceConfig","isLegacy","type","unregister","ShowCmd","NameFragment","MainFileFragment","IDFragment","ScopeFragment","FilesFragment","ExtensionsFragment","Slot","withType","MainRuntime","GraphqlAspect","ExpressAspect","CLIAspect","ConfigAspect","ComponentAspect","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ExpressAspect, ExpressMain, Route } from '@teambit/express';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ConfigMain } from '@teambit/config';\nimport { ComponentID } from '@teambit/component-id';\nimport { flatten, orderBy } from 'lodash';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentAspect } from './component.aspect';\nimport { componentSchema } from './component.graphql';\nimport { ComponentRoute } from './component.route';\nimport { AspectList } from './aspect-list';\nimport { HostNotFound } from './exceptions';\nimport { AspectEntry } from './aspect-entry';\nimport {\n ShowCmd,\n ShowFragment,\n NameFragment,\n MainFileFragment,\n IDFragment,\n ScopeFragment,\n FilesFragment,\n ExtensionsFragment,\n} from './show';\nimport { RegisteredComponentRoute } from '.';\n\nexport type ComponentHostSlot = SlotRegistry<ComponentFactory>;\n\nexport type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;\n\nexport class ComponentMain {\n constructor(\n /**\n * slot for component hosts to register.\n */\n private hostSlot: ComponentHostSlot,\n\n /**\n * Express Extension\n */\n private express: ExpressMain,\n\n private showFragmentSlot: ShowFragmentSlot\n ) {}\n\n /**\n * register a new component host.\n */\n registerHost(host: ComponentFactory) {\n this.hostSlot.register(host);\n return this;\n }\n\n createAspectList(legacyExtensionDataList: ExtensionDataList, scope?: string) {\n return AspectList.fromLegacyExtensions(legacyExtensionDataList, scope);\n }\n\n createAspectListFromEntries(entries: AspectEntry[]) {\n return new AspectList(entries);\n }\n\n registerRoute(routes: RegisteredComponentRoute[]) {\n const routeEntries = routes.map((route: RegisteredComponentRoute) => {\n return new ComponentRoute(route, this);\n });\n\n const flattenRoutes = (flatten(routeEntries)) as any as Route[];\n\n this.express.register(flattenRoutes);\n return this;\n }\n\n /**\n * set the prior host.\n */\n setHostPriority(id: string) {\n const host = this.hostSlot.get(id);\n if (!host) {\n throw new HostNotFound(id);\n }\n\n this._priorHost = host;\n return this;\n }\n\n /**\n * get component host by extension ID.\n */\n getHost(id?: string): ComponentFactory {\n if (id) {\n const host = this.hostSlot.get(id);\n if (!host) throw new HostNotFound(id);\n return host;\n }\n\n return this.getPriorHost();\n }\n\n getRoute(id: ComponentID, routeName: string) {\n return `/api/${id.toString()}/~aspect/${routeName}`;\n }\n\n /**\n * get the prior host.\n */\n private getPriorHost() {\n if (this._priorHost) return this._priorHost;\n\n const hosts = this.hostSlot.values();\n const priorityHost = hosts.find((host) => host.priority);\n return priorityHost || hosts[0];\n }\n\n getShowFragments() {\n const fragments = orderBy(flatten(this.showFragmentSlot.values()), ['weight', ['asc']]);\n return fragments;\n }\n\n isHost(name: string) {\n return !!this.hostSlot.get(name);\n }\n\n /**\n * register a show fragment to display further information in the `bit show` command.\n */\n registerShowFragments(showFragments: ShowFragment[]) {\n this.showFragmentSlot.register(showFragments);\n return this;\n }\n\n private _priorHost: ComponentFactory | undefined;\n\n static slots = [Slot.withType<ComponentFactory>(), Slot.withType<Route[]>(), Slot.withType<ShowFragment[]>()];\n\n static runtime = MainRuntime;\n static dependencies = [GraphqlAspect, ExpressAspect, CLIAspect, ConfigAspect];\n\n static async provider(\n [graphql, express, cli, configAspect]: [GraphqlMain, ExpressMain, CLIMain, ConfigMain],\n config,\n [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]\n ) {\n const componentExtension = new ComponentMain(hostSlot, express, showFragmentSlot);\n\n if ((configAspect.workspaceConfig && !configAspect.workspaceConfig.isLegacy) || configAspect.type === 'scope') {\n cli.unregister('show');\n cli.register(new ShowCmd(componentExtension));\n }\n\n componentExtension.registerShowFragments([\n new NameFragment(),\n new MainFileFragment(),\n new IDFragment(),\n new ScopeFragment(),\n new FilesFragment(),\n new ExtensionsFragment(),\n ]);\n graphql.register(componentSchema(componentExtension));\n\n return componentExtension;\n }\n}\n\nComponentAspect.addRuntime(ComponentMain);\n"]}
1
+ {"version":3,"sources":["component.main.runtime.ts"],"names":["ComponentMain","constructor","hostSlot","express","showFragmentSlot","registerHost","host","register","createAspectListFromLegacy","legacyExtensionDataList","scope","AspectList","fromLegacyExtensions","createAspectListFromEntries","entries","registerRoute","routes","routeEntries","map","route","ComponentRoute","flattenRoutes","setHostPriority","id","get","HostNotFound","_priorHost","getHost","getPriorHost","getRoute","routeName","toString","hosts","values","priorityHost","find","priority","getShowFragments","fragments","isHost","name","registerShowFragments","showFragments","provider","graphql","cli","configAspect","config","componentExtension","workspaceConfig","isLegacy","type","unregister","ShowCmd","NameFragment","MainFileFragment","IDFragment","ScopeFragment","FilesFragment","ExtensionsFragment","Slot","withType","MainRuntime","GraphqlAspect","ExpressAspect","CLIAspect","ConfigAspect","ComponentAspect","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ExpressAspect, ExpressMain, Route } from '@teambit/express';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ConfigMain } from '@teambit/config';\nimport { ComponentID } from '@teambit/component-id';\nimport { flatten, orderBy } from 'lodash';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config';\nimport { ComponentFactory } from './component-factory';\nimport { ComponentAspect } from './component.aspect';\nimport { componentSchema } from './component.graphql';\nimport { ComponentRoute } from './component.route';\nimport { AspectList } from './aspect-list';\nimport { HostNotFound } from './exceptions';\nimport { AspectEntry } from './aspect-entry';\nimport {\n ShowCmd,\n ShowFragment,\n NameFragment,\n MainFileFragment,\n IDFragment,\n ScopeFragment,\n FilesFragment,\n ExtensionsFragment,\n} from './show';\nimport { RegisteredComponentRoute } from '.';\n\nexport type ComponentHostSlot = SlotRegistry<ComponentFactory>;\n\nexport type ShowFragmentSlot = SlotRegistry<ShowFragment[]>;\n\nexport class ComponentMain {\n constructor(\n /**\n * slot for component hosts to register.\n */\n private hostSlot: ComponentHostSlot,\n\n /**\n * Express Extension\n */\n private express: ExpressMain,\n\n private showFragmentSlot: ShowFragmentSlot\n ) {}\n\n /**\n * register a new component host.\n */\n registerHost(host: ComponentFactory) {\n this.hostSlot.register(host);\n return this;\n }\n\n /**\n * important! avoid using this method.\n * seems like this method was written to work around a very specific case when the ComponentID of the aspects are\n * not available. in case of new components, to get the ComponentID, the workspace-aspect is needed to get the\n * default-scope. when this method is called from the scope, there is no way to get the real component-id.\n * instead, this method asks for the \"scope\", which when called by the scope-aspect is the current scope-name.\n * it may or may not be the real scope-name of the aspect.\n * to fix this possibly incorrect scope-name, the `workspace.resolveScopeAspectListIds()` checks whether the\n * scope-name is the same as scope.name, and if so, resolve it to the correct scope-name.\n */\n createAspectListFromLegacy(legacyExtensionDataList: ExtensionDataList, scope?: string) {\n return AspectList.fromLegacyExtensions(legacyExtensionDataList, scope);\n }\n\n createAspectListFromEntries(entries: AspectEntry[]) {\n return new AspectList(entries);\n }\n\n registerRoute(routes: RegisteredComponentRoute[]) {\n const routeEntries = routes.map((route: RegisteredComponentRoute) => {\n return new ComponentRoute(route, this);\n });\n\n const flattenRoutes = flatten(routeEntries) as any as Route[];\n\n this.express.register(flattenRoutes);\n return this;\n }\n\n /**\n * set the prior host.\n */\n setHostPriority(id: string) {\n const host = this.hostSlot.get(id);\n if (!host) {\n throw new HostNotFound(id);\n }\n\n this._priorHost = host;\n return this;\n }\n\n /**\n * get component host by extension ID.\n */\n getHost(id?: string): ComponentFactory {\n if (id) {\n const host = this.hostSlot.get(id);\n if (!host) throw new HostNotFound(id);\n return host;\n }\n\n return this.getPriorHost();\n }\n\n getRoute(id: ComponentID, routeName: string) {\n return `/api/${id.toString()}/~aspect/${routeName}`;\n }\n\n /**\n * get the prior host.\n */\n private getPriorHost() {\n if (this._priorHost) return this._priorHost;\n\n const hosts = this.hostSlot.values();\n const priorityHost = hosts.find((host) => host.priority);\n return priorityHost || hosts[0];\n }\n\n getShowFragments() {\n const fragments = orderBy(flatten(this.showFragmentSlot.values()), ['weight', ['asc']]);\n return fragments;\n }\n\n isHost(name: string) {\n return !!this.hostSlot.get(name);\n }\n\n /**\n * register a show fragment to display further information in the `bit show` command.\n */\n registerShowFragments(showFragments: ShowFragment[]) {\n this.showFragmentSlot.register(showFragments);\n return this;\n }\n\n private _priorHost: ComponentFactory | undefined;\n\n static slots = [Slot.withType<ComponentFactory>(), Slot.withType<Route[]>(), Slot.withType<ShowFragment[]>()];\n\n static runtime = MainRuntime;\n static dependencies = [GraphqlAspect, ExpressAspect, CLIAspect, ConfigAspect];\n\n static async provider(\n [graphql, express, cli, configAspect]: [GraphqlMain, ExpressMain, CLIMain, ConfigMain],\n config,\n [hostSlot, showFragmentSlot]: [ComponentHostSlot, ShowFragmentSlot]\n ) {\n const componentExtension = new ComponentMain(hostSlot, express, showFragmentSlot);\n\n if ((configAspect.workspaceConfig && !configAspect.workspaceConfig.isLegacy) || configAspect.type === 'scope') {\n cli.unregister('show');\n cli.register(new ShowCmd(componentExtension));\n }\n\n componentExtension.registerShowFragments([\n new NameFragment(),\n new MainFileFragment(),\n new IDFragment(),\n new ScopeFragment(),\n new FilesFragment(),\n new ExtensionsFragment(),\n ]);\n graphql.register(componentSchema(componentExtension));\n\n return componentExtension;\n }\n}\n\nComponentAspect.addRuntime(ComponentMain);\n"]}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { default as ComponentFS } from './component-fs';
6
6
  export type { default as ComponentConfig } from './config';
7
7
  export type { ComponentFactory } from './component-factory';
8
8
  export type { AspectList } from './aspect-list';
9
- export { AspectEntry, AspectData } from './aspect-entry';
9
+ export { AspectEntry, AspectData, ResolveComponentIdFunc } from './aspect-entry';
10
10
  export { Snap, SnapProps } from './snap/snap';
11
11
  export type { Author } from './snap/author';
12
12
  export { Tag, TagProps } from './tag/tag';
package/dist/index.js CHANGED
@@ -95,6 +95,12 @@ Object.defineProperty(exports, "RegisteredComponentRoute", {
95
95
  return _component3().RegisteredComponentRoute;
96
96
  }
97
97
  });
98
+ Object.defineProperty(exports, "ResolveComponentIdFunc", {
99
+ enumerable: true,
100
+ get: function () {
101
+ return _aspectEntry().ResolveComponentIdFunc;
102
+ }
103
+ });
98
104
  Object.defineProperty(exports, "Section", {
99
105
  enumerable: true,
100
106
  get: function () {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["ComponentAspect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAnBA;AACA;AAGA;AACA;AAeA;AACA;eAEeA,4B","sourcesContent":["import { ComponentAspect } from './component.aspect';\n\nexport { useComponentHost } from './host';\nexport { Component, InvalidComponent } from './component';\nexport { ComponentID } from '@teambit/component-id';\nexport { default as ComponentFS } from './component-fs';\nexport type { default as ComponentConfig } from './config';\nexport type { ComponentFactory } from './component-factory';\nexport type { AspectList } from './aspect-list';\nexport { AspectEntry, AspectData } from './aspect-entry';\n// TODO: check why it's not working when using the index in snap dir like this:\n// export { Snap, Author } from './snap';\nexport { Snap, SnapProps } from './snap/snap';\nexport type { Author } from './snap/author';\n// TODO: check why it's not working when using the index in tag dir like this:\n// export { Tag } from './tag';\nexport { Tag, TagProps } from './tag/tag';\nexport { State } from './state';\nexport type { Hash } from './hash';\nexport { TagMap } from './tag-map';\nexport { ComponentMap } from './component-map';\nexport type { ComponentMain } from './component.main.runtime';\nexport type { ComponentUI } from './component.ui.runtime';\nexport { Section } from './section';\nexport { ComponentContext } from './ui/context/component-context';\nexport { ConsumePlugin } from './ui/menu';\nexport {RegisteredComponentRoute, ComponentUrlParams} from './component.route';\nexport { ComponentModel, ComponentModelProps } from './ui/component-model';\nexport type { ShowFragment, ShowRow } from './show';\nexport { default as Config } from './config';\n// export { AspectList } from './aspect-list';\n// export { AspectEntry } from './aspect-entry';\nexport { ComponentAspect };\nexport default ComponentAspect;\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["ComponentAspect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAnBA;AACA;AAGA;AACA;AAeA;AACA;eAEeA,4B","sourcesContent":["import { ComponentAspect } from './component.aspect';\n\nexport { useComponentHost } from './host';\nexport { Component, InvalidComponent } from './component';\nexport { ComponentID } from '@teambit/component-id';\nexport { default as ComponentFS } from './component-fs';\nexport type { default as ComponentConfig } from './config';\nexport type { ComponentFactory } from './component-factory';\nexport type { AspectList } from './aspect-list';\nexport { AspectEntry, AspectData, ResolveComponentIdFunc } from './aspect-entry';\n// TODO: check why it's not working when using the index in snap dir like this:\n// export { Snap, Author } from './snap';\nexport { Snap, SnapProps } from './snap/snap';\nexport type { Author } from './snap/author';\n// TODO: check why it's not working when using the index in tag dir like this:\n// export { Tag } from './tag';\nexport { Tag, TagProps } from './tag/tag';\nexport { State } from './state';\nexport type { Hash } from './hash';\nexport { TagMap } from './tag-map';\nexport { ComponentMap } from './component-map';\nexport type { ComponentMain } from './component.main.runtime';\nexport type { ComponentUI } from './component.ui.runtime';\nexport { Section } from './section';\nexport { ComponentContext } from './ui/context/component-context';\nexport { ConsumePlugin } from './ui/menu';\nexport { RegisteredComponentRoute, ComponentUrlParams } from './component.route';\nexport { ComponentModel, ComponentModelProps } from './ui/component-model';\nexport type { ShowFragment, ShowRow } from './show';\nexport { default as Config } from './config';\n// export { AspectList } from './aspect-list';\n// export { AspectEntry } from './aspect-entry';\nexport { ComponentAspect };\nexport default ComponentAspect;\n"]}
@@ -1,7 +1,9 @@
1
+ import { ComponentDescriptor } from '@teambit/component-descriptor';
1
2
  import { ComponentModel } from './component-model';
2
3
  import { ComponentError } from './component-error';
3
4
  /** provides data to component ui page, making sure both variables and return value are safely typed and memoized */
4
5
  export declare function useComponentQuery(componentId: string, host: string): {
6
+ componentDescriptor: ComponentDescriptor | undefined;
5
7
  component: ComponentModel | undefined;
6
8
  error: ComponentError | undefined;
7
9
  };
@@ -57,6 +57,16 @@ function _componentId() {
57
57
  return data;
58
58
  }
59
59
 
60
+ function _componentDescriptor() {
61
+ const data = require("@teambit/component-descriptor");
62
+
63
+ _componentDescriptor = function () {
64
+ return data;
65
+ };
66
+
67
+ return data;
68
+ }
69
+
60
70
  function _componentModel() {
61
71
  const data = require("./component-model");
62
72
 
@@ -93,6 +103,10 @@ const componentFields = (0, _client().gql)`
93
103
  id {
94
104
  ...componentIdFields
95
105
  }
106
+ aspects(include: ["teambit.preview/preview"]) {
107
+ id
108
+ data
109
+ }
96
110
  packageName
97
111
  elementsUrl
98
112
  description
@@ -115,6 +129,7 @@ const componentFields = (0, _client().gql)`
115
129
  id
116
130
  icon
117
131
  }
132
+
118
133
  preview {
119
134
  includesEnvTemplate
120
135
  }
@@ -264,7 +279,22 @@ function useComponentQuery(componentId, host) {
264
279
  }, []);
265
280
  const rawComponent = data === null || data === void 0 ? void 0 : (_data$getHost = data.getHost) === null || _data$getHost === void 0 ? void 0 : _data$getHost.get;
266
281
  return (0, _react().useMemo)(() => {
282
+ var _rawComponent$aspects;
283
+
284
+ const aspectList = {
285
+ entries: rawComponent === null || rawComponent === void 0 ? void 0 : (_rawComponent$aspects = rawComponent.aspects) === null || _rawComponent$aspects === void 0 ? void 0 : _rawComponent$aspects.map(aspect => ({
286
+ aspectId: aspect.id,
287
+ aspectData: aspect.data
288
+ }))
289
+ };
290
+
291
+ const id = rawComponent && _componentId().ComponentID.fromObject(rawComponent.id);
292
+
267
293
  return {
294
+ componentDescriptor: id ? _componentDescriptor().ComponentDescriptor.fromObject({
295
+ id: id.toString(),
296
+ aspectList
297
+ }) : undefined,
268
298
  component: rawComponent ? _componentModel().ComponentModel.from(_objectSpread(_objectSpread({}, rawComponent), {}, {
269
299
  host
270
300
  })) : undefined,
@@ -1 +1 @@
1
- {"version":3,"sources":["use-component-query.ts"],"names":["componentIdFields","componentFields","GET_COMPONENT","SUB_SUBSCRIPTION_ADDED","SUB_COMPONENT_CHANGED","SUB_COMPONENT_REMOVED","useComponentQuery","componentId","host","idRef","current","data","error","loading","subscribeToMore","variables","id","extensionId","unsubAddition","document","updateQuery","prev","subscriptionData","prevComponent","getHost","get","addedComponent","componentAdded","component","name","unsubChanges","updatedComponent","componentChanged","isUpdated","ComponentID","isEqualObj","unsubRemoval","removedIds","componentRemoved","componentIds","length","isRemoved","some","removedId","rawComponent","ComponentModel","from","undefined","ComponentError","message"],"mappings":"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","sourcesContent":["import { useMemo, useEffect, useRef } from 'react';\nimport { gql } from '@apollo/client';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\n\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\n\nconst componentIdFields = gql`\n fragment componentIdFields on ComponentID {\n name\n version\n scope\n }\n`;\n\nconst componentFields = gql`\n fragment componentFields on Component {\n id {\n ...componentIdFields\n }\n packageName\n elementsUrl\n description\n labels\n displayName\n latest\n server {\n env\n url\n }\n buildStatus\n compositions {\n identifier\n displayName\n }\n tags {\n version\n }\n env {\n id\n icon\n }\n preview {\n includesEnvTemplate\n }\n }\n ${componentIdFields}\n`;\n\nconst GET_COMPONENT = gql`\n query Component($id: String!, $extensionId: String!) {\n getHost(id: $extensionId) {\n id # used for GQL caching\n get(id: $id) {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n ...componentIdFields\n }\n }\n }\n ${componentIdFields}\n`;\n\n/** provides data to component ui page, making sure both variables and return value are safely typed and memoized */\nexport function useComponentQuery(componentId: string, host: string) {\n const idRef = useRef(componentId);\n idRef.current = componentId;\n const { data, error, loading, subscribeToMore } = useDataQuery(GET_COMPONENT, {\n variables: { id: componentId, extensionId: host },\n });\n\n useEffect(() => {\n // @TODO @Kutner fix subscription for scope\n if (host !== 'teambit.workspace/workspace') {\n return () => {};\n }\n\n const unsubAddition = subscribeToMore({\n document: SUB_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const prevComponent = prev?.getHost?.get;\n const addedComponent = subscriptionData?.data?.componentAdded?.component;\n\n if (!addedComponent || prevComponent) return prev;\n\n if (idRef.current === addedComponent.id.name) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: addedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubChanges = subscribeToMore({\n document: SUB_COMPONENT_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const updatedComponent = subscriptionData?.data?.componentChanged?.component;\n\n const isUpdated = updatedComponent && ComponentID.isEqualObj(prevComponent?.id, updatedComponent?.id);\n\n if (isUpdated) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: updatedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubRemoval = subscribeToMore({\n document: SUB_COMPONENT_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const removedIds: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!prevComponent || !removedIds?.length) return prev;\n\n const isRemoved = removedIds.some((removedId) => ComponentID.isEqualObj(removedId, prevComponent.id));\n\n if (isRemoved) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: null,\n },\n };\n }\n\n return prev;\n },\n });\n\n return () => {\n unsubChanges();\n unsubAddition();\n unsubRemoval();\n };\n }, []);\n\n const rawComponent = data?.getHost?.get;\n\n return useMemo(() => {\n return {\n component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,\n // eslint-disable-next-line\n error: error\n ? new ComponentError(500, error.message)\n : !rawComponent && !loading\n ? new ComponentError(404)\n : undefined,\n };\n }, [rawComponent, host, error]);\n}\n"]}
1
+ {"version":3,"sources":["use-component-query.ts"],"names":["componentIdFields","componentFields","GET_COMPONENT","SUB_SUBSCRIPTION_ADDED","SUB_COMPONENT_CHANGED","SUB_COMPONENT_REMOVED","useComponentQuery","componentId","host","idRef","current","data","error","loading","subscribeToMore","variables","id","extensionId","unsubAddition","document","updateQuery","prev","subscriptionData","prevComponent","getHost","get","addedComponent","componentAdded","component","name","unsubChanges","updatedComponent","componentChanged","isUpdated","ComponentID","isEqualObj","unsubRemoval","removedIds","componentRemoved","componentIds","length","isRemoved","some","removedId","rawComponent","aspectList","entries","aspects","map","aspect","aspectId","aspectData","fromObject","componentDescriptor","ComponentDescriptor","toString","undefined","ComponentModel","from","ComponentError","message"],"mappings":"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","sourcesContent":["import { useMemo, useEffect, useRef } from 'react';\nimport { gql } from '@apollo/client';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\nimport { ComponentDescriptor } from '@teambit/component-descriptor';\n\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\n\nconst componentIdFields = gql`\n fragment componentIdFields on ComponentID {\n name\n version\n scope\n }\n`;\n\nconst componentFields = gql`\n fragment componentFields on Component {\n id {\n ...componentIdFields\n }\n aspects(include: [\"teambit.preview/preview\"]) {\n id\n data\n }\n packageName\n elementsUrl\n description\n labels\n displayName\n latest\n server {\n env\n url\n }\n buildStatus\n compositions {\n identifier\n displayName\n }\n tags {\n version\n }\n env {\n id\n icon\n }\n\n preview {\n includesEnvTemplate\n }\n }\n ${componentIdFields}\n`;\n\nconst GET_COMPONENT = gql`\n query Component($id: String!, $extensionId: String!) {\n getHost(id: $extensionId) {\n id # used for GQL caching\n get(id: $id) {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_SUBSCRIPTION_ADDED = gql`\n subscription OnComponentAdded {\n componentAdded {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_CHANGED = gql`\n subscription OnComponentChanged {\n componentChanged {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_REMOVED = gql`\n subscription OnComponentRemoved {\n componentRemoved {\n componentIds {\n ...componentIdFields\n }\n }\n }\n ${componentIdFields}\n`;\n\n/** provides data to component ui page, making sure both variables and return value are safely typed and memoized */\nexport function useComponentQuery(componentId: string, host: string) {\n const idRef = useRef(componentId);\n idRef.current = componentId;\n const { data, error, loading, subscribeToMore } = useDataQuery(GET_COMPONENT, {\n variables: { id: componentId, extensionId: host },\n });\n\n useEffect(() => {\n // @TODO @Kutner fix subscription for scope\n if (host !== 'teambit.workspace/workspace') {\n return () => {};\n }\n\n const unsubAddition = subscribeToMore({\n document: SUB_SUBSCRIPTION_ADDED,\n updateQuery: (prev, { subscriptionData }) => {\n const prevComponent = prev?.getHost?.get;\n const addedComponent = subscriptionData?.data?.componentAdded?.component;\n\n if (!addedComponent || prevComponent) return prev;\n\n if (idRef.current === addedComponent.id.name) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: addedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubChanges = subscribeToMore({\n document: SUB_COMPONENT_CHANGED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const updatedComponent = subscriptionData?.data?.componentChanged?.component;\n\n const isUpdated = updatedComponent && ComponentID.isEqualObj(prevComponent?.id, updatedComponent?.id);\n\n if (isUpdated) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: updatedComponent,\n },\n };\n }\n\n return prev;\n },\n });\n\n const unsubRemoval = subscribeToMore({\n document: SUB_COMPONENT_REMOVED,\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev;\n\n const prevComponent = prev?.getHost?.get;\n const removedIds: ComponentIdObj[] | undefined = subscriptionData?.data?.componentRemoved?.componentIds;\n if (!prevComponent || !removedIds?.length) return prev;\n\n const isRemoved = removedIds.some((removedId) => ComponentID.isEqualObj(removedId, prevComponent.id));\n\n if (isRemoved) {\n return {\n ...prev,\n getHost: {\n ...prev.getHost,\n get: null,\n },\n };\n }\n\n return prev;\n },\n });\n\n return () => {\n unsubChanges();\n unsubAddition();\n unsubRemoval();\n };\n }, []);\n\n const rawComponent = data?.getHost?.get;\n return useMemo(() => {\n const aspectList = {\n entries: rawComponent?.aspects?.map((aspect) => ({ aspectId: aspect.id, aspectData: aspect.data })),\n };\n const id = rawComponent && ComponentID.fromObject(rawComponent.id);\n return {\n componentDescriptor: id ? ComponentDescriptor.fromObject({ id: id.toString(), aspectList }) : undefined,\n component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,\n // eslint-disable-next-line\n error: error\n ? new ComponentError(500, error.message)\n : !rawComponent && !loading\n ? new ComponentError(404)\n : undefined,\n };\n }, [rawComponent, host, error]);\n}\n"]}
@@ -1,8 +1,10 @@
1
1
  import { ComponentID } from '@teambit/component-id';
2
+ import { ComponentDescriptor } from '@teambit/component-descriptor';
2
3
  import { ComponentModel } from './component-model';
3
4
  import { ComponentError } from './component-error';
4
5
  export declare type Component = {
5
6
  component?: ComponentModel;
6
7
  error?: ComponentError;
8
+ componentDescriptor?: ComponentDescriptor;
7
9
  };
8
10
  export declare function useComponent(host: string, id?: ComponentID): Component;
@@ -1 +1 @@
1
- {"version":3,"sources":["use-component.tsx"],"names":["useComponent","host","id","params","componentId","query","version","get","undefined","targetId","toString","ignoreVersion","TypeError","withVersion","includes"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAWO,SAASA,YAAT,CAAsBC,IAAtB,EAAoCC,EAApC,EAAiE;AACtE,QAAM;AACJC,IAAAA,MAAM,EAAE;AAAEC,MAAAA;AAAF;AADJ,MAEF,sCAFJ;AAGA,QAAMC,KAAK,GAAG,4CAAd;AACA,QAAMC,OAAO,GAAGD,KAAK,CAACE,GAAN,CAAU,SAAV,KAAwBC,SAAxC;AAEA,QAAMC,QAAQ,GAAG,CAAAP,EAAE,SAAF,IAAAA,EAAE,WAAF,YAAAA,EAAE,CAAEQ,QAAJ,CAAa;AAAEC,IAAAA,aAAa,EAAE;AAAjB,GAAb,MAAyCP,WAA1D;AACA,MAAI,CAACK,QAAL,EAAe,MAAM,IAAIG,SAAJ,CAAc,uCAAd,CAAN;AAEf,SAAO,4CAAkBC,WAAW,CAACJ,QAAD,EAAWH,OAAX,CAA7B,EAAkDL,IAAlD,CAAP;AACD;;AAED,SAASY,WAAT,CAAqBX,EAArB,EAAiCI,OAAjC,EAAmD;AACjD,MAAI,CAACA,OAAL,EAAc,OAAOJ,EAAP;AACd,MAAIA,EAAE,CAACY,QAAH,CAAY,GAAZ,CAAJ,EAAsB,OAAOZ,EAAP;AACtB,SAAQ,GAAEA,EAAG,IAAGI,OAAQ,EAAxB;AACD","sourcesContent":["import { useRouteMatch } from 'react-router-dom';\nimport { ComponentID } from '@teambit/component-id';\nimport { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\nimport { useComponentQuery } from './use-component-query';\n\nexport type Component = {\n component?: ComponentModel;\n error?: ComponentError;\n};\n\ntype ComponentRoute = {\n componentId?: string;\n};\n\nexport function useComponent(host: string, id?: ComponentID): Component {\n const {\n params: { componentId },\n } = useRouteMatch<ComponentRoute>();\n const query = useQuery();\n const version = query.get('version') || undefined;\n\n const targetId = id?.toString({ ignoreVersion: true }) || componentId;\n if (!targetId) throw new TypeError('useComponent received no component id');\n\n return useComponentQuery(withVersion(targetId, version), host);\n}\n\nfunction withVersion(id: string, version?: string) {\n if (!version) return id;\n if (id.includes('@')) return id;\n return `${id}@${version}`;\n}\n"]}
1
+ {"version":3,"sources":["use-component.tsx"],"names":["useComponent","host","id","params","componentId","query","version","get","undefined","targetId","toString","ignoreVersion","TypeError","withVersion","includes"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAYO,SAASA,YAAT,CAAsBC,IAAtB,EAAoCC,EAApC,EAAiE;AACtE,QAAM;AACJC,IAAAA,MAAM,EAAE;AAAEC,MAAAA;AAAF;AADJ,MAEF,sCAFJ;AAGA,QAAMC,KAAK,GAAG,4CAAd;AACA,QAAMC,OAAO,GAAGD,KAAK,CAACE,GAAN,CAAU,SAAV,KAAwBC,SAAxC;AAEA,QAAMC,QAAQ,GAAG,CAAAP,EAAE,SAAF,IAAAA,EAAE,WAAF,YAAAA,EAAE,CAAEQ,QAAJ,CAAa;AAAEC,IAAAA,aAAa,EAAE;AAAjB,GAAb,MAAyCP,WAA1D;AACA,MAAI,CAACK,QAAL,EAAe,MAAM,IAAIG,SAAJ,CAAc,uCAAd,CAAN;AACf,SAAO,4CAAkBC,WAAW,CAACJ,QAAD,EAAWH,OAAX,CAA7B,EAAkDL,IAAlD,CAAP;AACD;;AAED,SAASY,WAAT,CAAqBX,EAArB,EAAiCI,OAAjC,EAAmD;AACjD,MAAI,CAACA,OAAL,EAAc,OAAOJ,EAAP;AACd,MAAIA,EAAE,CAACY,QAAH,CAAY,GAAZ,CAAJ,EAAsB,OAAOZ,EAAP;AACtB,SAAQ,GAAEA,EAAG,IAAGI,OAAQ,EAAxB;AACD","sourcesContent":["import { useRouteMatch } from 'react-router-dom';\nimport { ComponentID } from '@teambit/component-id';\nimport { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';\nimport { ComponentDescriptor } from '@teambit/component-descriptor';\nimport { ComponentModel } from './component-model';\nimport { ComponentError } from './component-error';\nimport { useComponentQuery } from './use-component-query';\n\nexport type Component = {\n component?: ComponentModel;\n error?: ComponentError;\n componentDescriptor?: ComponentDescriptor;\n};\n\ntype ComponentRoute = {\n componentId?: string;\n};\n\nexport function useComponent(host: string, id?: ComponentID): Component {\n const {\n params: { componentId },\n } = useRouteMatch<ComponentRoute>();\n const query = useQuery();\n const version = query.get('version') || undefined;\n\n const targetId = id?.toString({ ignoreVersion: true }) || componentId;\n if (!targetId) throw new TypeError('useComponent received no component id');\n return useComponentQuery(withVersion(targetId, version), host);\n}\n\nfunction withVersion(id: string, version?: string) {\n if (!version) return id;\n if (id.includes('@')) return id;\n return `${id}@${version}`;\n}\n"]}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@teambit/component",
3
- "version": "0.0.648",
3
+ "version": "0.0.652",
4
4
  "homepage": "https://bit.dev/teambit/component/component",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "component",
9
- "version": "0.0.648"
9
+ "version": "0.0.652"
10
10
  },
11
11
  "dependencies": {
12
- "lodash": "4.17.21",
13
12
  "@teambit/any-fs": "0.0.5",
14
13
  "minimatch": "3.0.4",
15
14
  "@teambit/harmony": "0.2.11",
16
15
  "graphql-tag": "2.12.1",
17
16
  "graphql-type-json": "0.3.2",
18
17
  "strip-ansi": "6.0.0",
18
+ "lodash": "4.17.21",
19
19
  "semver": "7.3.4",
20
20
  "copy-to-clipboard": "3.3.1",
21
21
  "react-router-dom": "5.2.0",
@@ -28,56 +28,57 @@
28
28
  "@teambit/documenter.ui.separator": "4.1.1",
29
29
  "@teambit/base-ui.routing.routing-provider": "1.0.0",
30
30
  "@teambit/component-id": "0.0.401",
31
- "@teambit/ui-foundation.ui.menu-widget-icon": "0.0.487",
32
- "@teambit/aspect-loader": "0.0.648",
31
+ "@teambit/ui-foundation.ui.menu-widget-icon": "0.0.488",
32
+ "@teambit/aspect-loader": "0.0.652",
33
33
  "@teambit/legacy-bit-id": "0.0.398",
34
- "@teambit/toolbox.string.capitalize": "0.0.482",
35
- "@teambit/cli": "0.0.442",
36
- "@teambit/config": "0.0.455",
37
- "@teambit/express": "0.0.536",
38
- "@teambit/graphql": "0.0.648",
34
+ "@teambit/toolbox.string.capitalize": "0.0.483",
35
+ "@teambit/cli": "0.0.445",
36
+ "@teambit/config": "0.0.458",
37
+ "@teambit/express": "0.0.539",
38
+ "@teambit/graphql": "0.0.652",
39
39
  "@teambit/bit-error": "0.0.394",
40
- "@teambit/command-bar": "0.0.648",
41
- "@teambit/preview": "0.0.648",
42
- "@teambit/pubsub": "0.0.648",
43
- "@teambit/ui-foundation.ui.is-browser": "0.0.485",
44
- "@teambit/ui-foundation.ui.main-dropdown": "0.0.485",
45
- "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.487",
46
- "@teambit/ui-foundation.ui.use-box.menu": "0.0.109",
47
- "@teambit/ui": "0.0.648",
40
+ "@teambit/command-bar": "0.0.652",
41
+ "@teambit/preview": "0.0.652",
42
+ "@teambit/pubsub": "0.0.652",
43
+ "@teambit/ui-foundation.ui.is-browser": "0.0.486",
44
+ "@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
45
+ "@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
46
+ "@teambit/ui-foundation.ui.use-box.menu": "0.0.110",
47
+ "@teambit/ui": "0.0.652",
48
48
  "@teambit/component-issues": "0.0.46",
49
- "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.486",
49
+ "@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
50
50
  "@teambit/cli-table": "0.0.33",
51
- "@teambit/ui-foundation.ui.react-router.use-query": "0.0.485",
51
+ "@teambit/component-descriptor": "0.0.3",
52
+ "@teambit/ui-foundation.ui.react-router.use-query": "0.0.486",
52
53
  "@teambit/design.ui.empty-box": "0.0.353",
53
- "@teambit/harmony.ui.aspect-box": "0.0.485",
54
+ "@teambit/harmony.ui.aspect-box": "0.0.486",
54
55
  "@teambit/design.ui.pages.not-found": "0.0.353",
55
56
  "@teambit/design.ui.pages.server-error": "0.0.353",
56
- "@teambit/compositions": "0.0.648",
57
- "@teambit/deprecation": "0.0.648",
58
- "@teambit/envs": "0.0.648",
59
- "@teambit/component.ui.version-dropdown": "0.0.491",
60
- "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.109",
61
- "@teambit/ui-foundation.ui.react-router.extend-path": "0.0.485"
57
+ "@teambit/compositions": "0.0.652",
58
+ "@teambit/deprecation": "0.0.652",
59
+ "@teambit/envs": "0.0.652",
60
+ "@teambit/component.ui.version-dropdown": "0.0.492",
61
+ "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.110",
62
+ "@teambit/ui-foundation.ui.react-router.extend-path": "0.0.486"
62
63
  },
63
64
  "devDependencies": {
64
- "@types/lodash": "4.14.165",
65
65
  "@types/react": "^17.0.8",
66
66
  "@types/minimatch": "3.0.4",
67
+ "@types/lodash": "4.14.165",
67
68
  "@types/semver": "7.3.4",
68
69
  "@types/react-router-dom": "5.1.7",
69
70
  "@types/lodash.flatten": "4.4.6",
70
71
  "@types/classnames": "2.2.11",
71
- "@types/mocha": "5.2.7",
72
+ "@types/mocha": "9.1.0",
72
73
  "@types/testing-library__jest-dom": "5.9.5",
73
74
  "@types/jest": "^26.0.0",
74
75
  "@types/react-dom": "^17.0.5",
75
76
  "@types/node": "12.20.4",
76
- "@teambit/component.aspect-docs.component": "0.0.131"
77
+ "@teambit/component.aspect-docs.component": "0.0.132"
77
78
  },
78
79
  "peerDependencies": {
79
80
  "@apollo/client": "^3.0.0",
80
- "@teambit/legacy": "1.0.220",
81
+ "@teambit/legacy": "1.0.223",
81
82
  "react-dom": "^16.8.0 || ^17.0.0",
82
83
  "react": "^16.8.0 || ^17.0.0"
83
84
  },
@@ -95,7 +96,7 @@
95
96
  },
96
97
  "devDependencies": {
97
98
  "@teambit/legacy": "-",
98
- "@types/mocha": "5.2.7",
99
+ "@types/mocha": "9.1.0",
99
100
  "@types/testing-library__jest-dom": "5.9.5",
100
101
  "@types/jest": "^26.0.0",
101
102
  "@types/react-dom": "^17.0.5",
@@ -105,7 +106,7 @@
105
106
  "react": "-"
106
107
  },
107
108
  "peerDependencies": {
108
- "@teambit/legacy": "1.0.220",
109
+ "@teambit/legacy": "1.0.223",
109
110
  "react-dom": "^16.8.0 || ^17.0.0",
110
111
  "react": "^16.8.0 || ^17.0.0"
111
112
  }
@@ -2,6 +2,7 @@ import { useMemo, useEffect, useRef } from 'react';
2
2
  import { gql } from '@apollo/client';
3
3
  import { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';
4
4
  import { ComponentID, ComponentIdObj } from '@teambit/component-id';
5
+ import { ComponentDescriptor } from '@teambit/component-descriptor';
5
6
 
6
7
  import { ComponentModel } from './component-model';
7
8
  import { ComponentError } from './component-error';
@@ -19,6 +20,10 @@ const componentFields = gql`
19
20
  id {
20
21
  ...componentIdFields
21
22
  }
23
+ aspects(include: ["teambit.preview/preview"]) {
24
+ id
25
+ data
26
+ }
22
27
  packageName
23
28
  elementsUrl
24
29
  description
@@ -41,6 +46,7 @@ const componentFields = gql`
41
46
  id
42
47
  icon
43
48
  }
49
+
44
50
  preview {
45
51
  includesEnvTemplate
46
52
  }
@@ -186,9 +192,13 @@ export function useComponentQuery(componentId: string, host: string) {
186
192
  }, []);
187
193
 
188
194
  const rawComponent = data?.getHost?.get;
189
-
190
195
  return useMemo(() => {
196
+ const aspectList = {
197
+ entries: rawComponent?.aspects?.map((aspect) => ({ aspectId: aspect.id, aspectData: aspect.data })),
198
+ };
199
+ const id = rawComponent && ComponentID.fromObject(rawComponent.id);
191
200
  return {
201
+ componentDescriptor: id ? ComponentDescriptor.fromObject({ id: id.toString(), aspectList }) : undefined,
192
202
  component: rawComponent ? ComponentModel.from({ ...rawComponent, host }) : undefined,
193
203
  // eslint-disable-next-line
194
204
  error: error
@@ -1,6 +1,7 @@
1
1
  import { useRouteMatch } from 'react-router-dom';
2
2
  import { ComponentID } from '@teambit/component-id';
3
3
  import { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';
4
+ import { ComponentDescriptor } from '@teambit/component-descriptor';
4
5
  import { ComponentModel } from './component-model';
5
6
  import { ComponentError } from './component-error';
6
7
  import { useComponentQuery } from './use-component-query';
@@ -8,6 +9,7 @@ import { useComponentQuery } from './use-component-query';
8
9
  export type Component = {
9
10
  component?: ComponentModel;
10
11
  error?: ComponentError;
12
+ componentDescriptor?: ComponentDescriptor;
11
13
  };
12
14
 
13
15
  type ComponentRoute = {
@@ -23,7 +25,6 @@ export function useComponent(host: string, id?: ComponentID): Component {
23
25
 
24
26
  const targetId = id?.toString({ ignoreVersion: true }) || componentId;
25
27
  if (!targetId) throw new TypeError('useComponent received no component id');
26
-
27
28
  return useComponentQuery(withVersion(targetId, version), host);
28
29
  }
29
30