@teambit/graph 1.0.750 → 1.0.751

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.
@@ -15,7 +15,7 @@ export declare class GraphCmd implements Command {
15
15
  private graph;
16
16
  name: string;
17
17
  description: string;
18
- extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';
18
+ extendedDescription: string;
19
19
  group: string;
20
20
  alias: string;
21
21
  options: CommandOptions;
package/dist/graph-cmd.js CHANGED
@@ -50,8 +50,10 @@ class GraphCmd {
50
50
  this.componentAspect = componentAspect;
51
51
  this.graph = graph;
52
52
  _defineProperty(this, "name", 'graph [id]');
53
- _defineProperty(this, "description", "generate an SVG image file with the components' dependencies graph");
54
- _defineProperty(this, "extendedDescription", void 0);
53
+ _defineProperty(this, "description", 'visualize component dependencies as a graph image');
54
+ _defineProperty(this, "extendedDescription", `generates an SVG (or PNG) image showing component dependency relationships.
55
+ black arrows represent runtime dependencies, red arrows show dev or peer dependencies.
56
+ by default shows only workspace components; use --include-dependencies for full dependency tree.`);
55
57
  _defineProperty(this, "group", 'info-analysis');
56
58
  _defineProperty(this, "alias", '');
57
59
  _defineProperty(this, "options", [['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'], ['', 'layout <name>', 'GraphVis layout. default to "dot". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]'], ['', 'png', 'save the graph as a png file instead of svg. requires "graphviz" to be installed'], ['', 'cycles', 'generate a graph of cycles only'], ['', 'include-local-only', 'DEPRECATED: include only the components in the workspace (or local scope). This is now the default behavior.'], ['', 'include-dependencies', 'include all dependencies recursively, not just workspace (or local scope) components'], ['j', 'json', 'json format']]);
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_graphlib","_componentId","_legacy","_scope","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCmd","constructor","componentAspect","graph","report","id","graphOpts","remote","layout","png","includeLocalOnly","includeDependencies","host","getHost","getVisualGraph","config","generateGraphFromRemote","VisualDependencyGraph","loadFromGraphlib","compId","resolveComponentId","undefined","compIds","modifiedOpts","getVisualGraphIds","visualDependencyGraph","result","render","chalk","green","json","shouldIncludeLocalOnly","getGraphIds","filteredGraph","list","listIds","listStr","map","toString","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","jsonGraph","toJson","nodes","GraphLib","write","getWorkspaceIfExist","workspace","ComponentID","fromString","scopeName","scope","remoteScope","getRemoteByName","consumer","componentDepGraph","Error","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport GraphLib from 'graphlib';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport type { GraphConfig } from '@teambit/legacy.dependency-graph';\nimport { VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { getRemoteByName } from '@teambit/scope.remotes';\nimport type { ComponentMain } from '@teambit/component';\nimport type { GraphMain } from './graph.main.runtime';\n\nexport type GraphOpt = {\n remote?: string;\n layout?: string;\n cycles?: boolean;\n png?: boolean;\n json?: boolean;\n includeLocalOnly?: boolean;\n includeDependencies?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = \"generate an SVG image file with the components' dependencies graph\";\n extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';\n group = 'info-analysis';\n alias = '';\n options = [\n ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],\n [\n '',\n 'layout <name>',\n 'GraphVis layout. default to \"dot\". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',\n ],\n ['', 'png', 'save the graph as a png file instead of svg. requires \"graphviz\" to be installed'],\n ['', 'cycles', 'generate a graph of cycles only'],\n [\n '',\n 'include-local-only',\n 'DEPRECATED: include only the components in the workspace (or local scope). This is now the default behavior.',\n ],\n [\n '',\n 'include-dependencies',\n 'include all dependencies recursively, not just workspace (or local scope) components',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(\n private componentAspect: ComponentMain,\n private graph: GraphMain\n ) {}\n\n async report([id]: [string], graphOpts: GraphOpt): Promise<string> {\n const { remote, layout, png, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n\n const getVisualGraph = async (): Promise<VisualDependencyGraph> => {\n if (remote) {\n const config: GraphConfig = {};\n if (layout) config.layout = layout;\n const graph = await this.generateGraphFromRemote(remote, id);\n return VisualDependencyGraph.loadFromGraphlib(graph, config);\n }\n const compId = id ? await host.resolveComponentId(id) : undefined;\n const compIds = compId ? [compId] : undefined;\n\n // New logic: local-only is now the default behavior\n // includeDependencies flag overrides this to show all dependencies\n const modifiedOpts = {\n ...graphOpts,\n includeLocalOnly: includeDependencies ? false : includeLocalOnly !== false, // true by default unless includeDependencies is used\n };\n\n return this.graph.getVisualGraphIds(compIds, modifiedOpts);\n };\n\n const visualDependencyGraph = await getVisualGraph();\n const result = await visualDependencyGraph.render(png ? 'png' : 'svg');\n\n return chalk.green(`image created at ${result}`);\n }\n\n async json([id]: [string], graphOpts: GraphOpt) {\n const { remote, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n if (!remote) {\n // For JSON output, we need to manually filter if needed\n // Since getGraphIds doesn't accept the same options as getVisualGraphIds\n const shouldIncludeLocalOnly = includeDependencies ? false : includeLocalOnly !== false;\n\n const graph = await this.graph.getGraphIds(id ? [await host.resolveComponentId(id)] : undefined);\n\n let filteredGraph = graph;\n if (shouldIncludeLocalOnly) {\n // Filter to only include local components\n const list = await host.listIds();\n const listStr = list.map((compId) => compId.toString());\n filteredGraph = graph.successorsSubgraph(listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n });\n }\n\n const jsonGraph = filteredGraph.toJson();\n if (jsonGraph.nodes) {\n jsonGraph.nodes = jsonGraph.nodes.map((node) => node.id);\n }\n return jsonGraph;\n }\n const graph = await this.generateGraphFromRemote(remote!, id);\n return GraphLib.json.write(graph);\n }\n\n /**\n *\n * @returns Workspace if it exists, otherwise undefined.\n * the reason to not add it here as a type is to avoid circular dependency issues.\n */\n private getWorkspaceIfExist(): any {\n try {\n return this.componentAspect.getHost('teambit.workspace/workspace');\n } catch {\n return undefined;\n }\n }\n\n private async generateGraphFromRemote(remote: string | boolean, id?: string): Promise<GraphLib.Graph> {\n const workspace = this.getWorkspaceIfExist();\n const compId = id ? ComponentID.fromString(id) : undefined;\n if (compId) {\n const scopeName: string = typeof remote === 'string' ? remote : compId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(compId);\n return componentDepGraph.graph;\n }\n if (typeof remote !== 'string') {\n throw new Error('please specify remote scope name or enter an id');\n }\n const remoteScope = await getRemoteByName(remote, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph();\n return componentDepGraph.graph;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_graphlib","_componentId","_legacy","_scope","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCmd","constructor","componentAspect","graph","report","id","graphOpts","remote","layout","png","includeLocalOnly","includeDependencies","host","getHost","getVisualGraph","config","generateGraphFromRemote","VisualDependencyGraph","loadFromGraphlib","compId","resolveComponentId","undefined","compIds","modifiedOpts","getVisualGraphIds","visualDependencyGraph","result","render","chalk","green","json","shouldIncludeLocalOnly","getGraphIds","filteredGraph","list","listIds","listStr","map","toString","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","jsonGraph","toJson","nodes","GraphLib","write","getWorkspaceIfExist","workspace","ComponentID","fromString","scopeName","scope","remoteScope","getRemoteByName","consumer","componentDepGraph","Error","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport GraphLib from 'graphlib';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport type { GraphConfig } from '@teambit/legacy.dependency-graph';\nimport { VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { getRemoteByName } from '@teambit/scope.remotes';\nimport type { ComponentMain } from '@teambit/component';\nimport type { GraphMain } from './graph.main.runtime';\n\nexport type GraphOpt = {\n remote?: string;\n layout?: string;\n cycles?: boolean;\n png?: boolean;\n json?: boolean;\n includeLocalOnly?: boolean;\n includeDependencies?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = 'visualize component dependencies as a graph image';\n extendedDescription = `generates an SVG (or PNG) image showing component dependency relationships.\nblack arrows represent runtime dependencies, red arrows show dev or peer dependencies.\nby default shows only workspace components; use --include-dependencies for full dependency tree.`;\n group = 'info-analysis';\n alias = '';\n options = [\n ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],\n [\n '',\n 'layout <name>',\n 'GraphVis layout. default to \"dot\". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',\n ],\n ['', 'png', 'save the graph as a png file instead of svg. requires \"graphviz\" to be installed'],\n ['', 'cycles', 'generate a graph of cycles only'],\n [\n '',\n 'include-local-only',\n 'DEPRECATED: include only the components in the workspace (or local scope). This is now the default behavior.',\n ],\n [\n '',\n 'include-dependencies',\n 'include all dependencies recursively, not just workspace (or local scope) components',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(\n private componentAspect: ComponentMain,\n private graph: GraphMain\n ) {}\n\n async report([id]: [string], graphOpts: GraphOpt): Promise<string> {\n const { remote, layout, png, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n\n const getVisualGraph = async (): Promise<VisualDependencyGraph> => {\n if (remote) {\n const config: GraphConfig = {};\n if (layout) config.layout = layout;\n const graph = await this.generateGraphFromRemote(remote, id);\n return VisualDependencyGraph.loadFromGraphlib(graph, config);\n }\n const compId = id ? await host.resolveComponentId(id) : undefined;\n const compIds = compId ? [compId] : undefined;\n\n // New logic: local-only is now the default behavior\n // includeDependencies flag overrides this to show all dependencies\n const modifiedOpts = {\n ...graphOpts,\n includeLocalOnly: includeDependencies ? false : includeLocalOnly !== false, // true by default unless includeDependencies is used\n };\n\n return this.graph.getVisualGraphIds(compIds, modifiedOpts);\n };\n\n const visualDependencyGraph = await getVisualGraph();\n const result = await visualDependencyGraph.render(png ? 'png' : 'svg');\n\n return chalk.green(`image created at ${result}`);\n }\n\n async json([id]: [string], graphOpts: GraphOpt) {\n const { remote, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n if (!remote) {\n // For JSON output, we need to manually filter if needed\n // Since getGraphIds doesn't accept the same options as getVisualGraphIds\n const shouldIncludeLocalOnly = includeDependencies ? false : includeLocalOnly !== false;\n\n const graph = await this.graph.getGraphIds(id ? [await host.resolveComponentId(id)] : undefined);\n\n let filteredGraph = graph;\n if (shouldIncludeLocalOnly) {\n // Filter to only include local components\n const list = await host.listIds();\n const listStr = list.map((compId) => compId.toString());\n filteredGraph = graph.successorsSubgraph(listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n });\n }\n\n const jsonGraph = filteredGraph.toJson();\n if (jsonGraph.nodes) {\n jsonGraph.nodes = jsonGraph.nodes.map((node) => node.id);\n }\n return jsonGraph;\n }\n const graph = await this.generateGraphFromRemote(remote!, id);\n return GraphLib.json.write(graph);\n }\n\n /**\n *\n * @returns Workspace if it exists, otherwise undefined.\n * the reason to not add it here as a type is to avoid circular dependency issues.\n */\n private getWorkspaceIfExist(): any {\n try {\n return this.componentAspect.getHost('teambit.workspace/workspace');\n } catch {\n return undefined;\n }\n }\n\n private async generateGraphFromRemote(remote: string | boolean, id?: string): Promise<GraphLib.Graph> {\n const workspace = this.getWorkspaceIfExist();\n const compId = id ? ComponentID.fromString(id) : undefined;\n if (compId) {\n const scopeName: string = typeof remote === 'string' ? remote : compId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(compId);\n return componentDepGraph.graph;\n }\n if (typeof remote !== 'string') {\n throw new Error('please specify remote scope name or enter an id');\n }\n const remoteScope = await getRemoteByName(remote, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph();\n return componentDepGraph.graph;\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,aAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,YAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,OAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,MAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyD,SAAAC,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAclD,MAAM8B,QAAQ,CAAoB;EA+BvCC,WAAWA,CACDC,eAA8B,EAC9BC,KAAgB,EACxB;IAAA,KAFQD,eAA8B,GAA9BA,eAA8B;IAAA,KAC9BC,KAAgB,GAAhBA,KAAgB;IAAAnB,eAAA,eAhCnB,YAAY;IAAAA,eAAA,sBACL,mDAAmD;IAAAA,eAAA,8BAC3C;AACxB;AACA,iGAAiG;IAAAA,eAAA,gBACvF,eAAe;IAAAA,eAAA,gBACf,EAAE;IAAAA,eAAA,kBACA,CACR,CAAC,GAAG,EAAE,qBAAqB,EAAE,kEAAkE,CAAC,EAChG,CACE,EAAE,EACF,eAAe,EACf,wGAAwG,CACzG,EACD,CAAC,EAAE,EAAE,KAAK,EAAE,kFAAkF,CAAC,EAC/F,CAAC,EAAE,EAAE,QAAQ,EAAE,iCAAiC,CAAC,EACjD,CACE,EAAE,EACF,oBAAoB,EACpB,8GAA8G,CAC/G,EACD,CACE,EAAE,EACF,sBAAsB,EACtB,sFAAsF,CACvF,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAC7B;IAAAA,eAAA,mBACU,IAAI;EAKZ;EAEH,MAAMoB,MAAMA,CAAC,CAACC,EAAE,CAAW,EAAEC,SAAmB,EAAmB;IACjE,MAAM;MAAEC,MAAM;MAAEC,MAAM;MAAEC,GAAG;MAAEC,gBAAgB;MAAEC;IAAoB,CAAC,GAAGL,SAAS;IAChF,MAAMM,IAAI,GAAG,IAAI,CAACV,eAAe,CAACW,OAAO,CAAC,CAAC;IAE3C,MAAMC,cAAc,GAAG,MAAAA,CAAA,KAA4C;MACjE,IAAIP,MAAM,EAAE;QACV,MAAMQ,MAAmB,GAAG,CAAC,CAAC;QAC9B,IAAIP,MAAM,EAAEO,MAAM,CAACP,MAAM,GAAGA,MAAM;QAClC,MAAML,KAAK,GAAG,MAAM,IAAI,CAACa,uBAAuB,CAACT,MAAM,EAAEF,EAAE,CAAC;QAC5D,OAAOY,+BAAqB,CAACC,gBAAgB,CAACf,KAAK,EAAEY,MAAM,CAAC;MAC9D;MACA,MAAMI,MAAM,GAAGd,EAAE,GAAG,MAAMO,IAAI,CAACQ,kBAAkB,CAACf,EAAE,CAAC,GAAGgB,SAAS;MACjE,MAAMC,OAAO,GAAGH,MAAM,GAAG,CAACA,MAAM,CAAC,GAAGE,SAAS;;MAE7C;MACA;MACA,MAAME,YAAY,GAAA3C,aAAA,CAAAA,aAAA,KACb0B,SAAS;QACZI,gBAAgB,EAAEC,mBAAmB,GAAG,KAAK,GAAGD,gBAAgB,KAAK,KAAK,CAAE;MAAA,EAC7E;MAED,OAAO,IAAI,CAACP,KAAK,CAACqB,iBAAiB,CAACF,OAAO,EAAEC,YAAY,CAAC;IAC5D,CAAC;IAED,MAAME,qBAAqB,GAAG,MAAMX,cAAc,CAAC,CAAC;IACpD,MAAMY,MAAM,GAAG,MAAMD,qBAAqB,CAACE,MAAM,CAAClB,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;IAEtE,OAAOmB,gBAAK,CAACC,KAAK,CAAC,oBAAoBH,MAAM,EAAE,CAAC;EAClD;EAEA,MAAMI,IAAIA,CAAC,CAACzB,EAAE,CAAW,EAAEC,SAAmB,EAAE;IAC9C,MAAM;MAAEC,MAAM;MAAEG,gBAAgB;MAAEC;IAAoB,CAAC,GAAGL,SAAS;IACnE,MAAMM,IAAI,GAAG,IAAI,CAACV,eAAe,CAACW,OAAO,CAAC,CAAC;IAC3C,IAAI,CAACN,MAAM,EAAE;MACX;MACA;MACA,MAAMwB,sBAAsB,GAAGpB,mBAAmB,GAAG,KAAK,GAAGD,gBAAgB,KAAK,KAAK;MAEvF,MAAMP,KAAK,GAAG,MAAM,IAAI,CAACA,KAAK,CAAC6B,WAAW,CAAC3B,EAAE,GAAG,CAAC,MAAMO,IAAI,CAACQ,kBAAkB,CAACf,EAAE,CAAC,CAAC,GAAGgB,SAAS,CAAC;MAEhG,IAAIY,aAAa,GAAG9B,KAAK;MACzB,IAAI4B,sBAAsB,EAAE;QAC1B;QACA,MAAMG,IAAI,GAAG,MAAMtB,IAAI,CAACuB,OAAO,CAAC,CAAC;QACjC,MAAMC,OAAO,GAAGF,IAAI,CAACG,GAAG,CAAElB,MAAM,IAAKA,MAAM,CAACmB,QAAQ,CAAC,CAAC,CAAC;QACvDL,aAAa,GAAG9B,KAAK,CAACoC,kBAAkB,CAACH,OAAO,EAAE;UAChDI,UAAU,EAAGC,IAAI,IAAKL,OAAO,CAACM,QAAQ,CAACD,IAAI,CAACpC,EAAE,CAAC;UAC/CsC,UAAU,EAAGC,IAAI,IAAKR,OAAO,CAACM,QAAQ,CAACE,IAAI,CAACC,QAAQ,CAAC,IAAIT,OAAO,CAACM,QAAQ,CAACE,IAAI,CAACE,QAAQ;QACzF,CAAC,CAAC;MACJ;MAEA,MAAMC,SAAS,GAAGd,aAAa,CAACe,MAAM,CAAC,CAAC;MACxC,IAAID,SAAS,CAACE,KAAK,EAAE;QACnBF,SAAS,CAACE,KAAK,GAAGF,SAAS,CAACE,KAAK,CAACZ,GAAG,CAAEI,IAAI,IAAKA,IAAI,CAACpC,EAAE,CAAC;MAC1D;MACA,OAAO0C,SAAS;IAClB;IACA,MAAM5C,KAAK,GAAG,MAAM,IAAI,CAACa,uBAAuB,CAACT,MAAM,EAAGF,EAAE,CAAC;IAC7D,OAAO6C,mBAAQ,CAACpB,IAAI,CAACqB,KAAK,CAAChD,KAAK,CAAC;EACnC;;EAEA;AACF;AACA;AACA;AACA;EACUiD,mBAAmBA,CAAA,EAAQ;IACjC,IAAI;MACF,OAAO,IAAI,CAAClD,eAAe,CAACW,OAAO,CAAC,6BAA6B,CAAC;IACpE,CAAC,CAAC,MAAM;MACN,OAAOQ,SAAS;IAClB;EACF;EAEA,MAAcL,uBAAuBA,CAACT,MAAwB,EAAEF,EAAW,EAA2B;IACpG,MAAMgD,SAAS,GAAG,IAAI,CAACD,mBAAmB,CAAC,CAAC;IAC5C,MAAMjC,MAAM,GAAGd,EAAE,GAAGiD,0BAAW,CAACC,UAAU,CAAClD,EAAE,CAAC,GAAGgB,SAAS;IAC1D,IAAIF,MAAM,EAAE;MACV,MAAMqC,SAAiB,GAAG,OAAOjD,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGY,MAAM,CAACsC,KAAK;MAC5E,MAAMC,WAAW,GAAG,MAAM,IAAAC,wBAAe,EAACH,SAAS,EAAEH,SAAS,EAAEO,QAAQ,CAAC;MACzE,MAAMC,iBAAiB,GAAG,MAAMH,WAAW,CAACvD,KAAK,CAACgB,MAAM,CAAC;MACzD,OAAO0C,iBAAiB,CAAC1D,KAAK;IAChC;IACA,IAAI,OAAOI,MAAM,KAAK,QAAQ,EAAE;MAC9B,MAAM,IAAIuD,KAAK,CAAC,iDAAiD,CAAC;IACpE;IACA,MAAMJ,WAAW,GAAG,MAAM,IAAAC,wBAAe,EAACpD,MAAM,EAAE8C,SAAS,EAAEO,QAAQ,CAAC;IACtE,MAAMC,iBAAiB,GAAG,MAAMH,WAAW,CAACvD,KAAK,CAAC,CAAC;IACnD,OAAO0D,iBAAiB,CAAC1D,KAAK;EAChC;AACF;AAAC4D,OAAA,CAAA/D,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.750/dist/graph.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.750/dist/graph.docs.md';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.751/dist/graph.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.751/dist/graph.docs.md';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/graph",
3
- "version": "1.0.750",
3
+ "version": "1.0.751",
4
4
  "homepage": "https://bit.cloud/teambit/component/graph",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "graph",
9
- "version": "1.0.750"
9
+ "version": "1.0.751"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphlib": "2.1.8",
@@ -15,36 +15,36 @@
15
15
  "graphql-tag": "2.12.1",
16
16
  "classnames": "2.2.6",
17
17
  "reactflow": "^11.11.3",
18
- "semver": "7.7.1",
19
18
  "@dagrejs/dagre": "^1.1.2",
19
+ "semver": "7.7.1",
20
20
  "@teambit/component-id": "1.2.4",
21
21
  "@teambit/graph.cleargraph": "0.0.11",
22
- "@teambit/legacy.dependency-graph": "0.0.76",
23
- "@teambit/cli": "0.0.1272",
24
- "@teambit/scope.remotes": "0.0.73",
25
22
  "@teambit/harmony": "0.4.7",
26
23
  "@teambit/component.ui.component-compare.models.component-compare-change-type": "0.0.7",
27
24
  "@teambit/component.ui.component-compare.models.component-compare-props": "0.0.122",
28
- "@teambit/logger": "0.0.1365",
29
25
  "@teambit/base-ui.routing.nav-link": "1.0.4",
30
26
  "@teambit/base-ui.surfaces.card": "1.0.1",
31
27
  "@teambit/base-ui.text.muted-text": "1.0.1",
32
- "@teambit/component.modules.component-url": "0.0.180",
33
28
  "@teambit/component.ui.deprecation-icon": "0.0.509",
34
29
  "@teambit/design.ui.styles.ellipsis": "0.0.357",
35
30
  "@teambit/envs.ui.env-icon": "0.0.507",
31
+ "@teambit/component.ui.component-compare.context": "0.0.124",
32
+ "@teambit/design.ui.round-loader": "0.0.355",
33
+ "@teambit/component.ui.component-compare.status-resolver": "0.0.9",
36
34
  "@teambit/evangelist.input.checkbox.label": "1.1.0",
37
35
  "@teambit/design.skeletons.base-skeleton": "0.0.2",
38
36
  "@teambit/design.ui.pages.not-found": "0.0.371",
39
37
  "@teambit/design.ui.pages.server-error": "0.0.368",
40
- "@teambit/component.ui.component-compare.context": "0.0.124",
41
- "@teambit/design.ui.round-loader": "0.0.355",
42
- "@teambit/component.ui.component-compare.status-resolver": "0.0.9",
43
38
  "@teambit/ui-foundation.ui.react-router.use-query": "0.0.505",
44
- "@teambit/component": "1.0.750",
45
- "@teambit/graphql": "1.0.750",
46
- "@teambit/component-compare": "1.0.750",
47
- "@teambit/ui": "1.0.750"
39
+ "@teambit/legacy.dependency-graph": "0.0.77",
40
+ "@teambit/component": "1.0.751",
41
+ "@teambit/cli": "0.0.1273",
42
+ "@teambit/scope.remotes": "0.0.74",
43
+ "@teambit/graphql": "1.0.751",
44
+ "@teambit/logger": "0.0.1366",
45
+ "@teambit/component-compare": "1.0.751",
46
+ "@teambit/ui": "1.0.751",
47
+ "@teambit/component.modules.component-url": "0.0.181"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/graphlib": "2.1.7",