@teambit/component 0.0.663 → 0.0.666
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.
- package/{__preview-1646147591351.js → __preview-1646364092464.js} +1 -1
- package/dist/component.d.ts +5 -0
- package/dist/component.graphql.d.ts +5 -0
- package/dist/component.graphql.js +7 -1
- package/dist/component.graphql.js.map +1 -1
- package/dist/component.js +34 -0
- package/dist/component.js.map +1 -1
- package/dist/ui/component-model/component-model.d.ts +5 -2
- package/dist/ui/component-model/component-model.js +5 -3
- package/dist/ui/component-model/component-model.js.map +1 -1
- package/dist/ui/menu/menu.js +36 -14
- package/dist/ui/menu/menu.js.map +1 -1
- package/dist/ui/use-component-query.js +11 -4
- package/dist/ui/use-component-query.js.map +1 -1
- package/package-tar/teambit-component-0.0.666.tgz +0 -0
- package/package.json +20 -19
- package/ui/component-model/component-model.ts +8 -3
- package/ui/menu/menu.tsx +22 -15
- package/ui/use-component-query.ts +11 -4
- package/package-tar/teambit-component-0.0.663.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.
|
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_component@0.0.666/dist/component.docs.mdx')]
|
package/dist/component.d.ts
CHANGED
|
@@ -79,6 +79,11 @@ export declare class Component {
|
|
|
79
79
|
get buildStatus(): BuildStatus;
|
|
80
80
|
get headTag(): Tag | undefined;
|
|
81
81
|
get latest(): string | undefined;
|
|
82
|
+
getLogs(filter?: {
|
|
83
|
+
type?: string;
|
|
84
|
+
offset?: number;
|
|
85
|
+
limit?: number;
|
|
86
|
+
}): Promise<import("@teambit/legacy/scopes/component/legacy-component-log").LegacyComponentLog[]>;
|
|
82
87
|
stringify(): string;
|
|
83
88
|
/**
|
|
84
89
|
* record component changes in the `Scope`.
|
|
@@ -28,6 +28,11 @@ export declare function componentSchema(componentExtension: ComponentMain): {
|
|
|
28
28
|
};
|
|
29
29
|
icon: string;
|
|
30
30
|
}[];
|
|
31
|
+
logs: (component: Component, filter?: {
|
|
32
|
+
type?: string | undefined;
|
|
33
|
+
offset?: number | undefined;
|
|
34
|
+
limit?: number | undefined;
|
|
35
|
+
} | undefined) => Promise<import("@teambit/legacy/scopes/component/legacy-component-log").LegacyComponentLog[]>;
|
|
31
36
|
};
|
|
32
37
|
ComponentHost: {
|
|
33
38
|
get: (host: ComponentFactory, { id }: {
|
|
@@ -135,6 +135,9 @@ function componentSchema(componentExtension) {
|
|
|
135
135
|
# list of component releases.
|
|
136
136
|
tags: [Tag]!
|
|
137
137
|
|
|
138
|
+
# component logs
|
|
139
|
+
logs(type: String, offset: Int, limit: Int): [LogEntry]!
|
|
140
|
+
|
|
138
141
|
aspects(include: [String]): [Aspect]
|
|
139
142
|
}
|
|
140
143
|
|
|
@@ -165,7 +168,7 @@ function componentSchema(componentExtension) {
|
|
|
165
168
|
listInvalid: [InvalidComponent]!
|
|
166
169
|
|
|
167
170
|
# get component logs(snaps) by component id
|
|
168
|
-
snaps(id: String!): [LogEntry]!
|
|
171
|
+
snaps(id: String!): [LogEntry]! @deprecated(reason: "Use the logs field on Component")
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
type Query {
|
|
@@ -204,6 +207,9 @@ function componentSchema(componentExtension) {
|
|
|
204
207
|
include
|
|
205
208
|
}) => {
|
|
206
209
|
return component.state.aspects.filter(include).serialize();
|
|
210
|
+
},
|
|
211
|
+
logs: async (component, filter) => {
|
|
212
|
+
return component.getLogs(filter);
|
|
207
213
|
}
|
|
208
214
|
},
|
|
209
215
|
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","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,QAA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","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"]}
|
|
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","logs","getLogs","ComponentHost","get","host","componentId","resolveComponentId","error","snaps","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;;AAKO,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;AACA;AACA;AACA,KA5HS;AA6HLC,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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","sourcesContent":["import stripAnsi from 'strip-ansi';\nimport gql from 'graphql-tag';\nimport { GraphQLJSONObject } from 'graphql-type-json';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\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 # component logs\n logs(type: String, offset: Int, limit: Int): [LogEntry]!\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]! @deprecated(reason: \"Use the logs field on Component\")\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 logs: async (component: Component, filter?: { type?: string; offset?: number; limit?: number }) => {\n return component.getLogs(filter);\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"]}
|
package/dist/component.js
CHANGED
|
@@ -35,6 +35,16 @@ function _bitError() {
|
|
|
35
35
|
return data;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
function _lodash() {
|
|
39
|
+
const data = require("lodash");
|
|
40
|
+
|
|
41
|
+
_lodash = function () {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
|
|
38
48
|
function _tagMap() {
|
|
39
49
|
const data = require("./tag-map");
|
|
40
50
|
|
|
@@ -146,6 +156,30 @@ class Component {
|
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
158
|
|
|
159
|
+
async getLogs(filter) {
|
|
160
|
+
const allLogs = await this.factory.getLogs(this.id);
|
|
161
|
+
if (!filter) return allLogs;
|
|
162
|
+
const {
|
|
163
|
+
type,
|
|
164
|
+
limit,
|
|
165
|
+
offset
|
|
166
|
+
} = filter;
|
|
167
|
+
|
|
168
|
+
const typeFilter = snap => {
|
|
169
|
+
if (type === 'tag') return snap.tag;
|
|
170
|
+
if (type === 'snap') return !snap.tag;
|
|
171
|
+
return true;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
let filteredLogs = type && allLogs.filter(typeFilter) || allLogs;
|
|
175
|
+
|
|
176
|
+
if (limit) {
|
|
177
|
+
filteredLogs = (0, _lodash().slice)(filteredLogs, offset, limit + (offset || 0));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return filteredLogs;
|
|
181
|
+
}
|
|
182
|
+
|
|
149
183
|
stringify() {
|
|
150
184
|
return JSON.stringify({
|
|
151
185
|
id: this.id,
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component.ts"],"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","stringify","JSON","displayName","tokens","name","split","map","token","join","tag","version","isModified","Promise","resolve","isOutdated","latestTag","byVersion","isNew","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","snap","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","get","checkout","write","path","fs","equals","component","toString"],"mappings":"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","sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport ComponentConfig from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n if (!this.head) return Promise.resolve(true);\n return Promise.resolve(this.state.isModified);\n // return Promise.resolve(this.state.hash !== this.head.hash);\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["component.ts"],"names":["Component","constructor","id","head","_state","tags","TagMap","factory","mainFile","state","config","filesystem","buildStatus","_consumer","headTag","undefined","byHash","hash","latest","getLatest","err","CouldNotFindLatest","getLogs","filter","allLogs","type","limit","offset","typeFilter","snap","tag","filteredLogs","stringify","JSON","displayName","tokens","name","split","map","token","join","version","isModified","Promise","resolve","isOutdated","latestTag","byVersion","isNew","loadState","snapId","getState","loadSnap","snapToGet","BitError","getSnap","snapsIterable","options","snapToStart","nextSnaps","done","iterator","next","value","currSnapId","shift","parents","length","firstParentOnly","push","concat","stopFn","Symbol","asyncIterator","getClosestTag","snapToStartFrom","tagsHashMap","getHashMap","has","iterable","snaps","hashOfLastSnap","get","checkout","write","path","fs","equals","component","toString"],"mappings":"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","sourcesContent":["import { AnyFS } from '@teambit/any-fs';\nimport { capitalize } from '@teambit/toolbox.string.capitalize';\nimport { SemVer } from 'semver';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { BuildStatus } from '@teambit/legacy/dist/constants';\n\nimport { slice } from 'lodash';\nimport { ComponentFactory } from './component-factory';\nimport ComponentFS from './component-fs';\n// import { NothingToSnap } from './exceptions';\nimport ComponentConfig from './config';\n// eslint-disable-next-line import/no-cycle\nimport { Snap } from './snap';\nimport { State } from './state';\nimport { TagMap } from './tag-map';\nimport { Tag } from './tag';\nimport { CouldNotFindLatest } from './exceptions';\n// import { Author } from './types';\n\ntype SnapsIterableOpts = {\n firstParentOnly?: boolean;\n stopFn?: (snap: Snap) => Promise<boolean>;\n};\n\nexport type InvalidComponent = { id: ComponentID; err: Error };\n\n/**\n * in-memory representation of a component.\n */\nexport class Component {\n constructor(\n /**\n * component ID represented by the `ComponentId` type.\n */\n readonly id: ComponentID,\n\n /**\n * head version of the component. can be `null` for new components.\n */\n readonly head: Snap | null = null,\n\n /**\n * state of the component.\n */\n private _state: State,\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap = new TagMap(),\n\n /**\n * the component factory\n */\n private factory: ComponentFactory\n ) {}\n\n get mainFile() {\n return this.state.mainFile;\n }\n\n get state(): State {\n return this._state;\n }\n\n set state(state: State) {\n this._state = state;\n }\n\n /**\n * component configuration which is later generated to a component `package.json` and `bit.json`.\n */\n get config(): ComponentConfig {\n return this.state.config;\n }\n\n /**\n * in-memory representation of the component current filesystem.\n */\n get filesystem(): ComponentFS {\n return this.state.filesystem;\n }\n\n /**\n * build status of the component\n */\n get buildStatus(): BuildStatus {\n return this._state._consumer.buildStatus;\n }\n\n get headTag() {\n if (!this.head) return undefined;\n return this.tags.byHash(this.head.hash);\n }\n\n get latest(): string | undefined {\n if (!this.head) return undefined;\n try {\n return this.tags.getLatest();\n } catch (err: any) {\n if (err instanceof CouldNotFindLatest) {\n return this.head.hash;\n }\n throw err;\n }\n }\n\n async getLogs(filter?: { type?: string; offset?: number; limit?: number }) {\n const allLogs = await this.factory.getLogs(this.id);\n if (!filter) return allLogs;\n const { type, limit, offset } = filter;\n const typeFilter = (snap) => {\n if (type === 'tag') return snap.tag;\n if (type === 'snap') return !snap.tag;\n return true;\n };\n let filteredLogs = (type && allLogs.filter(typeFilter)) || allLogs;\n if (limit) {\n filteredLogs = slice(filteredLogs, offset, limit + (offset || 0));\n }\n return filteredLogs;\n }\n\n stringify(): string {\n return JSON.stringify({\n id: this.id,\n head: this.head,\n });\n }\n\n /**\n * record component changes in the `Scope`.\n */\n // snap(author: Author, message = '') {\n // if (!this.isModified()) throw new NothingToSnap();\n // const snap = new Snap(this, author, message);\n\n // return new Component(this.id, snap, snap.state);\n // }\n\n /**\n * display name of the component.\n */\n get displayName() {\n const tokens = this.id.name.split('-').map((token) => capitalize(token));\n return tokens.join(' ');\n }\n\n /**\n * tag a component `Snap` with a semantic version. we follow SemVer specs as defined [here](https://semver.org/)).\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tag(version: SemVer) {\n // const snap = this.snap();\n // const tag = new Tag(version, snap);\n // this.tags.set(tag);\n }\n\n /**\n * determines whether this component is modified in the workspace.\n */\n isModified(): Promise<boolean> {\n if (!this.head) return Promise.resolve(true);\n return Promise.resolve(this.state.isModified);\n // return Promise.resolve(this.state.hash !== this.head.hash);\n }\n\n /**\n * is component isOutdated\n */\n isOutdated(): boolean {\n if (!this.latest) return false;\n const latestTag = this.tags.byVersion(this.latest);\n if (!latestTag) return false;\n if (this.head?.hash !== latestTag?.hash) return true;\n return false;\n }\n\n /**\n * determines whether this component is new.\n */\n isNew(): Promise<boolean> {\n return Promise.resolve(this.head === null);\n }\n\n // TODO: @david after snap we need to make sure to refactor here.\n loadState(snapId: string): Promise<State> {\n return this.factory.getState(this.id, snapId);\n }\n\n loadSnap(snapId?: string): Promise<Snap> {\n const snapToGet = snapId || this.head?.hash;\n if (!snapToGet) {\n throw new BitError('could not load snap for new components');\n }\n return this.factory.getSnap(this.id, snapToGet);\n }\n\n /**\n * Get iterable which iterate over snap parents lazily\n * @param snapId\n * @param options\n */\n snapsIterable(snapId?: string, options: SnapsIterableOpts = {}): AsyncIterable<Snap> {\n const snapToStart = snapId || this.head?.hash;\n let nextSnaps = [snapToStart];\n let done;\n if (!snapToStart) {\n done = true;\n }\n\n const iterator: AsyncIterator<Snap> = {\n next: async () => {\n if (done) {\n return { value: undefined, done };\n }\n const currSnapId = nextSnaps.shift();\n const snap = await this.loadSnap(currSnapId);\n if (snap.parents && snap.parents.length) {\n if (options.firstParentOnly) {\n nextSnaps.push(snap.parents[0]);\n } else {\n nextSnaps = nextSnaps.concat(snap.parents);\n }\n }\n if (!nextSnaps.length) {\n done = true;\n } else if (options.stopFn) {\n done = await options.stopFn(snap);\n }\n return { value: snap, done: undefined };\n },\n };\n return {\n [Symbol.asyncIterator]: () => iterator,\n };\n }\n\n /**\n * traverse recursively from the provided snap (or head) upwards until it finds a tag\n * @param snapToStartFrom\n */\n async getClosestTag(snapToStartFrom?: string): Promise<Tag | undefined> {\n const tagsHashMap = this.tags.getHashMap();\n const stopFn = async (snap: Snap) => {\n if (tagsHashMap.has(snap.hash)) {\n return true;\n }\n return false;\n };\n const iterable = this.snapsIterable(snapToStartFrom, { firstParentOnly: true, stopFn });\n const snaps: Snap[] = [];\n for await (const snap of iterable) {\n snaps.push(snap);\n }\n if (snaps.length) {\n const hashOfLastSnap = snaps[snaps.length - 1].hash;\n return tagsHashMap.get(hashOfLastSnap);\n }\n return undefined;\n }\n\n /**\n * checkout the component to a different version in its working tree.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n checkout(version: SemVer) {}\n\n /**\n * examine difference between two components.\n */\n // diff(other: Component): Difference {}\n\n /**\n * merge two different components\n */\n // merge(other: Component): Component {}\n\n /**\n * write a component to a given file system.\n * @param path root path to write the component\n * @param fs instance of any fs to use.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n write(path: string, fs?: AnyFS) {}\n\n /**\n *\n * Check if 2 components are equal\n * @param {Component} component\n * @returns {boolean}\n * @memberof Component\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n equals(component: Component): boolean {\n return component.id.toString() === this.id.toString();\n }\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import { Composition, CompositionProps } from '@teambit/compositions';
|
|
|
2
2
|
import { DeprecationInfo } from '@teambit/deprecation';
|
|
3
3
|
import { Descriptor } from '@teambit/envs';
|
|
4
4
|
import { ComponentID, ComponentIdObj } from '@teambit/component-id';
|
|
5
|
+
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
|
5
6
|
import { TagMap } from '../../tag-map';
|
|
6
7
|
import { TagProps } from '../../tag/tag';
|
|
7
8
|
export declare type ComponentModelProps = {
|
|
@@ -22,6 +23,7 @@ export declare type ComponentModelProps = {
|
|
|
22
23
|
host?: string;
|
|
23
24
|
latest?: string;
|
|
24
25
|
preview?: ComponentPreview;
|
|
26
|
+
logs?: LegacyComponentLog[];
|
|
25
27
|
};
|
|
26
28
|
export declare type ComponentPreview = {
|
|
27
29
|
includesEnvTemplate?: boolean;
|
|
@@ -93,6 +95,7 @@ export declare class ComponentModel {
|
|
|
93
95
|
*/
|
|
94
96
|
readonly latest?: string | undefined;
|
|
95
97
|
readonly preview?: ComponentPreview | undefined;
|
|
98
|
+
readonly logs?: LegacyComponentLog[] | undefined;
|
|
96
99
|
constructor(
|
|
97
100
|
/**
|
|
98
101
|
* id of the component
|
|
@@ -153,12 +156,12 @@ export declare class ComponentModel {
|
|
|
153
156
|
/**
|
|
154
157
|
* latest version of component
|
|
155
158
|
*/
|
|
156
|
-
latest?: string | undefined, preview?: ComponentPreview | undefined);
|
|
159
|
+
latest?: string | undefined, preview?: ComponentPreview | undefined, logs?: LegacyComponentLog[] | undefined);
|
|
157
160
|
get version(): string;
|
|
158
161
|
/**
|
|
159
162
|
* create an instance of a component from a plain object.
|
|
160
163
|
*/
|
|
161
|
-
static from({ id, server, displayName, compositions, packageName, elementsUrl, tags, deprecation, buildStatus, env, status, issuesCount, description, labels, host, latest, preview, }: ComponentModelProps): ComponentModel;
|
|
164
|
+
static from({ id, server, displayName, compositions, packageName, elementsUrl, tags, deprecation, buildStatus, env, status, issuesCount, description, labels, host, latest, preview, logs, }: ComponentModelProps): ComponentModel;
|
|
162
165
|
static fromArray(componentsProps: ComponentModelProps[]): ComponentModel[];
|
|
163
166
|
static empty(): ComponentModel;
|
|
164
167
|
}
|
|
@@ -108,7 +108,7 @@ class ComponentModel {
|
|
|
108
108
|
/**
|
|
109
109
|
* latest version of component
|
|
110
110
|
*/
|
|
111
|
-
latest, preview) {
|
|
111
|
+
latest, preview, logs) {
|
|
112
112
|
this.id = id;
|
|
113
113
|
this.displayName = displayName;
|
|
114
114
|
this.packageName = packageName;
|
|
@@ -126,6 +126,7 @@ class ComponentModel {
|
|
|
126
126
|
this.host = host;
|
|
127
127
|
this.latest = latest;
|
|
128
128
|
this.preview = preview;
|
|
129
|
+
this.logs = logs;
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
get version() {
|
|
@@ -154,9 +155,10 @@ class ComponentModel {
|
|
|
154
155
|
labels,
|
|
155
156
|
host,
|
|
156
157
|
latest,
|
|
157
|
-
preview
|
|
158
|
+
preview,
|
|
159
|
+
logs
|
|
158
160
|
}) {
|
|
159
|
-
return new ComponentModel(_componentId().ComponentID.fromObject(id), displayName, packageName, server, _compositions().Composition.fromArray(compositions), _tagMap().TagMap.fromArray(tags.map(tag => _tag().Tag.fromObject(tag))), buildStatus, issuesCount, elementsUrl, status, deprecation, env, description, labels, host, latest, preview);
|
|
161
|
+
return new ComponentModel(_componentId().ComponentID.fromObject(id), displayName, packageName, server, _compositions().Composition.fromArray(compositions), _tagMap().TagMap.fromArray(tags.map(tag => _tag().Tag.fromObject(tag))), buildStatus, issuesCount, elementsUrl, status, deprecation, env, description, labels, host, latest, preview, logs);
|
|
160
162
|
}
|
|
161
163
|
|
|
162
164
|
static fromArray(componentsProps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["component-model.ts"],"names":["ComponentModel","constructor","id","displayName","packageName","server","compositions","tags","buildStatus","issuesCount","elementsUrl","status","deprecation","environment","description","labels","host","latest","preview","version","from","env","ComponentID","fromObject","Composition","fromArray","TagMap","map","tag","Tag","componentsProps","rawComponent","empty","name","scope","url"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;
|
|
1
|
+
{"version":3,"sources":["component-model.ts"],"names":["ComponentModel","constructor","id","displayName","packageName","server","compositions","tags","buildStatus","issuesCount","elementsUrl","status","deprecation","environment","description","labels","host","latest","preview","logs","version","from","env","ComponentID","fromObject","Composition","fromArray","TagMap","map","tag","Tag","componentsProps","rawComponent","empty","name","scope","url"],"mappings":"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","sourcesContent":["import { Composition, CompositionProps } from '@teambit/compositions';\nimport { DeprecationInfo } from '@teambit/deprecation';\nimport { Descriptor } from '@teambit/envs';\nimport { ComponentID, ComponentIdObj } from '@teambit/component-id';\nimport { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { Tag } from '../../tag';\nimport { TagMap } from '../../tag-map';\nimport { TagProps } from '../../tag/tag';\n// import { Snap } from '../../snap';\n\n// ADDING MORE PROPERTIES HERE IS NOT ALLOWED!!! IF YOU NEED DATA PLEASE ADD A NEW\n// HOOK FROM YOUR ASPECT!!!\n// TODO: remove all properties from here to their rightful place in their aspects.\nexport type ComponentModelProps = {\n id: ComponentIdObj;\n description: string;\n buildStatus?: string;\n server?: ComponentServer;\n displayName: string;\n packageName: string; // pkg aspect\n elementsUrl?: string; // pkg aspect\n compositions?: CompositionProps[];\n tags?: TagProps[];\n issuesCount?: number; // component/issues aspect\n status?: any; // workspace aspect.\n deprecation?: DeprecationInfo; // deprecation aspect\n env?: Descriptor; // env aspect.\n labels?: string[];\n host?: string;\n latest?: string;\n preview?: ComponentPreview;\n logs?: LegacyComponentLog[];\n};\n\nexport type ComponentPreview = {\n includesEnvTemplate?: boolean;\n};\n\nexport type ComponentServer = {\n env: string;\n url: string;\n};\n\nexport class ComponentModel {\n constructor(\n /**\n * id of the component\n */\n readonly id: ComponentID,\n\n /**\n * display name of the component.\n */\n readonly displayName: string,\n\n /**\n * package name of the component.\n */\n readonly packageName: string,\n\n /**\n * the component server.\n */\n readonly server: ComponentServer | undefined,\n\n /**\n * array of compositions\n */\n readonly compositions: Composition[],\n\n /**\n * tags of the component.\n */\n readonly tags: TagMap,\n\n /**\n * component build status\n */\n readonly buildStatus?: string,\n\n /**\n * issues of component.\n */\n readonly issuesCount?: number,\n /**\n * elements url\n */\n readonly elementsUrl?: string,\n /**\n * status of component.\n */\n readonly status?: any,\n\n /**\n * deprecation info of the component.\n */\n readonly deprecation?: DeprecationInfo,\n\n /**\n * env descriptor.\n */\n readonly environment?: Descriptor,\n\n /**\n * description of the component.\n */\n\n readonly description = '',\n\n readonly labels: string[] = [],\n\n /**\n * host of the component\n */\n readonly host?: string,\n\n /**\n * latest version of component\n */\n readonly latest?: string,\n\n readonly preview?: ComponentPreview,\n\n readonly logs?: LegacyComponentLog[]\n ) {}\n\n get version() {\n if (!this.id.version) return 'new';\n return this.id.version;\n }\n\n /**\n * create an instance of a component from a plain object.\n */\n static from({\n id,\n server,\n displayName,\n compositions = [],\n packageName,\n elementsUrl,\n tags = [],\n deprecation,\n buildStatus,\n env,\n status,\n issuesCount,\n description,\n labels,\n host,\n latest,\n preview,\n logs,\n }: ComponentModelProps) {\n return new ComponentModel(\n ComponentID.fromObject(id),\n displayName,\n packageName,\n server,\n Composition.fromArray(compositions),\n TagMap.fromArray(tags.map((tag) => Tag.fromObject(tag))),\n buildStatus,\n issuesCount,\n elementsUrl,\n status,\n deprecation,\n env,\n description,\n labels,\n host,\n latest,\n preview,\n logs\n );\n }\n\n static fromArray(componentsProps: ComponentModelProps[]) {\n return componentsProps.map((rawComponent) => ComponentModel.from(rawComponent));\n }\n\n static empty() {\n return new ComponentModel(\n ComponentID.fromObject({ name: 'root', scope: 'temp' }),\n '',\n '',\n { env: '', url: '' },\n [],\n TagMap.empty()\n );\n }\n}\n"]}
|
package/dist/ui/menu/menu.js
CHANGED
|
@@ -11,6 +11,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
11
11
|
});
|
|
12
12
|
exports.Menu = Menu;
|
|
13
13
|
|
|
14
|
+
function _defineProperty2() {
|
|
15
|
+
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
|
|
17
|
+
_defineProperty2 = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
14
24
|
function _uiFoundationUi() {
|
|
15
25
|
const data = require("@teambit/ui-foundation.ui.main-dropdown");
|
|
16
26
|
|
|
@@ -145,6 +155,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
145
155
|
|
|
146
156
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
147
157
|
|
|
158
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
159
|
+
|
|
160
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
161
|
+
|
|
148
162
|
/**
|
|
149
163
|
* top bar menu.
|
|
150
164
|
*/
|
|
@@ -191,21 +205,25 @@ function VersionRelatedDropdowns({
|
|
|
191
205
|
const isNew = component.tags.isEmpty();
|
|
192
206
|
const lanesContext = (0, _lanesUi().useLanesContext)();
|
|
193
207
|
const currentLane = lanesContext === null || lanesContext === void 0 ? void 0 : lanesContext.currentLane;
|
|
208
|
+
const {
|
|
209
|
+
logs
|
|
210
|
+
} = component;
|
|
194
211
|
const isWorkspace = host === 'teambit.workspace/workspace';
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
212
|
+
const snaps = (0, _react().useMemo)(() => {
|
|
213
|
+
return (logs || []).filter(log => !log.tag).map(snap => _objectSpread(_objectSpread({}, snap), {}, {
|
|
214
|
+
version: snap.hash
|
|
215
|
+
}));
|
|
216
|
+
}, [logs]);
|
|
217
|
+
const tags = (0, _react().useMemo)(() => {
|
|
218
|
+
return (logs || []).filter(log => log.tag).map(tag => _objectSpread(_objectSpread({}, tag), {}, {
|
|
219
|
+
version: tag.tag
|
|
220
|
+
}));
|
|
221
|
+
}, [logs]);
|
|
222
|
+
const lanes = (lanesContext === null || lanesContext === void 0 ? void 0 : lanesContext.getLanesByComponentId(component.id)) || [];
|
|
223
|
+
const localVersion = isWorkspace && !isNew && !currentLane;
|
|
206
224
|
const currentVersion = isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
|
|
207
225
|
const methods = useConsumeMethods(consumeMethods, component, currentLane);
|
|
208
|
-
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null,
|
|
226
|
+
return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, tags.length > 0 && /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox().UseBoxDropdown, {
|
|
209
227
|
position: "bottom-end",
|
|
210
228
|
className: _menuModule().default.useBox,
|
|
211
229
|
Menu: /*#__PURE__*/_react().default.createElement(_uiFoundationUiUseBox2().Menu, {
|
|
@@ -213,9 +231,13 @@ function VersionRelatedDropdowns({
|
|
|
213
231
|
componentName: component.id.name
|
|
214
232
|
})
|
|
215
233
|
}), /*#__PURE__*/_react().default.createElement(_componentUi().VersionDropdown, {
|
|
216
|
-
|
|
234
|
+
tags: tags,
|
|
235
|
+
snaps: snaps,
|
|
236
|
+
lanes: lanes,
|
|
237
|
+
localVersion: localVersion,
|
|
217
238
|
currentVersion: currentVersion,
|
|
218
|
-
latestVersion: component.latest
|
|
239
|
+
latestVersion: component.latest,
|
|
240
|
+
currentLane: currentLane
|
|
219
241
|
}));
|
|
220
242
|
}
|
|
221
243
|
|
package/dist/ui/menu/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","location","isNew","tags","isEmpty","lanesContext","currentLane","
|
|
1
|
+
{"version":3,"sources":["menu.tsx"],"names":["Menu","navigationSlot","widgetSlot","className","host","menuItemSlot","consumeMethodSlot","component","mainMenuItems","values","styles","topBar","leftSide","rightSide","widgets","VersionRelatedDropdowns","consumeMethods","location","isNew","tags","isEmpty","lanesContext","currentLane","logs","isWorkspace","snaps","filter","log","tag","map","snap","version","hash","lanes","getLanesByComponentId","id","localVersion","currentVersion","search","includes","methods","useConsumeMethods","length","useBox","name","latest","componentModel","method","x","Component","Title"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;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;;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;;AACA;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;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;;;AAsBA;AACA;AACA;AACO,SAASA,IAAT,CAAc;AAAEC,EAAAA,cAAF;AAAkBC,EAAAA,UAAlB;AAA8BC,EAAAA,SAA9B;AAAyCC,EAAAA,IAAzC;AAA+CC,EAAAA,YAA/C;AAA6DC,EAAAA;AAA7D,CAAd,EAA2G;AAChH,QAAM;AAAEC,IAAAA;AAAF,MAAgB,kCAAaH,IAAb,CAAtB;AACA,QAAMI,aAAa,GAAG,sBAAQ,MAAM,uBAAQ,uBAAQH,YAAY,CAACI,MAAb,EAAR,CAAR,EAAwC,UAAxC,CAAd,EAAmE,CAACJ,YAAD,CAAnE,CAAtB;AACA,MAAI,CAACE,SAAL,EAAgB,oBAAO,+BAAC,6BAAD,OAAP;AAChB,sBACE;AAAK,IAAA,SAAS,EAAE,2BAAWG,sBAAOC,MAAlB,EAA0BR,SAA1B;AAAhB,kBACE;AAAK,IAAA,SAAS,EAAEO,sBAAOE;AAAvB,kBACE,+BAAC,kBAAD;AAAS,IAAA,cAAc,EAAEX;AAAzB,IADF,CADF,eAIE;AAAK,IAAA,SAAS,EAAES,sBAAOG;AAAvB,kBACE;AAAK,IAAA,SAAS,EAAEH,sBAAOI;AAAvB,kBACE,+BAAC,kBAAD;AAAS,IAAA,cAAc,EAAEZ;AAAzB,IADF,CADF,eAIE,+BAAC,uBAAD;AAAyB,IAAA,SAAS,EAAEK,SAApC;AAA+C,IAAA,cAAc,EAAED,iBAA/D;AAAkF,IAAA,IAAI,EAAEF;AAAxF,IAJF,eAKE,+BAAC,8BAAD;AAAc,IAAA,SAAS,EAAEI;AAAzB,IALF,CAJF,CADF;AAcD;;AAED,SAASO,uBAAT,CAAiC;AAC/BR,EAAAA,SAD+B;AAE/BS,EAAAA,cAF+B;AAG/BZ,EAAAA;AAH+B,CAAjC,EAQG;AACD,QAAMa,QAAQ,GAAG,mCAAjB;AACA,QAAMC,KAAK,GAAGX,SAAS,CAACY,IAAV,CAAeC,OAAf,EAAd;AACA,QAAMC,YAAY,GAAG,iCAArB;AACA,QAAMC,WAAW,GAAGD,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEC,WAAlC;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAWhB,SAAjB;AACA,QAAMiB,WAAW,GAAGpB,IAAI,KAAK,6BAA7B;AAEA,QAAMqB,KAAK,GAAG,sBAAQ,MAAM;AAC1B,WAAO,CAACF,IAAI,IAAI,EAAT,EAAaG,MAAb,CAAqBC,GAAD,IAAS,CAACA,GAAG,CAACC,GAAlC,EAAuCC,GAAvC,CAA4CC,IAAD,oCAAgBA,IAAhB;AAAsBC,MAAAA,OAAO,EAAED,IAAI,CAACE;AAApC,MAA3C,CAAP;AACD,GAFa,EAEX,CAACT,IAAD,CAFW,CAAd;AAIA,QAAMJ,IAAI,GAAG,sBAAQ,MAAM;AACzB,WAAO,CAACI,IAAI,IAAI,EAAT,EAAaG,MAAb,CAAqBC,GAAD,IAASA,GAAG,CAACC,GAAjC,EAAsCC,GAAtC,CAA2CD,GAAD,oCAAeA,GAAf;AAAoBG,MAAAA,OAAO,EAAEH,GAAG,CAACA;AAAjC,MAA1C,CAAP;AACD,GAFY,EAEV,CAACL,IAAD,CAFU,CAAb;AAIA,QAAMU,KAAK,GAAG,CAAAZ,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAEa,qBAAd,CAAoC3B,SAAS,CAAC4B,EAA9C,MAAqD,EAAnE;AACA,QAAMC,YAAY,GAAGZ,WAAW,IAAI,CAACN,KAAhB,IAAyB,CAACI,WAA/C;AAEA,QAAMe,cAAc,GAClBb,WAAW,IAAI,CAACN,KAAhB,IAAyB,CAACD,QAAQ,CAACqB,MAAT,CAAgBC,QAAhB,CAAyB,SAAzB,CAA1B,GAAgE,WAAhE,GAA8EhC,SAAS,CAACwB,OAD1F;AAGA,QAAMS,OAAO,GAAGC,iBAAiB,CAACzB,cAAD,EAAiBT,SAAjB,EAA4Be,WAA5B,CAAjC;AACA,sBACE,gEACGH,IAAI,CAACuB,MAAL,GAAc,CAAd,iBACC,+BAAC,sCAAD;AACE,IAAA,QAAQ,EAAC,YADX;AAEE,IAAA,SAAS,EAAEhC,sBAAOiC,MAFpB;AAGE,IAAA,IAAI,eAAE,+BAAC,6BAAD;AAAoB,MAAA,OAAO,EAAEH,OAA7B;AAAsC,MAAA,aAAa,EAAEjC,SAAS,CAAC4B,EAAV,CAAaS;AAAlE;AAHR,IAFJ,eAQE,+BAAC,8BAAD;AACE,IAAA,IAAI,EAAEzB,IADR;AAEE,IAAA,KAAK,EAAEM,KAFT;AAGE,IAAA,KAAK,EAAEQ,KAHT;AAIE,IAAA,YAAY,EAAEG,YAJhB;AAKE,IAAA,cAAc,EAAEC,cALlB;AAME,IAAA,aAAa,EAAE9B,SAAS,CAACsC,MAN3B;AAOE,IAAA,WAAW,EAAEvB;AAPf,IARF,CADF;AAoBD;;AAED,SAASmB,iBAAT,CACEzB,cADF,EAEE8B,cAFF,EAGExB,WAHF,EAImB;AACjB,SAAO,sBACL,MACE,uBAAQN,cAAc,CAACP,MAAf,EAAR,EACGoB,GADH,CACQkB,MAAD,IAAY;AACf,WAAOA,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAGD,cAAH,EAAmB;AAAExB,MAAAA;AAAF,KAAnB,CAAb;AACD,GAHH,EAIGI,MAJH,CAIWsB,CAAD,IAAO,CAAC,CAACA,CAAF,IAAOA,CAAC,CAACC,SAAT,IAAsBD,CAAC,CAACE,KAJzC,CAFG,EAOL,CAAClC,cAAD,EAAiB8B,cAAjB,EAAiCxB,WAAjC,CAPK,CAAP;AASD","sourcesContent":["import { MainDropdown, MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport { FullLoader } from '@teambit/ui-foundation.ui.full-loader';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-ui.routing.routing-provider';\nimport { flatten, groupBy } from 'lodash';\nimport classnames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { LaneModel, useLanesContext } from '@teambit/lanes.ui.lanes';\nimport type { ComponentModel } from '../component-model';\nimport { useComponent } from '../use-component';\nimport { MenuNav } from './menu-nav';\nimport styles from './menu.module.scss';\nimport { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';\n\nexport type MenuProps = {\n className?: string;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n};\n\n/**\n * top bar menu.\n */\nexport function Menu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot }: MenuProps) {\n const { component } = useComponent(host);\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n if (!component) return <FullLoader />;\n return (\n <div className={classnames(styles.topBar, className)}>\n <div className={styles.leftSide}>\n <MenuNav navigationSlot={navigationSlot} />\n </div>\n <div className={styles.rightSide}>\n <div className={styles.widgets}>\n <MenuNav navigationSlot={widgetSlot} />\n </div>\n <VersionRelatedDropdowns component={component} consumeMethods={consumeMethodSlot} host={host} />\n <MainDropdown menuItems={mainMenuItems} />\n </div>\n </div>\n );\n}\n\nfunction VersionRelatedDropdowns({\n component,\n consumeMethods,\n host,\n}: {\n component: ComponentModel;\n consumeMethods: ConsumeMethodSlot;\n host: string;\n}) {\n const location = useLocation();\n const isNew = component.tags.isEmpty();\n const lanesContext = useLanesContext();\n const currentLane = lanesContext?.currentLane;\n const { logs } = component;\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n return (logs || []).filter((log) => log.tag).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n const lanes = lanesContext?.getLanesByComponentId(component.id) || [];\n const localVersion = isWorkspace && !isNew && !currentLane;\n\n const currentVersion =\n isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;\n\n const methods = useConsumeMethods(consumeMethods, component, currentLane);\n return (\n <>\n {tags.length > 0 && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={styles.useBox}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}\n />\n )}\n <VersionDropdown\n tags={tags}\n snaps={snaps}\n lanes={lanes}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={component.latest}\n currentLane={currentLane}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods: ConsumeMethodSlot,\n componentModel: ComponentModel,\n currentLane?: LaneModel\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods.values())\n .map((method) => {\n return method?.(componentModel, { currentLane });\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, componentModel, currentLane]\n );\n}\n"]}
|
|
@@ -129,7 +129,14 @@ const componentFields = (0, _client().gql)`
|
|
|
129
129
|
id
|
|
130
130
|
icon
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
logs(type: $logType, offset: $logOffset, limit: $logLimit) {
|
|
133
|
+
message
|
|
134
|
+
username
|
|
135
|
+
email
|
|
136
|
+
date
|
|
137
|
+
hash
|
|
138
|
+
tag
|
|
139
|
+
}
|
|
133
140
|
preview {
|
|
134
141
|
includesEnvTemplate
|
|
135
142
|
}
|
|
@@ -137,7 +144,7 @@ const componentFields = (0, _client().gql)`
|
|
|
137
144
|
${componentIdFields}
|
|
138
145
|
`;
|
|
139
146
|
const GET_COMPONENT = (0, _client().gql)`
|
|
140
|
-
query Component($id: String!, $extensionId: String
|
|
147
|
+
query Component($id: String!, $extensionId: String!, $logType: String, $logOffset: Int, $logLimit: Int) {
|
|
141
148
|
getHost(id: $extensionId) {
|
|
142
149
|
id # used for GQL caching
|
|
143
150
|
get(id: $id) {
|
|
@@ -148,7 +155,7 @@ const GET_COMPONENT = (0, _client().gql)`
|
|
|
148
155
|
${componentFields}
|
|
149
156
|
`;
|
|
150
157
|
const SUB_SUBSCRIPTION_ADDED = (0, _client().gql)`
|
|
151
|
-
subscription OnComponentAdded {
|
|
158
|
+
subscription OnComponentAdded($logType: String, $logOffset: Int, $logLimit: Int) {
|
|
152
159
|
componentAdded {
|
|
153
160
|
component {
|
|
154
161
|
...componentFields
|
|
@@ -158,7 +165,7 @@ const SUB_SUBSCRIPTION_ADDED = (0, _client().gql)`
|
|
|
158
165
|
${componentFields}
|
|
159
166
|
`;
|
|
160
167
|
const SUB_COMPONENT_CHANGED = (0, _client().gql)`
|
|
161
|
-
subscription OnComponentChanged {
|
|
168
|
+
subscription OnComponentChanged($logType: String, $logOffset: Int, $logLimit: Int) {
|
|
162
169
|
componentChanged {
|
|
163
170
|
component {
|
|
164
171
|
...componentFields
|
|
@@ -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","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\", \"teambit.pipelines/builder\"]) {\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
|
+
{"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\", \"teambit.pipelines/builder\"]) {\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 logs(type: $logType, offset: $logOffset, limit: $logLimit) {\n message\n username\n email\n date\n hash\n tag\n }\n preview {\n includesEnvTemplate\n }\n }\n ${componentIdFields}\n`;\n\nconst GET_COMPONENT = gql`\n query Component($id: String!, $extensionId: String!, $logType: String, $logOffset: Int, $logLimit: Int) {\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($logType: String, $logOffset: Int, $logLimit: Int) {\n componentAdded {\n component {\n ...componentFields\n }\n }\n }\n ${componentFields}\n`;\n\nconst SUB_COMPONENT_CHANGED = gql`\n subscription OnComponentChanged($logType: String, $logOffset: Int, $logLimit: Int) {\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"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/component",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.666",
|
|
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.
|
|
9
|
+
"version": "0.0.666"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@teambit/any-fs": "0.0.5",
|
|
@@ -29,36 +29,37 @@
|
|
|
29
29
|
"@teambit/base-ui.routing.routing-provider": "1.0.0",
|
|
30
30
|
"@teambit/component-id": "0.0.401",
|
|
31
31
|
"@teambit/ui-foundation.ui.menu-widget-icon": "0.0.488",
|
|
32
|
-
"@teambit/aspect-loader": "0.0.
|
|
32
|
+
"@teambit/aspect-loader": "0.0.666",
|
|
33
33
|
"@teambit/legacy-bit-id": "0.0.398",
|
|
34
34
|
"@teambit/toolbox.string.capitalize": "0.0.483",
|
|
35
|
-
"@teambit/cli": "0.0.
|
|
36
|
-
"@teambit/config": "0.0.
|
|
37
|
-
"@teambit/express": "0.0.
|
|
38
|
-
"@teambit/graphql": "0.0.
|
|
35
|
+
"@teambit/cli": "0.0.450",
|
|
36
|
+
"@teambit/config": "0.0.463",
|
|
37
|
+
"@teambit/express": "0.0.544",
|
|
38
|
+
"@teambit/graphql": "0.0.666",
|
|
39
39
|
"@teambit/bit-error": "0.0.394",
|
|
40
|
-
"@teambit/command-bar": "0.0.
|
|
41
|
-
"@teambit/preview": "0.0.
|
|
42
|
-
"@teambit/pubsub": "0.0.
|
|
40
|
+
"@teambit/command-bar": "0.0.666",
|
|
41
|
+
"@teambit/preview": "0.0.666",
|
|
42
|
+
"@teambit/pubsub": "0.0.666",
|
|
43
43
|
"@teambit/ui-foundation.ui.is-browser": "0.0.486",
|
|
44
44
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.486",
|
|
45
45
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.488",
|
|
46
46
|
"@teambit/ui-foundation.ui.use-box.menu": "0.0.111",
|
|
47
|
-
"@teambit/ui": "0.0.
|
|
47
|
+
"@teambit/ui": "0.0.666",
|
|
48
48
|
"@teambit/component-issues": "0.0.46",
|
|
49
49
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.487",
|
|
50
50
|
"@teambit/cli-table": "0.0.33",
|
|
51
|
-
"@teambit/component-descriptor": "0.0.
|
|
51
|
+
"@teambit/component-descriptor": "0.0.11",
|
|
52
52
|
"@teambit/ui-foundation.ui.react-router.use-query": "0.0.486",
|
|
53
53
|
"@teambit/design.ui.empty-box": "0.0.353",
|
|
54
54
|
"@teambit/harmony.ui.aspect-box": "0.0.486",
|
|
55
55
|
"@teambit/design.ui.pages.not-found": "0.0.353",
|
|
56
56
|
"@teambit/design.ui.pages.server-error": "0.0.353",
|
|
57
|
-
"@teambit/compositions": "0.0.
|
|
58
|
-
"@teambit/deprecation": "0.0.
|
|
59
|
-
"@teambit/envs": "0.0.
|
|
60
|
-
"@teambit/component
|
|
61
|
-
"@teambit/
|
|
57
|
+
"@teambit/compositions": "0.0.666",
|
|
58
|
+
"@teambit/deprecation": "0.0.666",
|
|
59
|
+
"@teambit/envs": "0.0.666",
|
|
60
|
+
"@teambit/legacy-component-log": "0.0.391",
|
|
61
|
+
"@teambit/component.ui.version-dropdown": "0.0.494",
|
|
62
|
+
"@teambit/lanes.ui.lanes": "0.0.10",
|
|
62
63
|
"@teambit/ui-foundation.ui.full-loader": "0.0.486",
|
|
63
64
|
"@teambit/ui-foundation.ui.use-box.dropdown": "0.0.111",
|
|
64
65
|
"@teambit/ui-foundation.ui.react-router.extend-path": "0.0.486"
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
},
|
|
81
82
|
"peerDependencies": {
|
|
82
83
|
"@apollo/client": "^3.0.0",
|
|
83
|
-
"@teambit/legacy": "1.0.
|
|
84
|
+
"@teambit/legacy": "1.0.229",
|
|
84
85
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
85
86
|
"react": "^16.8.0 || ^17.0.0"
|
|
86
87
|
},
|
|
@@ -108,7 +109,7 @@
|
|
|
108
109
|
"react": "-"
|
|
109
110
|
},
|
|
110
111
|
"peerDependencies": {
|
|
111
|
-
"@teambit/legacy": "1.0.
|
|
112
|
+
"@teambit/legacy": "1.0.229",
|
|
112
113
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
113
114
|
"react": "^16.8.0 || ^17.0.0"
|
|
114
115
|
}
|
|
@@ -2,7 +2,7 @@ import { Composition, CompositionProps } from '@teambit/compositions';
|
|
|
2
2
|
import { DeprecationInfo } from '@teambit/deprecation';
|
|
3
3
|
import { Descriptor } from '@teambit/envs';
|
|
4
4
|
import { ComponentID, ComponentIdObj } from '@teambit/component-id';
|
|
5
|
-
|
|
5
|
+
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
|
6
6
|
import { Tag } from '../../tag';
|
|
7
7
|
import { TagMap } from '../../tag-map';
|
|
8
8
|
import { TagProps } from '../../tag/tag';
|
|
@@ -29,6 +29,7 @@ export type ComponentModelProps = {
|
|
|
29
29
|
host?: string;
|
|
30
30
|
latest?: string;
|
|
31
31
|
preview?: ComponentPreview;
|
|
32
|
+
logs?: LegacyComponentLog[];
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
export type ComponentPreview = {
|
|
@@ -118,7 +119,9 @@ export class ComponentModel {
|
|
|
118
119
|
*/
|
|
119
120
|
readonly latest?: string,
|
|
120
121
|
|
|
121
|
-
readonly preview?: ComponentPreview
|
|
122
|
+
readonly preview?: ComponentPreview,
|
|
123
|
+
|
|
124
|
+
readonly logs?: LegacyComponentLog[]
|
|
122
125
|
) {}
|
|
123
126
|
|
|
124
127
|
get version() {
|
|
@@ -147,6 +150,7 @@ export class ComponentModel {
|
|
|
147
150
|
host,
|
|
148
151
|
latest,
|
|
149
152
|
preview,
|
|
153
|
+
logs,
|
|
150
154
|
}: ComponentModelProps) {
|
|
151
155
|
return new ComponentModel(
|
|
152
156
|
ComponentID.fromObject(id),
|
|
@@ -165,7 +169,8 @@ export class ComponentModel {
|
|
|
165
169
|
labels,
|
|
166
170
|
host,
|
|
167
171
|
latest,
|
|
168
|
-
preview
|
|
172
|
+
preview,
|
|
173
|
+
logs
|
|
169
174
|
);
|
|
170
175
|
}
|
|
171
176
|
|
package/ui/menu/menu.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import { VersionDropdown } from '@teambit/component.ui.version-dropdown';
|
|
|
3
3
|
import { FullLoader } from '@teambit/ui-foundation.ui.full-loader';
|
|
4
4
|
import type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';
|
|
5
5
|
import { useLocation } from '@teambit/base-ui.routing.routing-provider';
|
|
6
|
-
import {
|
|
6
|
+
import { flatten, groupBy } from 'lodash';
|
|
7
7
|
import classnames from 'classnames';
|
|
8
8
|
import React, { useMemo } from 'react';
|
|
9
9
|
import { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';
|
|
@@ -70,20 +70,19 @@ function VersionRelatedDropdowns({
|
|
|
70
70
|
const isNew = component.tags.isEmpty();
|
|
71
71
|
const lanesContext = useLanesContext();
|
|
72
72
|
const currentLane = lanesContext?.currentLane;
|
|
73
|
-
|
|
73
|
+
const { logs } = component;
|
|
74
74
|
const isWorkspace = host === 'teambit.workspace/workspace';
|
|
75
|
-
const versionList = useMemo(() => {
|
|
76
|
-
const tagsArray = !currentLane
|
|
77
|
-
? component.tags
|
|
78
|
-
?.toArray()
|
|
79
|
-
.map((tag) => tag?.version?.version)
|
|
80
|
-
.filter((x) => x !== undefined)
|
|
81
|
-
.reverse()
|
|
82
|
-
: [component.id.version];
|
|
83
|
-
const wsLink = [isWorkspace && !isNew && !currentLane ? 'workspace' : undefined];
|
|
84
75
|
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
const snaps = useMemo(() => {
|
|
77
|
+
return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));
|
|
78
|
+
}, [logs]);
|
|
79
|
+
|
|
80
|
+
const tags = useMemo(() => {
|
|
81
|
+
return (logs || []).filter((log) => log.tag).map((tag) => ({ ...tag, version: tag.tag as string }));
|
|
82
|
+
}, [logs]);
|
|
83
|
+
|
|
84
|
+
const lanes = lanesContext?.getLanesByComponentId(component.id) || [];
|
|
85
|
+
const localVersion = isWorkspace && !isNew && !currentLane;
|
|
87
86
|
|
|
88
87
|
const currentVersion =
|
|
89
88
|
isWorkspace && !isNew && !location.search.includes('version') ? 'workspace' : component.version;
|
|
@@ -91,14 +90,22 @@ function VersionRelatedDropdowns({
|
|
|
91
90
|
const methods = useConsumeMethods(consumeMethods, component, currentLane);
|
|
92
91
|
return (
|
|
93
92
|
<>
|
|
94
|
-
{
|
|
93
|
+
{tags.length > 0 && (
|
|
95
94
|
<UseBoxDropdown
|
|
96
95
|
position="bottom-end"
|
|
97
96
|
className={styles.useBox}
|
|
98
97
|
Menu={<ConsumeMethodsMenu methods={methods} componentName={component.id.name} />}
|
|
99
98
|
/>
|
|
100
99
|
)}
|
|
101
|
-
<VersionDropdown
|
|
100
|
+
<VersionDropdown
|
|
101
|
+
tags={tags}
|
|
102
|
+
snaps={snaps}
|
|
103
|
+
lanes={lanes}
|
|
104
|
+
localVersion={localVersion}
|
|
105
|
+
currentVersion={currentVersion}
|
|
106
|
+
latestVersion={component.latest}
|
|
107
|
+
currentLane={currentLane}
|
|
108
|
+
/>
|
|
102
109
|
</>
|
|
103
110
|
);
|
|
104
111
|
}
|
|
@@ -46,7 +46,14 @@ const componentFields = gql`
|
|
|
46
46
|
id
|
|
47
47
|
icon
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
logs(type: $logType, offset: $logOffset, limit: $logLimit) {
|
|
50
|
+
message
|
|
51
|
+
username
|
|
52
|
+
email
|
|
53
|
+
date
|
|
54
|
+
hash
|
|
55
|
+
tag
|
|
56
|
+
}
|
|
50
57
|
preview {
|
|
51
58
|
includesEnvTemplate
|
|
52
59
|
}
|
|
@@ -55,7 +62,7 @@ const componentFields = gql`
|
|
|
55
62
|
`;
|
|
56
63
|
|
|
57
64
|
const GET_COMPONENT = gql`
|
|
58
|
-
query Component($id: String!, $extensionId: String
|
|
65
|
+
query Component($id: String!, $extensionId: String!, $logType: String, $logOffset: Int, $logLimit: Int) {
|
|
59
66
|
getHost(id: $extensionId) {
|
|
60
67
|
id # used for GQL caching
|
|
61
68
|
get(id: $id) {
|
|
@@ -67,7 +74,7 @@ const GET_COMPONENT = gql`
|
|
|
67
74
|
`;
|
|
68
75
|
|
|
69
76
|
const SUB_SUBSCRIPTION_ADDED = gql`
|
|
70
|
-
subscription OnComponentAdded {
|
|
77
|
+
subscription OnComponentAdded($logType: String, $logOffset: Int, $logLimit: Int) {
|
|
71
78
|
componentAdded {
|
|
72
79
|
component {
|
|
73
80
|
...componentFields
|
|
@@ -78,7 +85,7 @@ const SUB_SUBSCRIPTION_ADDED = gql`
|
|
|
78
85
|
`;
|
|
79
86
|
|
|
80
87
|
const SUB_COMPONENT_CHANGED = gql`
|
|
81
|
-
subscription OnComponentChanged {
|
|
88
|
+
subscription OnComponentChanged($logType: String, $logOffset: Int, $logLimit: Int) {
|
|
82
89
|
componentChanged {
|
|
83
90
|
component {
|
|
84
91
|
...componentFields
|
|
Binary file
|