@teambit/workspace 1.0.124 → 1.0.126
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/artifacts/preview/static/css/teambit.workspace/{workspace-preview.4f943af0.css → workspace-preview.65558198.css} +2 -2
- package/artifacts/preview/teambit_workspace_workspace-preview.js +1 -1
- package/dist/{preview-1704358107276.js → preview-1704511392073.js} +2 -2
- package/dist/workspace-aspects-loader.d.ts +1 -1
- package/dist/workspace-aspects-loader.js.map +1 -1
- package/dist/workspace-component/component-status-loader.d.ts +38 -0
- package/dist/workspace-component/component-status-loader.js +189 -0
- package/dist/workspace-component/component-status-loader.js.map +1 -0
- package/dist/workspace-component/component-status.d.ts +2 -2
- package/dist/workspace-component/component-status.js.map +1 -1
- package/dist/workspace.d.ts +11 -5
- package/dist/workspace.js +46 -11
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.main.runtime.d.ts +62 -9
- package/dist/workspace.main.runtime.js +252 -17
- package/dist/workspace.main.runtime.js.map +1 -1
- package/package.json +23 -23
- package/workspace-component/component-status-loader.ts +135 -0
- package/workspace-component/component-status.ts +2 -2
- package/dist/workspace.provider.d.ts +0 -54
- package/dist/workspace.provider.js +0 -263
- package/dist/workspace.provider.js.map +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import mapSeries from 'p-map-series';
|
|
2
|
+
import { ComponentID, ComponentIdList } from '@teambit/component-id';
|
|
3
|
+
import { BitError } from '@teambit/bit-error';
|
|
4
|
+
import { VERSION_ZERO } from '@teambit/legacy/dist/scope/models/model-component';
|
|
5
|
+
import { Consumer } from '@teambit/legacy/dist/consumer';
|
|
6
|
+
import { LATEST } from '@teambit/legacy/dist/constants';
|
|
7
|
+
import { ModelComponent } from '@teambit/legacy/dist/scope/models';
|
|
8
|
+
import { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';
|
|
9
|
+
import ComponentsPendingImport from '@teambit/legacy/dist/consumer/component-ops/exceptions/components-pending-import';
|
|
10
|
+
import ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';
|
|
11
|
+
import MissingFilesFromComponent from '@teambit/legacy/dist/consumer/component/exceptions/missing-files-from-component';
|
|
12
|
+
import ComponentOutOfSync from '@teambit/legacy/dist/consumer/exceptions/component-out-of-sync';
|
|
13
|
+
import { Workspace } from '..';
|
|
14
|
+
|
|
15
|
+
export type ComponentStatusLegacy = {
|
|
16
|
+
modified: boolean;
|
|
17
|
+
newlyCreated: boolean;
|
|
18
|
+
deleted: boolean;
|
|
19
|
+
staged: boolean;
|
|
20
|
+
notExist: boolean;
|
|
21
|
+
missingFromScope: boolean;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type ComponentStatusResult = { id: ComponentID; status: ComponentStatusLegacy };
|
|
25
|
+
|
|
26
|
+
export class ComponentStatusLoader {
|
|
27
|
+
private _componentsStatusCache: Record<string, any> = {}; // cache loaded components
|
|
28
|
+
constructor(private workspace: Workspace) {}
|
|
29
|
+
|
|
30
|
+
get consumer(): Consumer {
|
|
31
|
+
return this.workspace.consumer;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async getManyComponentsStatuses(ids: ComponentID[]): Promise<ComponentStatusResult[]> {
|
|
35
|
+
const results: ComponentStatusResult[] = [];
|
|
36
|
+
await mapSeries(ids, async (id) => {
|
|
37
|
+
const status = await this.getComponentStatusById(id);
|
|
38
|
+
results.push({ id, status });
|
|
39
|
+
});
|
|
40
|
+
return results;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get a component status by ID. Return a ComponentStatus object.
|
|
45
|
+
* Keep in mind that a result can be a partial object of ComponentStatus, e.g. { notExist: true }.
|
|
46
|
+
* Each one of the ComponentStatus properties can be undefined, true or false.
|
|
47
|
+
* As a result, in order to check whether a component is not modified use (status.modified === false).
|
|
48
|
+
* Don't use (!status.modified) because a component may not exist and the status.modified will be undefined.
|
|
49
|
+
*
|
|
50
|
+
* The status may have 'true' for several properties. For example, a component can be staged and modified at the
|
|
51
|
+
* same time.
|
|
52
|
+
*
|
|
53
|
+
* The result is cached per ID and can be called several times with no penalties.
|
|
54
|
+
*/
|
|
55
|
+
async getComponentStatusById(id: ComponentID): Promise<ComponentStatusLegacy> {
|
|
56
|
+
if (!this._componentsStatusCache[id.toString()]) {
|
|
57
|
+
this._componentsStatusCache[id.toString()] = await this.getStatus(id);
|
|
58
|
+
}
|
|
59
|
+
return this._componentsStatusCache[id.toString()];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private async getStatus(id: ComponentID) {
|
|
63
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
64
|
+
const status: ComponentStatusLegacy = {};
|
|
65
|
+
const componentFromModel: ModelComponent | undefined = await this.consumer.scope.getModelComponentIfExist(id);
|
|
66
|
+
let componentFromFileSystem;
|
|
67
|
+
try {
|
|
68
|
+
// change to 'latest' before loading from FS. don't change to null, otherwise, it'll cause
|
|
69
|
+
// loadOne to not find model component as it assumes there is no version
|
|
70
|
+
// also, don't leave the id as is, otherwise, it'll cause issues with import --merge, when
|
|
71
|
+
// imported version is bigger than .bitmap, it won't find it and will consider as deleted
|
|
72
|
+
const { components, removedComponents } = await this.consumer.loadComponents(
|
|
73
|
+
new ComponentIdList(id.changeVersion(LATEST))
|
|
74
|
+
);
|
|
75
|
+
if (removedComponents.length) {
|
|
76
|
+
status.deleted = true;
|
|
77
|
+
return status;
|
|
78
|
+
}
|
|
79
|
+
componentFromFileSystem = components[0];
|
|
80
|
+
} catch (err: any) {
|
|
81
|
+
if (
|
|
82
|
+
err instanceof MissingFilesFromComponent ||
|
|
83
|
+
err instanceof ComponentNotFoundInPath ||
|
|
84
|
+
err instanceof MissingBitMapComponent
|
|
85
|
+
) {
|
|
86
|
+
// the file/s have been deleted or the component doesn't exist in bit.map file
|
|
87
|
+
if (componentFromModel) status.deleted = true;
|
|
88
|
+
else status.notExist = true;
|
|
89
|
+
return status;
|
|
90
|
+
}
|
|
91
|
+
if (err instanceof ComponentsPendingImport) {
|
|
92
|
+
status.missingFromScope;
|
|
93
|
+
return status;
|
|
94
|
+
}
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
if (!componentFromModel) {
|
|
98
|
+
status.newlyCreated = true;
|
|
99
|
+
return status;
|
|
100
|
+
}
|
|
101
|
+
if (componentFromModel.getHeadRegardlessOfLaneAsTagOrHash(true) === VERSION_ZERO) {
|
|
102
|
+
status.newlyCreated = true;
|
|
103
|
+
return status;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const lane = await this.consumer.getCurrentLaneObject();
|
|
107
|
+
await componentFromModel.setDivergeData(this.consumer.scope.objects);
|
|
108
|
+
status.staged = await componentFromModel.isLocallyChanged(this.consumer.scope.objects, lane);
|
|
109
|
+
const versionFromFs = componentFromFileSystem.id.version;
|
|
110
|
+
const idStr = id.toString();
|
|
111
|
+
if (!componentFromFileSystem.id.hasVersion()) {
|
|
112
|
+
throw new ComponentOutOfSync(idStr);
|
|
113
|
+
}
|
|
114
|
+
// TODO: instead of doing that like this we should use:
|
|
115
|
+
// const versionFromModel = await componentFromModel.loadVersion(versionFromFs, this.consumer.scope.objects);
|
|
116
|
+
// it looks like it's exactly the same code but it's not working from some reason
|
|
117
|
+
const versionRef = componentFromModel.getRef(versionFromFs);
|
|
118
|
+
if (!versionRef) throw new BitError(`version ${versionFromFs} was not found in ${idStr}`);
|
|
119
|
+
const versionFromModel = await this.consumer.scope.getObject(versionRef.hash);
|
|
120
|
+
if (!versionFromModel) {
|
|
121
|
+
throw new BitError(`failed loading version ${versionFromFs} of ${idStr} from the scope`);
|
|
122
|
+
}
|
|
123
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
124
|
+
status.modified = await this.consumer.isComponentModified(versionFromModel, componentFromFileSystem);
|
|
125
|
+
return status;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
clearOneComponentCache(id: ComponentID) {
|
|
129
|
+
delete this._componentsStatusCache[id.toString()];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
clearCache() {
|
|
133
|
+
this._componentsStatusCache = {};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentStatusLegacy } from './component-status-loader';
|
|
2
2
|
|
|
3
3
|
export type ModifyInfo = {
|
|
4
4
|
hasModifiedFiles: boolean;
|
|
@@ -49,7 +49,7 @@ export class ComponentStatus {
|
|
|
49
49
|
readonly nested?: boolean
|
|
50
50
|
) {}
|
|
51
51
|
|
|
52
|
-
static fromLegacy(status:
|
|
52
|
+
static fromLegacy(status: ComponentStatusLegacy, hasModifiedDependencies: boolean, isOutdated: boolean) {
|
|
53
53
|
const modify: ModifyInfo = {
|
|
54
54
|
hasModifiedFiles: !!status.modified,
|
|
55
55
|
hasModifiedDependencies,
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { PubsubMain } from '@teambit/pubsub';
|
|
2
|
-
import type { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
3
|
-
import { BundlerMain } from '@teambit/bundler';
|
|
4
|
-
import { CLIMain } from '@teambit/cli';
|
|
5
|
-
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
6
|
-
import type { ComponentMain, Component } from '@teambit/component';
|
|
7
|
-
import { EnvsMain } from '@teambit/envs';
|
|
8
|
-
import { GraphqlMain } from '@teambit/graphql';
|
|
9
|
-
import { Harmony, SlotRegistry } from '@teambit/harmony';
|
|
10
|
-
import { IsolatorMain } from '@teambit/isolator';
|
|
11
|
-
import { LoggerMain } from '@teambit/logger';
|
|
12
|
-
import type { ScopeMain } from '@teambit/scope';
|
|
13
|
-
import { UiMain } from '@teambit/ui';
|
|
14
|
-
import type { VariantsMain } from '@teambit/variants';
|
|
15
|
-
import { ComponentID } from '@teambit/component-id';
|
|
16
|
-
import { GlobalConfigMain } from '@teambit/global-config';
|
|
17
|
-
import { OnComponentLoad, OnComponentAdd, OnComponentChange, OnComponentRemove } from './on-component-events';
|
|
18
|
-
import { WorkspaceExtConfig } from './types';
|
|
19
|
-
import { Workspace } from './workspace';
|
|
20
|
-
export type WorkspaceDeps = [
|
|
21
|
-
PubsubMain,
|
|
22
|
-
CLIMain,
|
|
23
|
-
ScopeMain,
|
|
24
|
-
ComponentMain,
|
|
25
|
-
IsolatorMain,
|
|
26
|
-
DependencyResolverMain,
|
|
27
|
-
VariantsMain,
|
|
28
|
-
LoggerMain,
|
|
29
|
-
GraphqlMain,
|
|
30
|
-
UiMain,
|
|
31
|
-
BundlerMain,
|
|
32
|
-
AspectLoaderMain,
|
|
33
|
-
EnvsMain,
|
|
34
|
-
GlobalConfigMain
|
|
35
|
-
];
|
|
36
|
-
export type OnComponentLoadSlot = SlotRegistry<OnComponentLoad>;
|
|
37
|
-
export type OnComponentChangeSlot = SlotRegistry<OnComponentChange>;
|
|
38
|
-
export type OnComponentAddSlot = SlotRegistry<OnComponentAdd>;
|
|
39
|
-
export type OnComponentRemoveSlot = SlotRegistry<OnComponentRemove>;
|
|
40
|
-
export type OnBitmapChange = () => Promise<void>;
|
|
41
|
-
export type OnBitmapChangeSlot = SlotRegistry<OnBitmapChange>;
|
|
42
|
-
export type OnAspectsResolve = (aspectsComponents: Component[]) => Promise<void>;
|
|
43
|
-
export type OnAspectsResolveSlot = SlotRegistry<OnAspectsResolve>;
|
|
44
|
-
export type OnRootAspectAdded = (aspectsId: ComponentID, inWs: boolean) => Promise<void>;
|
|
45
|
-
export type OnRootAspectAddedSlot = SlotRegistry<OnRootAspectAdded>;
|
|
46
|
-
export default function provideWorkspace([pubsub, cli, scope, component, isolator, dependencyResolver, variants, loggerExt, graphql, ui, bundler, aspectLoader, envs, globalConfig,]: WorkspaceDeps, config: WorkspaceExtConfig, [onComponentLoadSlot, onComponentChangeSlot, onComponentAddSlot, onComponentRemoveSlot, onAspectsResolveSlot, onRootAspectAddedSlot, onBitmapChangeSlot,]: [
|
|
47
|
-
OnComponentLoadSlot,
|
|
48
|
-
OnComponentChangeSlot,
|
|
49
|
-
OnComponentAddSlot,
|
|
50
|
-
OnComponentRemoveSlot,
|
|
51
|
-
OnAspectsResolveSlot,
|
|
52
|
-
OnRootAspectAddedSlot,
|
|
53
|
-
OnBitmapChangeSlot
|
|
54
|
-
], harmony: Harmony): Promise<Workspace>;
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = provideWorkspace;
|
|
7
|
-
function _dependencyResolver() {
|
|
8
|
-
const data = require("@teambit/dependency-resolver");
|
|
9
|
-
_dependencyResolver = function () {
|
|
10
|
-
return data;
|
|
11
|
-
};
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
|
-
function _consumer() {
|
|
15
|
-
const data = require("@teambit/legacy/dist/consumer");
|
|
16
|
-
_consumer = function () {
|
|
17
|
-
return data;
|
|
18
|
-
};
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
function _component() {
|
|
22
|
-
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component"));
|
|
23
|
-
_component = function () {
|
|
24
|
-
return data;
|
|
25
|
-
};
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
function _extensionData() {
|
|
29
|
-
const data = require("@teambit/legacy/dist/consumer/config/extension-data");
|
|
30
|
-
_extensionData = function () {
|
|
31
|
-
return data;
|
|
32
|
-
};
|
|
33
|
-
return data;
|
|
34
|
-
}
|
|
35
|
-
function _componentLoader() {
|
|
36
|
-
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component/component-loader"));
|
|
37
|
-
_componentLoader = function () {
|
|
38
|
-
return data;
|
|
39
|
-
};
|
|
40
|
-
return data;
|
|
41
|
-
}
|
|
42
|
-
function _constants() {
|
|
43
|
-
const data = require("./constants");
|
|
44
|
-
_constants = function () {
|
|
45
|
-
return data;
|
|
46
|
-
};
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
function _ejectConf() {
|
|
50
|
-
const data = _interopRequireDefault(require("./eject-conf.cmd"));
|
|
51
|
-
_ejectConf = function () {
|
|
52
|
-
return data;
|
|
53
|
-
};
|
|
54
|
-
return data;
|
|
55
|
-
}
|
|
56
|
-
function _workspace() {
|
|
57
|
-
const data = require("./workspace");
|
|
58
|
-
_workspace = function () {
|
|
59
|
-
return data;
|
|
60
|
-
};
|
|
61
|
-
return data;
|
|
62
|
-
}
|
|
63
|
-
function _workspace2() {
|
|
64
|
-
const data = _interopRequireDefault(require("./workspace.graphql"));
|
|
65
|
-
_workspace2 = function () {
|
|
66
|
-
return data;
|
|
67
|
-
};
|
|
68
|
-
return data;
|
|
69
|
-
}
|
|
70
|
-
function _workspace3() {
|
|
71
|
-
const data = require("./workspace.ui-root");
|
|
72
|
-
_workspace3 = function () {
|
|
73
|
-
return data;
|
|
74
|
-
};
|
|
75
|
-
return data;
|
|
76
|
-
}
|
|
77
|
-
function _capsule() {
|
|
78
|
-
const data = require("./capsule.cmd");
|
|
79
|
-
_capsule = function () {
|
|
80
|
-
return data;
|
|
81
|
-
};
|
|
82
|
-
return data;
|
|
83
|
-
}
|
|
84
|
-
function _envsSet() {
|
|
85
|
-
const data = require("./envs-subcommands/envs-set.cmd");
|
|
86
|
-
_envsSet = function () {
|
|
87
|
-
return data;
|
|
88
|
-
};
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
function _envsUnset() {
|
|
92
|
-
const data = require("./envs-subcommands/envs-unset.cmd");
|
|
93
|
-
_envsUnset = function () {
|
|
94
|
-
return data;
|
|
95
|
-
};
|
|
96
|
-
return data;
|
|
97
|
-
}
|
|
98
|
-
function _pattern() {
|
|
99
|
-
const data = require("./pattern.cmd");
|
|
100
|
-
_pattern = function () {
|
|
101
|
-
return data;
|
|
102
|
-
};
|
|
103
|
-
return data;
|
|
104
|
-
}
|
|
105
|
-
function _envsReplace() {
|
|
106
|
-
const data = require("./envs-subcommands/envs-replace.cmd");
|
|
107
|
-
_envsReplace = function () {
|
|
108
|
-
return data;
|
|
109
|
-
};
|
|
110
|
-
return data;
|
|
111
|
-
}
|
|
112
|
-
function _scopeSet() {
|
|
113
|
-
const data = require("./scope-subcommands/scope-set.cmd");
|
|
114
|
-
_scopeSet = function () {
|
|
115
|
-
return data;
|
|
116
|
-
};
|
|
117
|
-
return data;
|
|
118
|
-
}
|
|
119
|
-
function _use() {
|
|
120
|
-
const data = require("./use.cmd");
|
|
121
|
-
_use = function () {
|
|
122
|
-
return data;
|
|
123
|
-
};
|
|
124
|
-
return data;
|
|
125
|
-
}
|
|
126
|
-
function _envsUpdate() {
|
|
127
|
-
const data = require("./envs-subcommands/envs-update.cmd");
|
|
128
|
-
_envsUpdate = function () {
|
|
129
|
-
return data;
|
|
130
|
-
};
|
|
131
|
-
return data;
|
|
132
|
-
}
|
|
133
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
134
|
-
async function provideWorkspace([pubsub, cli, scope, component, isolator, dependencyResolver, variants, loggerExt, graphql, ui, bundler, aspectLoader, envs, globalConfig], config, [onComponentLoadSlot, onComponentChangeSlot, onComponentAddSlot, onComponentRemoveSlot, onAspectsResolveSlot, onRootAspectAddedSlot, onBitmapChangeSlot], harmony) {
|
|
135
|
-
const bitConfig = harmony.config.get('teambit.harmony/bit');
|
|
136
|
-
const consumer = await getConsumer(bitConfig.cwd);
|
|
137
|
-
if (!consumer) {
|
|
138
|
-
const capsuleCmd = getCapsulesCommands(isolator, scope, undefined);
|
|
139
|
-
cli.register(capsuleCmd);
|
|
140
|
-
return undefined;
|
|
141
|
-
}
|
|
142
|
-
// TODO: get the 'workspace' name in a better way
|
|
143
|
-
const logger = loggerExt.createLogger(_constants().EXT_NAME);
|
|
144
|
-
const workspace = new (_workspace().Workspace)(pubsub, config, consumer, scope, component, dependencyResolver, variants, aspectLoader, logger, undefined, harmony, onComponentLoadSlot, onComponentChangeSlot, envs, globalConfig, onComponentAddSlot, onComponentRemoveSlot, onAspectsResolveSlot, onRootAspectAddedSlot, graphql, onBitmapChangeSlot);
|
|
145
|
-
const configMergeFile = workspace.getConflictMergeFile();
|
|
146
|
-
await configMergeFile.loadIfNeeded();
|
|
147
|
-
const getWorkspacePolicyFromPackageJson = () => {
|
|
148
|
-
const packageJson = workspace.consumer.packageJson?.packageJsonObject || {};
|
|
149
|
-
const policyFromPackageJson = dependencyResolver.getWorkspacePolicyFromPackageJson(packageJson);
|
|
150
|
-
return policyFromPackageJson;
|
|
151
|
-
};
|
|
152
|
-
const getWorkspacePolicyFromMergeConfig = () => {
|
|
153
|
-
const wsConfigMerge = workspace.getWorkspaceJsonConflictFromMergeConfig();
|
|
154
|
-
const policy = wsConfigMerge.data?.[_dependencyResolver().DependencyResolverAspect.id]?.policy || {};
|
|
155
|
-
['dependencies', 'peerDependencies'].forEach(depField => {
|
|
156
|
-
if (!policy[depField]) return;
|
|
157
|
-
policy[depField] = policy[depField].reduce((acc, current) => {
|
|
158
|
-
acc[current.name] = current.version;
|
|
159
|
-
return acc;
|
|
160
|
-
}, {});
|
|
161
|
-
});
|
|
162
|
-
const wsPolicy = dependencyResolver.getWorkspacePolicyFromConfigObject(policy);
|
|
163
|
-
return wsPolicy;
|
|
164
|
-
};
|
|
165
|
-
const getRootPolicy = () => {
|
|
166
|
-
const pkgJsonPolicy = getWorkspacePolicyFromPackageJson();
|
|
167
|
-
const configMergePolicy = getWorkspacePolicyFromMergeConfig();
|
|
168
|
-
return dependencyResolver.mergeWorkspacePolices([pkgJsonPolicy, configMergePolicy]);
|
|
169
|
-
};
|
|
170
|
-
dependencyResolver.registerRootPolicy(getRootPolicy());
|
|
171
|
-
consumer.onCacheClear.push(() => workspace.clearCache());
|
|
172
|
-
_componentLoader().default.registerOnComponentLoadSubscriber(async (legacyComponent, opts) => {
|
|
173
|
-
if (opts?.originatedFromHarmony) return legacyComponent;
|
|
174
|
-
const id = await workspace.resolveComponentId(legacyComponent.id);
|
|
175
|
-
const newComponent = await workspace.get(id, legacyComponent, true, true, opts);
|
|
176
|
-
return newComponent.state._consumer;
|
|
177
|
-
});
|
|
178
|
-
_component().default.registerOnComponentConfigLoading(_constants().EXT_NAME, async (id, loadOpts) => {
|
|
179
|
-
const componentId = await workspace.resolveComponentId(id);
|
|
180
|
-
// We call here directly workspace.scope.get instead of workspace.get because part of the workspace get is loading consumer component
|
|
181
|
-
// which in turn run this event, which will make an infinite loop
|
|
182
|
-
// This component from scope here are only used for merging the extensions with the workspace components
|
|
183
|
-
const componentFromScope = await workspace.scope.get(componentId);
|
|
184
|
-
const {
|
|
185
|
-
extensions
|
|
186
|
-
} = await workspace.componentExtensions(componentId, componentFromScope, undefined, loadOpts);
|
|
187
|
-
const defaultScope = await workspace.componentDefaultScope(componentId);
|
|
188
|
-
const extensionsWithLegacyIdsP = extensions.map(async extension => {
|
|
189
|
-
const legacyEntry = extension.clone();
|
|
190
|
-
if (legacyEntry.extensionId) {
|
|
191
|
-
legacyEntry.newExtensionId = legacyEntry.extensionId;
|
|
192
|
-
}
|
|
193
|
-
return legacyEntry;
|
|
194
|
-
});
|
|
195
|
-
const extensionsWithLegacyIds = await Promise.all(extensionsWithLegacyIdsP);
|
|
196
|
-
return {
|
|
197
|
-
defaultScope,
|
|
198
|
-
extensions: _extensionData().ExtensionDataList.fromArray(extensionsWithLegacyIds)
|
|
199
|
-
};
|
|
200
|
-
});
|
|
201
|
-
const workspaceSchema = (0, _workspace2().default)(workspace, graphql);
|
|
202
|
-
ui.registerUiRoot(new (_workspace3().WorkspaceUIRoot)(workspace, bundler));
|
|
203
|
-
ui.registerPreStart(async () => {
|
|
204
|
-
return workspace.setComponentPathsRegExps();
|
|
205
|
-
});
|
|
206
|
-
graphql.register(workspaceSchema);
|
|
207
|
-
const capsuleCmd = getCapsulesCommands(isolator, scope, workspace);
|
|
208
|
-
const commands = [new (_ejectConf().default)(workspace), capsuleCmd, new (_use().UseCmd)(workspace)];
|
|
209
|
-
commands.push(new (_pattern().PatternCommand)(workspace));
|
|
210
|
-
cli.register(...commands);
|
|
211
|
-
component.registerHost(workspace);
|
|
212
|
-
cli.registerOnStart(async (_hasWorkspace, currentCommand) => {
|
|
213
|
-
if (currentCommand === 'mini-status' || currentCommand === 'ms') {
|
|
214
|
-
return; // mini-status should be super fast.
|
|
215
|
-
}
|
|
216
|
-
if (currentCommand === 'install') {
|
|
217
|
-
workspace.inInstallContext = true;
|
|
218
|
-
}
|
|
219
|
-
await workspace.importCurrentLaneIfMissing();
|
|
220
|
-
const loadAspectsOpts = {
|
|
221
|
-
runSubscribers: false,
|
|
222
|
-
skipDeps: !config.autoLoadAspectsDeps
|
|
223
|
-
};
|
|
224
|
-
const aspects = await workspace.loadAspects(aspectLoader.getNotLoadedConfiguredExtensions(), undefined, 'teambit.workspace/workspace (cli.registerOnStart)', loadAspectsOpts);
|
|
225
|
-
// clear aspect cache.
|
|
226
|
-
const componentIds = await workspace.resolveMultipleComponentIds(aspects);
|
|
227
|
-
componentIds.forEach(id => {
|
|
228
|
-
workspace.clearComponentCache(id);
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
// add sub-commands "set" and "unset" to envs command.
|
|
233
|
-
const envsCommand = cli.getCommand('envs');
|
|
234
|
-
envsCommand?.commands?.push(new (_envsSet().EnvsSetCmd)(workspace)); // bit envs set
|
|
235
|
-
envsCommand?.commands?.push(new (_envsUnset().EnvsUnsetCmd)(workspace)); // bit envs unset
|
|
236
|
-
envsCommand?.commands?.push(new (_envsReplace().EnvsReplaceCmd)(workspace)); // bit envs replace
|
|
237
|
-
envsCommand?.commands?.push(new (_envsUpdate().EnvsUpdateCmd)(workspace)); // bit envs replace
|
|
238
|
-
|
|
239
|
-
// add sub-command "set" to scope command.
|
|
240
|
-
const scopeCommand = cli.getCommand('scope');
|
|
241
|
-
scopeCommand?.commands?.push(new (_scopeSet().ScopeSetCmd)(workspace));
|
|
242
|
-
return workspace;
|
|
243
|
-
}
|
|
244
|
-
function getCapsulesCommands(isolator, scope, workspace) {
|
|
245
|
-
const capsuleCmd = new (_capsule().CapsuleCmd)(isolator, workspace, scope);
|
|
246
|
-
capsuleCmd.commands = [new (_capsule().CapsuleListCmd)(isolator, workspace, scope), new (_capsule().CapsuleCreateCmd)(workspace, scope, isolator), new (_capsule().CapsuleDeleteCmd)(isolator, scope, workspace)];
|
|
247
|
-
return capsuleCmd;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* don't use loadConsumer() here, which throws ConsumerNotFound because some commands don't require
|
|
252
|
-
* the consumer to be available. such as, `bit init` or `bit list --remote`.
|
|
253
|
-
* most of the commands do need the consumer. the legacy commands that need the consumer throw an
|
|
254
|
-
* error when is missing. in the new/Harmony commands, such as `bis compile`, the workspace object
|
|
255
|
-
* is passed to the provider, so before using it, make sure it exists.
|
|
256
|
-
* keep in mind that you can't verify it in the provider itself, because the provider is running
|
|
257
|
-
* always for all commands before anything else is happening.
|
|
258
|
-
*/
|
|
259
|
-
async function getConsumer(path) {
|
|
260
|
-
return (0, _consumer().loadConsumerIfExist)(path);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
//# sourceMappingURL=workspace.provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_dependencyResolver","data","require","_consumer","_component","_interopRequireDefault","_extensionData","_componentLoader","_constants","_ejectConf","_workspace","_workspace2","_workspace3","_capsule","_envsSet","_envsUnset","_pattern","_envsReplace","_scopeSet","_use","_envsUpdate","obj","__esModule","default","provideWorkspace","pubsub","cli","scope","component","isolator","dependencyResolver","variants","loggerExt","graphql","ui","bundler","aspectLoader","envs","globalConfig","config","onComponentLoadSlot","onComponentChangeSlot","onComponentAddSlot","onComponentRemoveSlot","onAspectsResolveSlot","onRootAspectAddedSlot","onBitmapChangeSlot","harmony","bitConfig","get","consumer","getConsumer","cwd","capsuleCmd","getCapsulesCommands","undefined","register","logger","createLogger","EXT_NAME","workspace","Workspace","configMergeFile","getConflictMergeFile","loadIfNeeded","getWorkspacePolicyFromPackageJson","packageJson","packageJsonObject","policyFromPackageJson","getWorkspacePolicyFromMergeConfig","wsConfigMerge","getWorkspaceJsonConflictFromMergeConfig","policy","DependencyResolverAspect","id","forEach","depField","reduce","acc","current","name","version","wsPolicy","getWorkspacePolicyFromConfigObject","getRootPolicy","pkgJsonPolicy","configMergePolicy","mergeWorkspacePolices","registerRootPolicy","onCacheClear","push","clearCache","LegacyComponentLoader","registerOnComponentLoadSubscriber","legacyComponent","opts","originatedFromHarmony","resolveComponentId","newComponent","state","ConsumerComponent","registerOnComponentConfigLoading","loadOpts","componentId","componentFromScope","extensions","componentExtensions","defaultScope","componentDefaultScope","extensionsWithLegacyIdsP","map","extension","legacyEntry","clone","extensionId","newExtensionId","extensionsWithLegacyIds","Promise","all","ExtensionDataList","fromArray","workspaceSchema","getWorkspaceSchema","registerUiRoot","WorkspaceUIRoot","registerPreStart","setComponentPathsRegExps","commands","EjectConfCmd","UseCmd","PatternCommand","registerHost","registerOnStart","_hasWorkspace","currentCommand","inInstallContext","importCurrentLaneIfMissing","loadAspectsOpts","runSubscribers","skipDeps","autoLoadAspectsDeps","aspects","loadAspects","getNotLoadedConfiguredExtensions","componentIds","resolveMultipleComponentIds","clearComponentCache","envsCommand","getCommand","EnvsSetCmd","EnvsUnsetCmd","EnvsReplaceCmd","EnvsUpdateCmd","scopeCommand","ScopeSetCmd","CapsuleCmd","CapsuleListCmd","CapsuleCreateCmd","CapsuleDeleteCmd","path","loadConsumerIfExist"],"sources":["workspace.provider.ts"],"sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { BundlerMain } from '@teambit/bundler';\nimport { CLIMain, CommandList } from '@teambit/cli';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport type { ComponentMain, Component } from '@teambit/component';\nimport { EnvsMain } from '@teambit/envs';\nimport { GraphqlMain } from '@teambit/graphql';\nimport { Harmony, SlotRegistry } from '@teambit/harmony';\nimport { IsolatorMain } from '@teambit/isolator';\nimport { LoggerMain } from '@teambit/logger';\nimport type { ScopeMain } from '@teambit/scope';\nimport { UiMain } from '@teambit/ui';\nimport type { VariantsMain } from '@teambit/variants';\nimport { Consumer, loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport type { ComponentConfigLoadOptions } from '@teambit/legacy/dist/consumer/config';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport LegacyComponentLoader, { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { ComponentID } from '@teambit/component-id';\nimport { GlobalConfigMain } from '@teambit/global-config';\nimport { EXT_NAME } from './constants';\nimport EjectConfCmd from './eject-conf.cmd';\nimport { OnComponentLoad, OnComponentAdd, OnComponentChange, OnComponentRemove } from './on-component-events';\nimport { WorkspaceExtConfig } from './types';\nimport { Workspace } from './workspace';\nimport getWorkspaceSchema from './workspace.graphql';\nimport { WorkspaceUIRoot } from './workspace.ui-root';\nimport { CapsuleCmd, CapsuleCreateCmd, CapsuleDeleteCmd, CapsuleListCmd } from './capsule.cmd';\nimport { EnvsSetCmd } from './envs-subcommands/envs-set.cmd';\nimport { EnvsUnsetCmd } from './envs-subcommands/envs-unset.cmd';\nimport { PatternCommand } from './pattern.cmd';\nimport { EnvsReplaceCmd } from './envs-subcommands/envs-replace.cmd';\nimport { ScopeSetCmd } from './scope-subcommands/scope-set.cmd';\nimport { UseCmd } from './use.cmd';\nimport { EnvsUpdateCmd } from './envs-subcommands/envs-update.cmd';\n\nexport type WorkspaceDeps = [\n PubsubMain,\n CLIMain,\n ScopeMain,\n ComponentMain,\n IsolatorMain,\n DependencyResolverMain,\n VariantsMain,\n LoggerMain,\n GraphqlMain,\n UiMain,\n BundlerMain,\n AspectLoaderMain,\n EnvsMain,\n GlobalConfigMain\n];\n\nexport type OnComponentLoadSlot = SlotRegistry<OnComponentLoad>;\n\nexport type OnComponentChangeSlot = SlotRegistry<OnComponentChange>;\n\nexport type OnComponentAddSlot = SlotRegistry<OnComponentAdd>;\n\nexport type OnComponentRemoveSlot = SlotRegistry<OnComponentRemove>;\n\nexport type OnBitmapChange = () => Promise<void>;\nexport type OnBitmapChangeSlot = SlotRegistry<OnBitmapChange>;\n\nexport type OnAspectsResolve = (aspectsComponents: Component[]) => Promise<void>;\nexport type OnAspectsResolveSlot = SlotRegistry<OnAspectsResolve>;\n\nexport type OnRootAspectAdded = (aspectsId: ComponentID, inWs: boolean) => Promise<void>;\nexport type OnRootAspectAddedSlot = SlotRegistry<OnRootAspectAdded>;\n\nexport default async function provideWorkspace(\n [\n pubsub,\n cli,\n scope,\n component,\n isolator,\n dependencyResolver,\n variants,\n loggerExt,\n graphql,\n ui,\n bundler,\n aspectLoader,\n envs,\n globalConfig,\n ]: WorkspaceDeps,\n config: WorkspaceExtConfig,\n [\n onComponentLoadSlot,\n onComponentChangeSlot,\n onComponentAddSlot,\n onComponentRemoveSlot,\n onAspectsResolveSlot,\n onRootAspectAddedSlot,\n onBitmapChangeSlot,\n ]: [\n OnComponentLoadSlot,\n OnComponentChangeSlot,\n OnComponentAddSlot,\n OnComponentRemoveSlot,\n OnAspectsResolveSlot,\n OnRootAspectAddedSlot,\n OnBitmapChangeSlot\n ],\n harmony: Harmony\n) {\n const bitConfig: any = harmony.config.get('teambit.harmony/bit');\n const consumer = await getConsumer(bitConfig.cwd);\n if (!consumer) {\n const capsuleCmd = getCapsulesCommands(isolator, scope, undefined);\n cli.register(capsuleCmd);\n return undefined;\n }\n // TODO: get the 'workspace' name in a better way\n const logger = loggerExt.createLogger(EXT_NAME);\n const workspace = new Workspace(\n pubsub,\n config,\n consumer,\n scope,\n component,\n dependencyResolver,\n variants,\n aspectLoader,\n logger,\n undefined,\n harmony,\n onComponentLoadSlot,\n onComponentChangeSlot,\n envs,\n globalConfig,\n onComponentAddSlot,\n onComponentRemoveSlot,\n onAspectsResolveSlot,\n onRootAspectAddedSlot,\n graphql,\n onBitmapChangeSlot\n );\n\n const configMergeFile = workspace.getConflictMergeFile();\n await configMergeFile.loadIfNeeded();\n\n const getWorkspacePolicyFromPackageJson = () => {\n const packageJson = workspace.consumer.packageJson?.packageJsonObject || {};\n const policyFromPackageJson = dependencyResolver.getWorkspacePolicyFromPackageJson(packageJson);\n return policyFromPackageJson;\n };\n\n const getWorkspacePolicyFromMergeConfig = () => {\n const wsConfigMerge = workspace.getWorkspaceJsonConflictFromMergeConfig();\n const policy = wsConfigMerge.data?.[DependencyResolverAspect.id]?.policy || {};\n ['dependencies', 'peerDependencies'].forEach((depField) => {\n if (!policy[depField]) return;\n policy[depField] = policy[depField].reduce((acc, current) => {\n acc[current.name] = current.version;\n return acc;\n }, {});\n });\n const wsPolicy = dependencyResolver.getWorkspacePolicyFromConfigObject(policy);\n return wsPolicy;\n };\n\n const getRootPolicy = () => {\n const pkgJsonPolicy = getWorkspacePolicyFromPackageJson();\n const configMergePolicy = getWorkspacePolicyFromMergeConfig();\n return dependencyResolver.mergeWorkspacePolices([pkgJsonPolicy, configMergePolicy]);\n };\n\n dependencyResolver.registerRootPolicy(getRootPolicy());\n\n consumer.onCacheClear.push(() => workspace.clearCache());\n\n LegacyComponentLoader.registerOnComponentLoadSubscriber(\n async (legacyComponent: ConsumerComponent, opts?: ComponentLoadOptions) => {\n if (opts?.originatedFromHarmony) return legacyComponent;\n const id = await workspace.resolveComponentId(legacyComponent.id);\n const newComponent = await workspace.get(id, legacyComponent, true, true, opts);\n return newComponent.state._consumer;\n }\n );\n\n ConsumerComponent.registerOnComponentConfigLoading(EXT_NAME, async (id, loadOpts: ComponentConfigLoadOptions) => {\n const componentId = await workspace.resolveComponentId(id);\n // We call here directly workspace.scope.get instead of workspace.get because part of the workspace get is loading consumer component\n // which in turn run this event, which will make an infinite loop\n // This component from scope here are only used for merging the extensions with the workspace components\n const componentFromScope = await workspace.scope.get(componentId);\n const { extensions } = await workspace.componentExtensions(componentId, componentFromScope, undefined, loadOpts);\n const defaultScope = await workspace.componentDefaultScope(componentId);\n\n const extensionsWithLegacyIdsP = extensions.map(async (extension) => {\n const legacyEntry = extension.clone();\n if (legacyEntry.extensionId) {\n legacyEntry.newExtensionId = legacyEntry.extensionId;\n }\n\n return legacyEntry;\n });\n const extensionsWithLegacyIds = await Promise.all(extensionsWithLegacyIdsP);\n\n return {\n defaultScope,\n extensions: ExtensionDataList.fromArray(extensionsWithLegacyIds),\n };\n });\n\n const workspaceSchema = getWorkspaceSchema(workspace, graphql);\n ui.registerUiRoot(new WorkspaceUIRoot(workspace, bundler));\n ui.registerPreStart(async () => {\n return workspace.setComponentPathsRegExps();\n });\n graphql.register(workspaceSchema);\n const capsuleCmd = getCapsulesCommands(isolator, scope, workspace);\n const commands: CommandList = [new EjectConfCmd(workspace), capsuleCmd, new UseCmd(workspace)];\n\n commands.push(new PatternCommand(workspace));\n cli.register(...commands);\n component.registerHost(workspace);\n\n cli.registerOnStart(async (_hasWorkspace: boolean, currentCommand: string) => {\n if (currentCommand === 'mini-status' || currentCommand === 'ms') {\n return; // mini-status should be super fast.\n }\n if (currentCommand === 'install') {\n workspace.inInstallContext = true;\n }\n await workspace.importCurrentLaneIfMissing();\n const loadAspectsOpts = {\n runSubscribers: false,\n skipDeps: !config.autoLoadAspectsDeps,\n };\n const aspects = await workspace.loadAspects(\n aspectLoader.getNotLoadedConfiguredExtensions(),\n undefined,\n 'teambit.workspace/workspace (cli.registerOnStart)',\n loadAspectsOpts\n );\n // clear aspect cache.\n const componentIds = await workspace.resolveMultipleComponentIds(aspects);\n componentIds.forEach((id) => {\n workspace.clearComponentCache(id);\n });\n });\n\n // add sub-commands \"set\" and \"unset\" to envs command.\n const envsCommand = cli.getCommand('envs');\n envsCommand?.commands?.push(new EnvsSetCmd(workspace)); // bit envs set\n envsCommand?.commands?.push(new EnvsUnsetCmd(workspace)); // bit envs unset\n envsCommand?.commands?.push(new EnvsReplaceCmd(workspace)); // bit envs replace\n envsCommand?.commands?.push(new EnvsUpdateCmd(workspace)); // bit envs replace\n\n // add sub-command \"set\" to scope command.\n const scopeCommand = cli.getCommand('scope');\n scopeCommand?.commands?.push(new ScopeSetCmd(workspace));\n\n return workspace;\n}\n\nfunction getCapsulesCommands(isolator: IsolatorMain, scope: ScopeMain, workspace?: Workspace) {\n const capsuleCmd = new CapsuleCmd(isolator, workspace, scope);\n capsuleCmd.commands = [\n new CapsuleListCmd(isolator, workspace, scope),\n new CapsuleCreateCmd(workspace, scope, isolator),\n new CapsuleDeleteCmd(isolator, scope, workspace),\n ];\n return capsuleCmd;\n}\n\n/**\n * don't use loadConsumer() here, which throws ConsumerNotFound because some commands don't require\n * the consumer to be available. such as, `bit init` or `bit list --remote`.\n * most of the commands do need the consumer. the legacy commands that need the consumer throw an\n * error when is missing. in the new/Harmony commands, such as `bis compile`, the workspace object\n * is passed to the provider, so before using it, make sure it exists.\n * keep in mind that you can't verify it in the provider itself, because the provider is running\n * always for all commands before anything else is happening.\n */\nasync function getConsumer(path?: string): Promise<Consumer | undefined> {\n return loadConsumerIfExist(path);\n}\n"],"mappings":"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"}
|