@teambit/workspace 0.0.880 → 0.0.881
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.
|
@@ -201,7 +201,8 @@ class GraphFromFsBuilder {
|
|
|
201
201
|
await scopeComponentsImporter.importMany({
|
|
202
202
|
ids: _bitIds().default.uniqFromArray(allDepsWithScope),
|
|
203
203
|
throwForDependencyNotFound: this.shouldThrowOnMissingDep,
|
|
204
|
-
throwForSeederNotFound: this.shouldThrowOnMissingDep
|
|
204
|
+
throwForSeederNotFound: this.shouldThrowOnMissingDep,
|
|
205
|
+
reFetchUnBuiltVersion: false
|
|
205
206
|
});
|
|
206
207
|
}
|
|
207
208
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GraphFromFsBuilder","constructor","workspace","logger","ignoreIds","BitIds","shouldLoadItsDeps","shouldThrowOnMissingDep","LegacyGraph","consumer","buildGraph","ids","debug","length","start","Date","now","components","loadManyComponents","processManyComponents","graph","getAllDepsUnfiltered","component","getAllDependenciesIds","difference","getAllDepsFiltered","depsWithoutIgnore","shouldLoadFunc","deps","mapSeries","depId","shouldLoad","push","fromArray","compact","depth","importObjects","allDependencies","processOneComponent","allDependenciesFlattened","flatten","allDeps","map","c","flat","allDepsWithScope","filter","dep","hasScope","scopeComponentsImporter","ScopeComponentsImporter","scope","importMany","uniqFromArray","throwForDependencyNotFound","throwForSeederNotFound","idStr","id","toString","completed","includes","allIds","Object","entries","depsIdsGroupedByType","forEach","depType","depsIds","has","hasNode","Error","warn","setEdge","componentsIds","dependenciesOf","comp","fromGraph","node","loadComponent","setNode","err","ComponentNotFound","ComponentNotFoundInScope","ScopeNotFound","BitError","error","componentId","compId","resolveComponentId","get","state","_consumer"],"sources":["build-graph-from-fs.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { flatten } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport BitIds from '@teambit/legacy/dist/bit-id/bit-ids';\nimport Component from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport { ComponentNotFound, ScopeNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { ComponentNotFound as ComponentNotFoundInScope } from '@teambit/scope';\nimport compact from 'lodash.compact';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { Workspace } from './workspace';\n\nexport type ShouldLoadFunc = (bitId: BitId) => Promise<boolean>;\n\nexport class GraphFromFsBuilder {\n private graph = new LegacyGraph();\n private completed: string[] = [];\n private depth = 1;\n private consumer: Consumer;\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ignoreIds = new BitIds(),\n private shouldLoadItsDeps?: ShouldLoadFunc,\n private shouldThrowOnMissingDep = true\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n /**\n * create a graph with all dependencies and flattened dependencies of the given components.\n * the nodes are components and the edges has a label of the dependency type.\n *\n * the way how it is done is iterations by depths. each depth we gather all the dependencies of\n * that depths, make sure all objects exist and then check their dependencies for the next depth.\n * once there is no dependency left, we're on the last depth level and the graph is ready.\n *\n * for example, imagine the following graph:\n * A1 -> A2 -> A3\n * B1 -> B2 -> B3\n * C1 -> C2 -> C3\n *\n * where the buildGraph is given [A1, B1, C1].\n * first, it saves all these components as nodes in the graph. then, it finds the dependencies of\n * the next level, in this case they're [A2, B2, C2]. it runs `importMany` in case some objects\n * are missing. then, it loads them all (some from FS, some from the model) and sets the edges\n * between the component and the dependencies.\n * once done, it finds all their dependencies, which are [A3, B3, C3] and repeat the process\n * above. since there are no more dependencies, the graph is completed.\n * in this case, the total depth levels are 3.\n *\n * even with a huge project, there are not many depth levels. by iterating through depth levels\n * we keep performance sane as the importMany doesn't run multiple time and therefore the round\n * trips to the remotes are minimal.\n *\n * normally, one importMany of the seeders is enough as importMany knows to fetch all flattened.\n * however, since this buildGraph is performed on the workspace, a dependency may be new or\n * modified and as such, we don't know its flattened yet.\n */\n async buildGraph(ids: BitId[]): Promise<LegacyGraph> {\n this.logger.debug(`GraphFromFsBuilder, buildGraph with ${ids.length} seeders`);\n const start = Date.now();\n const components = await this.loadManyComponents(ids);\n await this.processManyComponents(components);\n this.logger.debug(\n `GraphFromFsBuilder, buildGraph with ${ids.length} seeders completed (${(Date.now() - start) / 1000} sec)`\n );\n return this.graph;\n }\n\n private getAllDepsUnfiltered(component: Component) {\n return component.getAllDependenciesIds().difference(this.ignoreIds);\n }\n\n private async getAllDepsFiltered(component: Component): Promise<BitIds> {\n const depsWithoutIgnore = this.getAllDepsUnfiltered(component);\n const shouldLoadFunc = this.shouldLoadItsDeps;\n if (!shouldLoadFunc) return depsWithoutIgnore;\n const deps = await mapSeries(depsWithoutIgnore, async (depId) => {\n const shouldLoad = await shouldLoadFunc(depId);\n if (!shouldLoad) this.ignoreIds.push(depId);\n return shouldLoad ? depId : null;\n });\n return BitIds.fromArray(compact(deps));\n }\n\n private async processManyComponents(components: Component[]) {\n this.logger.debug(`GraphFromFsBuilder.processManyComponents depth ${this.depth}, ${components.length} components`);\n this.depth += 1;\n await this.importObjects(components);\n const allDependencies = await mapSeries(components, (component) => this.processOneComponent(component));\n const allDependenciesFlattened = flatten(allDependencies);\n if (allDependenciesFlattened.length) await this.processManyComponents(allDependenciesFlattened);\n }\n\n private async importObjects(components: Component[]) {\n const allDeps = components.map((c) => this.getAllDepsUnfiltered(c)).flat();\n const allDepsWithScope = allDeps.filter((dep) => dep.hasScope());\n const scopeComponentsImporter = new ScopeComponentsImporter(this.consumer.scope);\n await scopeComponentsImporter.importMany({\n ids: BitIds.uniqFromArray(allDepsWithScope),\n throwForDependencyNotFound: this.shouldThrowOnMissingDep,\n throwForSeederNotFound: this.shouldThrowOnMissingDep,\n });\n }\n\n private async processOneComponent(component: Component) {\n const idStr = component.id.toString();\n if (this.completed.includes(idStr)) return [];\n const allIds = await this.getAllDepsFiltered(component);\n\n const allDependencies = await this.loadManyComponents(allIds, idStr);\n Object.entries(component.depsIdsGroupedByType).forEach(([depType, depsIds]) => {\n depsIds.forEach((depId) => {\n if (this.ignoreIds.has(depId)) return;\n if (!this.graph.hasNode(depId.toString())) {\n if (this.shouldThrowOnMissingDep) {\n throw new Error(`buildOneComponent: missing node of ${depId.toString()}`);\n }\n this.logger.warn(`ignoring missing ${depId.toString()}`);\n return;\n }\n this.graph.setEdge(idStr, depId.toString(), depType);\n });\n });\n this.completed.push(idStr);\n return allDependencies;\n }\n\n private async loadManyComponents(componentsIds: BitId[], dependenciesOf?: string): Promise<Component[]> {\n const components = await mapSeries(componentsIds, async (comp: BitId) => {\n const idStr = comp.toString();\n const fromGraph = this.graph.node(idStr);\n if (fromGraph) return fromGraph;\n try {\n const component = await this.loadComponent(comp);\n this.graph.setNode(idStr, component);\n return component;\n } catch (err: any) {\n if (\n err instanceof ComponentNotFound ||\n err instanceof ComponentNotFoundInScope ||\n err instanceof ScopeNotFound\n ) {\n if (dependenciesOf && !this.shouldThrowOnMissingDep) {\n this.logger.warn(\n `component ${idStr}, dependency of ${dependenciesOf} was not found. continuing without it`\n );\n return null;\n }\n throw new BitError(\n `error: component \"${idStr}\" was not found.\\nthis component is a dependency of \"${\n dependenciesOf || '<none>'\n }\" and is needed as part of the graph generation`\n );\n }\n if (dependenciesOf) this.logger.error(`failed loading dependencies of ${dependenciesOf}`);\n throw err;\n }\n });\n return compact(components);\n }\n private async loadComponent(componentId: BitId): Promise<Component> {\n const compId = await this.workspace.resolveComponentId(componentId);\n const comp = await this.workspace.get(compId);\n return comp.state._consumer;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["GraphFromFsBuilder","constructor","workspace","logger","ignoreIds","BitIds","shouldLoadItsDeps","shouldThrowOnMissingDep","LegacyGraph","consumer","buildGraph","ids","debug","length","start","Date","now","components","loadManyComponents","processManyComponents","graph","getAllDepsUnfiltered","component","getAllDependenciesIds","difference","getAllDepsFiltered","depsWithoutIgnore","shouldLoadFunc","deps","mapSeries","depId","shouldLoad","push","fromArray","compact","depth","importObjects","allDependencies","processOneComponent","allDependenciesFlattened","flatten","allDeps","map","c","flat","allDepsWithScope","filter","dep","hasScope","scopeComponentsImporter","ScopeComponentsImporter","scope","importMany","uniqFromArray","throwForDependencyNotFound","throwForSeederNotFound","reFetchUnBuiltVersion","idStr","id","toString","completed","includes","allIds","Object","entries","depsIdsGroupedByType","forEach","depType","depsIds","has","hasNode","Error","warn","setEdge","componentsIds","dependenciesOf","comp","fromGraph","node","loadComponent","setNode","err","ComponentNotFound","ComponentNotFoundInScope","ScopeNotFound","BitError","error","componentId","compId","resolveComponentId","get","state","_consumer"],"sources":["build-graph-from-fs.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { flatten } from 'lodash';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport BitIds from '@teambit/legacy/dist/bit-id/bit-ids';\nimport Component from '@teambit/legacy/dist/consumer/component/consumer-component';\nimport LegacyGraph from '@teambit/legacy/dist/scope/graph/graph';\nimport ScopeComponentsImporter from '@teambit/legacy/dist/scope/component-ops/scope-components-importer';\nimport { ComponentNotFound, ScopeNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { ComponentNotFound as ComponentNotFoundInScope } from '@teambit/scope';\nimport compact from 'lodash.compact';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { Workspace } from './workspace';\n\nexport type ShouldLoadFunc = (bitId: BitId) => Promise<boolean>;\n\nexport class GraphFromFsBuilder {\n private graph = new LegacyGraph();\n private completed: string[] = [];\n private depth = 1;\n private consumer: Consumer;\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private ignoreIds = new BitIds(),\n private shouldLoadItsDeps?: ShouldLoadFunc,\n private shouldThrowOnMissingDep = true\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n /**\n * create a graph with all dependencies and flattened dependencies of the given components.\n * the nodes are components and the edges has a label of the dependency type.\n *\n * the way how it is done is iterations by depths. each depth we gather all the dependencies of\n * that depths, make sure all objects exist and then check their dependencies for the next depth.\n * once there is no dependency left, we're on the last depth level and the graph is ready.\n *\n * for example, imagine the following graph:\n * A1 -> A2 -> A3\n * B1 -> B2 -> B3\n * C1 -> C2 -> C3\n *\n * where the buildGraph is given [A1, B1, C1].\n * first, it saves all these components as nodes in the graph. then, it finds the dependencies of\n * the next level, in this case they're [A2, B2, C2]. it runs `importMany` in case some objects\n * are missing. then, it loads them all (some from FS, some from the model) and sets the edges\n * between the component and the dependencies.\n * once done, it finds all their dependencies, which are [A3, B3, C3] and repeat the process\n * above. since there are no more dependencies, the graph is completed.\n * in this case, the total depth levels are 3.\n *\n * even with a huge project, there are not many depth levels. by iterating through depth levels\n * we keep performance sane as the importMany doesn't run multiple time and therefore the round\n * trips to the remotes are minimal.\n *\n * normally, one importMany of the seeders is enough as importMany knows to fetch all flattened.\n * however, since this buildGraph is performed on the workspace, a dependency may be new or\n * modified and as such, we don't know its flattened yet.\n */\n async buildGraph(ids: BitId[]): Promise<LegacyGraph> {\n this.logger.debug(`GraphFromFsBuilder, buildGraph with ${ids.length} seeders`);\n const start = Date.now();\n const components = await this.loadManyComponents(ids);\n await this.processManyComponents(components);\n this.logger.debug(\n `GraphFromFsBuilder, buildGraph with ${ids.length} seeders completed (${(Date.now() - start) / 1000} sec)`\n );\n return this.graph;\n }\n\n private getAllDepsUnfiltered(component: Component) {\n return component.getAllDependenciesIds().difference(this.ignoreIds);\n }\n\n private async getAllDepsFiltered(component: Component): Promise<BitIds> {\n const depsWithoutIgnore = this.getAllDepsUnfiltered(component);\n const shouldLoadFunc = this.shouldLoadItsDeps;\n if (!shouldLoadFunc) return depsWithoutIgnore;\n const deps = await mapSeries(depsWithoutIgnore, async (depId) => {\n const shouldLoad = await shouldLoadFunc(depId);\n if (!shouldLoad) this.ignoreIds.push(depId);\n return shouldLoad ? depId : null;\n });\n return BitIds.fromArray(compact(deps));\n }\n\n private async processManyComponents(components: Component[]) {\n this.logger.debug(`GraphFromFsBuilder.processManyComponents depth ${this.depth}, ${components.length} components`);\n this.depth += 1;\n await this.importObjects(components);\n const allDependencies = await mapSeries(components, (component) => this.processOneComponent(component));\n const allDependenciesFlattened = flatten(allDependencies);\n if (allDependenciesFlattened.length) await this.processManyComponents(allDependenciesFlattened);\n }\n\n private async importObjects(components: Component[]) {\n const allDeps = components.map((c) => this.getAllDepsUnfiltered(c)).flat();\n const allDepsWithScope = allDeps.filter((dep) => dep.hasScope());\n const scopeComponentsImporter = new ScopeComponentsImporter(this.consumer.scope);\n await scopeComponentsImporter.importMany({\n ids: BitIds.uniqFromArray(allDepsWithScope),\n throwForDependencyNotFound: this.shouldThrowOnMissingDep,\n throwForSeederNotFound: this.shouldThrowOnMissingDep,\n reFetchUnBuiltVersion: false,\n });\n }\n\n private async processOneComponent(component: Component) {\n const idStr = component.id.toString();\n if (this.completed.includes(idStr)) return [];\n const allIds = await this.getAllDepsFiltered(component);\n\n const allDependencies = await this.loadManyComponents(allIds, idStr);\n Object.entries(component.depsIdsGroupedByType).forEach(([depType, depsIds]) => {\n depsIds.forEach((depId) => {\n if (this.ignoreIds.has(depId)) return;\n if (!this.graph.hasNode(depId.toString())) {\n if (this.shouldThrowOnMissingDep) {\n throw new Error(`buildOneComponent: missing node of ${depId.toString()}`);\n }\n this.logger.warn(`ignoring missing ${depId.toString()}`);\n return;\n }\n this.graph.setEdge(idStr, depId.toString(), depType);\n });\n });\n this.completed.push(idStr);\n return allDependencies;\n }\n\n private async loadManyComponents(componentsIds: BitId[], dependenciesOf?: string): Promise<Component[]> {\n const components = await mapSeries(componentsIds, async (comp: BitId) => {\n const idStr = comp.toString();\n const fromGraph = this.graph.node(idStr);\n if (fromGraph) return fromGraph;\n try {\n const component = await this.loadComponent(comp);\n this.graph.setNode(idStr, component);\n return component;\n } catch (err: any) {\n if (\n err instanceof ComponentNotFound ||\n err instanceof ComponentNotFoundInScope ||\n err instanceof ScopeNotFound\n ) {\n if (dependenciesOf && !this.shouldThrowOnMissingDep) {\n this.logger.warn(\n `component ${idStr}, dependency of ${dependenciesOf} was not found. continuing without it`\n );\n return null;\n }\n throw new BitError(\n `error: component \"${idStr}\" was not found.\\nthis component is a dependency of \"${\n dependenciesOf || '<none>'\n }\" and is needed as part of the graph generation`\n );\n }\n if (dependenciesOf) this.logger.error(`failed loading dependencies of ${dependenciesOf}`);\n throw err;\n }\n });\n return compact(components);\n }\n private async loadComponent(componentId: BitId): Promise<Component> {\n const compId = await this.workspace.resolveComponentId(componentId);\n const comp = await this.workspace.get(compId);\n return comp.state._consumer;\n }\n}\n"],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/workspace",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.881",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/workspace/workspace",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.workspace",
|
|
8
8
|
"name": "workspace",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.881"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -34,48 +34,48 @@
|
|
|
34
34
|
"@teambit/base-ui.surfaces.split-pane.split-pane": "1.0.0",
|
|
35
35
|
"@teambit/bit-error": "0.0.400",
|
|
36
36
|
"@teambit/component-id": "0.0.418",
|
|
37
|
-
"@teambit/lane-id": "0.0.
|
|
37
|
+
"@teambit/lane-id": "0.0.109",
|
|
38
38
|
"@teambit/legacy-bit-id": "0.0.414",
|
|
39
|
-
"@teambit/logger": "0.0.
|
|
40
|
-
"@teambit/scope": "0.0.
|
|
41
|
-
"@teambit/cli": "0.0.
|
|
42
|
-
"@teambit/isolator": "0.0.
|
|
43
|
-
"@teambit/component-tree": "0.0.
|
|
39
|
+
"@teambit/logger": "0.0.684",
|
|
40
|
+
"@teambit/scope": "0.0.881",
|
|
41
|
+
"@teambit/cli": "0.0.591",
|
|
42
|
+
"@teambit/isolator": "0.0.881",
|
|
43
|
+
"@teambit/component-tree": "0.0.669",
|
|
44
44
|
"@teambit/component.ui.component-status-resolver": "0.0.500",
|
|
45
|
-
"@teambit/lanes.hooks.use-lanes": "0.0.
|
|
45
|
+
"@teambit/lanes.hooks.use-lanes": "0.0.51",
|
|
46
46
|
"@teambit/harmony.modules.resolved-component": "0.0.490",
|
|
47
|
-
"@teambit/compiler": "0.0.
|
|
48
|
-
"@teambit/component": "0.0.
|
|
49
|
-
"@teambit/graphql": "0.0.
|
|
50
|
-
"@teambit/aspect-loader": "0.0.
|
|
51
|
-
"@teambit/bundler": "0.0.
|
|
52
|
-
"@teambit/dependency-resolver": "0.0.
|
|
53
|
-
"@teambit/envs": "0.0.
|
|
54
|
-
"@teambit/pubsub": "0.0.
|
|
55
|
-
"@teambit/ui": "0.0.
|
|
56
|
-
"@teambit/variants": "0.0.
|
|
47
|
+
"@teambit/compiler": "0.0.881",
|
|
48
|
+
"@teambit/component": "0.0.881",
|
|
49
|
+
"@teambit/graphql": "0.0.881",
|
|
50
|
+
"@teambit/aspect-loader": "0.0.881",
|
|
51
|
+
"@teambit/bundler": "0.0.881",
|
|
52
|
+
"@teambit/dependency-resolver": "0.0.881",
|
|
53
|
+
"@teambit/envs": "0.0.881",
|
|
54
|
+
"@teambit/pubsub": "0.0.881",
|
|
55
|
+
"@teambit/ui": "0.0.881",
|
|
56
|
+
"@teambit/variants": "0.0.694",
|
|
57
57
|
"@teambit/component-issues": "0.0.73",
|
|
58
|
-
"@teambit/config": "0.0.
|
|
58
|
+
"@teambit/config": "0.0.604",
|
|
59
59
|
"@teambit/harmony.modules.requireable-component": "0.0.490",
|
|
60
60
|
"@teambit/workspace.modules.match-pattern": "0.0.495",
|
|
61
|
-
"@teambit/component.ui.component-drawer": "0.0.
|
|
61
|
+
"@teambit/component.ui.component-drawer": "0.0.145",
|
|
62
62
|
"@teambit/design.ui.tree": "0.0.12",
|
|
63
|
-
"@teambit/lanes.hooks.use-lane-components": "0.0.
|
|
64
|
-
"@teambit/ui-foundation.ui.side-bar": "0.0.
|
|
65
|
-
"@teambit/command-bar": "0.0.
|
|
66
|
-
"@teambit/component.ui.component-filters.component-filter-context": "0.0.
|
|
67
|
-
"@teambit/component.ui.component-filters.deprecate-filter": "0.0.
|
|
68
|
-
"@teambit/component.ui.component-filters.env-filter": "0.0.
|
|
69
|
-
"@teambit/component.ui.component-filters.show-main-filter": "0.0.
|
|
70
|
-
"@teambit/graph": "0.0.
|
|
71
|
-
"@teambit/sidebar": "0.0.
|
|
63
|
+
"@teambit/lanes.hooks.use-lane-components": "0.0.50",
|
|
64
|
+
"@teambit/ui-foundation.ui.side-bar": "0.0.662",
|
|
65
|
+
"@teambit/command-bar": "0.0.881",
|
|
66
|
+
"@teambit/component.ui.component-filters.component-filter-context": "0.0.20",
|
|
67
|
+
"@teambit/component.ui.component-filters.deprecate-filter": "0.0.20",
|
|
68
|
+
"@teambit/component.ui.component-filters.env-filter": "0.0.26",
|
|
69
|
+
"@teambit/component.ui.component-filters.show-main-filter": "0.0.13",
|
|
70
|
+
"@teambit/graph": "0.0.881",
|
|
71
|
+
"@teambit/sidebar": "0.0.881",
|
|
72
72
|
"@teambit/ui-foundation.ui.main-dropdown": "0.0.493",
|
|
73
73
|
"@teambit/ui-foundation.ui.menu": "0.0.493",
|
|
74
74
|
"@teambit/ui-foundation.ui.react-router.slot-router": "0.0.496",
|
|
75
75
|
"@teambit/ui-foundation.ui.tree.drawer": "0.0.507",
|
|
76
76
|
"@teambit/ui-foundation.ui.hooks.use-data-query": "0.0.496",
|
|
77
|
-
"@teambit/component-descriptor": "0.0.
|
|
78
|
-
"@teambit/deprecation": "0.0.
|
|
77
|
+
"@teambit/component-descriptor": "0.0.159",
|
|
78
|
+
"@teambit/deprecation": "0.0.881",
|
|
79
79
|
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.494",
|
|
80
80
|
"@teambit/ui-foundation.ui.buttons.collapser": "0.0.202",
|
|
81
81
|
"@teambit/ui-foundation.ui.corner": "0.0.504",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"peerDependencies": {
|
|
103
103
|
"react-router-dom": "^6.0.0",
|
|
104
104
|
"@apollo/client": "^3.6.0",
|
|
105
|
-
"@teambit/legacy": "1.0.
|
|
105
|
+
"@teambit/legacy": "1.0.374",
|
|
106
106
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
107
107
|
"react": "^16.8.0 || ^17.0.0"
|
|
108
108
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.881/dist/workspace.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@0.0.881/dist/workspace.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
Binary file
|