@teambit/workspace 0.0.881 → 0.0.882
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/dist/bit-map.js +10 -51
- package/dist/bit-map.js.map +1 -1
- package/dist/build-graph-from-fs.js +1 -53
- package/dist/build-graph-from-fs.js.map +1 -1
- package/dist/capsule.cmd.js +2 -34
- package/dist/capsule.cmd.js.map +1 -1
- package/dist/component-config-file/component-config-file.js +2 -60
- package/dist/component-config-file/component-config-file.js.map +1 -1
- package/dist/component-config-file/exceptions/already-exists.js +0 -6
- package/dist/component-config-file/exceptions/already-exists.js.map +1 -1
- package/dist/component-config-file/exceptions/index.js +0 -3
- package/dist/component-config-file/exceptions/index.js.map +1 -1
- package/dist/component-config-file/index.js +0 -6
- package/dist/component-config-file/index.js.map +1 -1
- package/dist/component-tree.widget.js +0 -18
- package/dist/component-tree.widget.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/eject-conf.cmd.js +0 -23
- package/dist/eject-conf.cmd.js.map +1 -1
- package/dist/envs-subcommands/envs-replace.cmd.js +0 -13
- package/dist/envs-subcommands/envs-replace.cmd.js.map +1 -1
- package/dist/envs-subcommands/envs-set.cmd.js +0 -16
- package/dist/envs-subcommands/envs-set.cmd.js.map +1 -1
- package/dist/envs-subcommands/envs-unset.cmd.js +0 -18
- package/dist/envs-subcommands/envs-unset.cmd.js.map +1 -1
- package/dist/events/index.js +0 -6
- package/dist/events/index.js.map +1 -1
- package/dist/events/on-component-add-event.js +1 -12
- package/dist/events/on-component-add-event.js.map +1 -1
- package/dist/events/on-component-change-event.js +1 -12
- package/dist/events/on-component-change-event.js.map +1 -1
- package/dist/events/on-component-removed-event.js +1 -12
- package/dist/events/on-component-removed-event.js.map +1 -1
- package/dist/exceptions/incorrect-env-aspect.js +0 -6
- package/dist/exceptions/incorrect-env-aspect.js.map +1 -1
- package/dist/index.js +0 -19
- package/dist/index.js.map +1 -1
- package/dist/list.cmd.js +2 -15
- package/dist/list.cmd.js.map +1 -1
- package/dist/pattern.cmd.js +0 -16
- package/dist/pattern.cmd.js.map +1 -1
- package/dist/scope-subcommands/scope-set.cmd.js +0 -17
- package/dist/scope-subcommands/scope-set.cmd.js.map +1 -1
- package/dist/ui/index.js +0 -3
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/workspace/default-component.js.map +1 -1
- package/dist/ui/workspace/index.js +0 -2
- package/dist/ui/workspace/index.js.map +1 -1
- package/dist/ui/workspace/use-workspace.js +14 -49
- package/dist/ui/workspace/use-workspace.js.map +1 -1
- package/dist/ui/workspace/workspace-context.js +0 -7
- package/dist/ui/workspace/workspace-context.js.map +1 -1
- package/dist/ui/workspace/workspace-model.js +2 -14
- package/dist/ui/workspace/workspace-model.js.map +1 -1
- package/dist/ui/workspace/workspace-overview/index.js +0 -3
- package/dist/ui/workspace/workspace-overview/index.js.map +1 -1
- package/dist/ui/workspace/workspace-overview/workspace-overview.js +0 -23
- package/dist/ui/workspace/workspace-overview/workspace-overview.js.map +1 -1
- package/dist/ui/workspace/workspace-provider.js +0 -8
- package/dist/ui/workspace/workspace-provider.js.map +1 -1
- package/dist/ui/workspace/workspace.js +2 -52
- package/dist/ui/workspace/workspace.js.map +1 -1
- package/dist/use.cmd.js +0 -13
- package/dist/use.cmd.js.map +1 -1
- package/dist/watch/check-types.js +0 -1
- package/dist/watch/check-types.js.map +1 -1
- package/dist/watch/output-formatter.js +1 -12
- package/dist/watch/output-formatter.js.map +1 -1
- package/dist/watch/watch-queue.js +0 -13
- package/dist/watch/watch-queue.js.map +1 -1
- package/dist/watch/watch.cmd.js +6 -41
- package/dist/watch/watch.cmd.js.map +1 -1
- package/dist/watch/watcher.js +13 -133
- package/dist/watch/watcher.js.map +1 -1
- package/dist/workspace-component/component-status.js +0 -4
- package/dist/workspace-component/component-status.js.map +1 -1
- package/dist/workspace-component/index.js +0 -6
- package/dist/workspace-component/index.js.map +1 -1
- package/dist/workspace-component/workspace-component-loader.js +21 -114
- package/dist/workspace-component/workspace-component-loader.js.map +1 -1
- package/dist/workspace-component/workspace-component.js +1 -11
- package/dist/workspace-component/workspace-component.js.map +1 -1
- package/dist/workspace-section.js +2 -0
- package/dist/workspace-section.js.map +1 -1
- package/dist/workspace.aspect.js +0 -5
- package/dist/workspace.aspect.js.map +1 -1
- package/dist/workspace.composition.js +0 -6
- package/dist/workspace.composition.js.map +1 -1
- package/dist/workspace.graphql.js +0 -12
- package/dist/workspace.graphql.js.map +1 -1
- package/dist/workspace.js +134 -545
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.main.runtime.js +0 -55
- package/dist/workspace.main.runtime.js.map +1 -1
- package/dist/workspace.provider.js +8 -77
- package/dist/workspace.provider.js.map +1 -1
- package/dist/workspace.ui-root.js +3 -17
- package/dist/workspace.ui-root.js.map +1 -1
- package/dist/workspace.ui.drawer.js +2 -24
- package/dist/workspace.ui.drawer.js.map +1 -1
- package/dist/workspace.ui.runtime.js +0 -75
- package/dist/workspace.ui.runtime.js.map +1 -1
- package/package-tar/teambit-workspace-0.0.882.tgz +0 -0
- package/package.json +18 -18
- package/{preview-1666409808293.js → preview-1666496165706.js} +2 -2
- package/package-tar/teambit-workspace-0.0.881.tgz +0 -0
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ComponentStatus = void 0;
|
|
7
|
-
|
|
8
7
|
class ComponentStatus {
|
|
9
8
|
constructor(
|
|
10
9
|
/**
|
|
@@ -53,7 +52,6 @@ class ComponentStatus {
|
|
|
53
52
|
this.nested = nested;
|
|
54
53
|
this.isInCurrentLane = isInCurrentLane;
|
|
55
54
|
}
|
|
56
|
-
|
|
57
55
|
static fromLegacy(status, hasModifiedDependencies, isOutdated, isInCurrentLane) {
|
|
58
56
|
const modify = {
|
|
59
57
|
hasModifiedFiles: !!status.modified,
|
|
@@ -61,9 +59,7 @@ class ComponentStatus {
|
|
|
61
59
|
};
|
|
62
60
|
return new ComponentStatus(modify, !!status.newlyCreated, !!status.deleted, !!status.staged, !status.notExist, !status.missingFromScope, isOutdated, !!status.nested, isInCurrentLane);
|
|
63
61
|
}
|
|
64
|
-
|
|
65
62
|
}
|
|
66
|
-
|
|
67
63
|
exports.ComponentStatus = ComponentStatus;
|
|
68
64
|
|
|
69
65
|
//# sourceMappingURL=component-status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ComponentStatus","constructor","modifyInfo","isNew","isDeleted","isStaged","isInWorkspace","isInScope","isOutdated","nested","isInCurrentLane","fromLegacy","status","hasModifiedDependencies","modify","hasModifiedFiles","modified","newlyCreated","deleted","staged","notExist","missingFromScope"],"sources":["component-status.ts"],"sourcesContent":["import { ComponentStatus as LegacyComponentStatus } from '@teambit/legacy/dist/consumer/component-ops/component-status-loader';\n\nexport type ModifyInfo = {\n hasModifiedFiles: boolean;\n hasModifiedDependencies: boolean;\n};\n\nexport class ComponentStatus {\n constructor(\n /**\n * is the component modified.\n */\n readonly modifyInfo: ModifyInfo,\n\n /**\n * is the new component new.\n */\n readonly isNew: boolean,\n\n /**\n * is the component deleted from the workspace.\n */\n readonly isDeleted: boolean,\n\n /**\n * is the component staged.\n */\n readonly isStaged: boolean,\n\n /**\n * does the component exists in the workspace.\n */\n readonly isInWorkspace: boolean,\n\n /**\n * does the component exists in the scope.\n */\n readonly isInScope: boolean,\n\n /**\n * does the component is outdated (pending for update).\n */\n readonly isOutdated: boolean,\n\n /**\n * the component is not authored and not imported.\n */\n readonly nested?: boolean,\n /**\n * does the component exist on the current lane\n */\n readonly isInCurrentLane?: boolean\n ) {}\n\n static fromLegacy(\n status: LegacyComponentStatus,\n hasModifiedDependencies: boolean,\n isOutdated: boolean,\n isInCurrentLane?: boolean\n ) {\n const modify: ModifyInfo = {\n hasModifiedFiles: !!status.modified,\n hasModifiedDependencies,\n };\n return new ComponentStatus(\n modify,\n !!status.newlyCreated,\n !!status.deleted,\n !!status.staged,\n !status.notExist,\n !status.missingFromScope,\n isOutdated,\n !!status.nested,\n isInCurrentLane\n );\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["ComponentStatus","constructor","modifyInfo","isNew","isDeleted","isStaged","isInWorkspace","isInScope","isOutdated","nested","isInCurrentLane","fromLegacy","status","hasModifiedDependencies","modify","hasModifiedFiles","modified","newlyCreated","deleted","staged","notExist","missingFromScope"],"sources":["component-status.ts"],"sourcesContent":["import { ComponentStatus as LegacyComponentStatus } from '@teambit/legacy/dist/consumer/component-ops/component-status-loader';\n\nexport type ModifyInfo = {\n hasModifiedFiles: boolean;\n hasModifiedDependencies: boolean;\n};\n\nexport class ComponentStatus {\n constructor(\n /**\n * is the component modified.\n */\n readonly modifyInfo: ModifyInfo,\n\n /**\n * is the new component new.\n */\n readonly isNew: boolean,\n\n /**\n * is the component deleted from the workspace.\n */\n readonly isDeleted: boolean,\n\n /**\n * is the component staged.\n */\n readonly isStaged: boolean,\n\n /**\n * does the component exists in the workspace.\n */\n readonly isInWorkspace: boolean,\n\n /**\n * does the component exists in the scope.\n */\n readonly isInScope: boolean,\n\n /**\n * does the component is outdated (pending for update).\n */\n readonly isOutdated: boolean,\n\n /**\n * the component is not authored and not imported.\n */\n readonly nested?: boolean,\n /**\n * does the component exist on the current lane\n */\n readonly isInCurrentLane?: boolean\n ) {}\n\n static fromLegacy(\n status: LegacyComponentStatus,\n hasModifiedDependencies: boolean,\n isOutdated: boolean,\n isInCurrentLane?: boolean\n ) {\n const modify: ModifyInfo = {\n hasModifiedFiles: !!status.modified,\n hasModifiedDependencies,\n };\n return new ComponentStatus(\n modify,\n !!status.newlyCreated,\n !!status.deleted,\n !!status.staged,\n !status.notExist,\n !status.missingFromScope,\n isOutdated,\n !!status.nested,\n isInCurrentLane\n );\n }\n}\n"],"mappings":";;;;;;AAOO,MAAMA,eAAe,CAAC;EAC3BC,WAAW;EACT;AACJ;AACA;EACaC,UAAsB;EAE/B;AACJ;AACA;EACaC,KAAc;EAEvB;AACJ;AACA;EACaC,SAAkB;EAE3B;AACJ;AACA;EACaC,QAAiB;EAE1B;AACJ;AACA;EACaC,aAAsB;EAE/B;AACJ;AACA;EACaC,SAAkB;EAE3B;AACJ;AACA;EACaC,UAAmB;EAE5B;AACJ;AACA;EACaC,MAAgB;EACzB;AACJ;AACA;EACaC,eAAyB,EAClC;IAAA,KAxCSR,UAAsB,GAAtBA,UAAsB;IAAA,KAKtBC,KAAc,GAAdA,KAAc;IAAA,KAKdC,SAAkB,GAAlBA,SAAkB;IAAA,KAKlBC,QAAiB,GAAjBA,QAAiB;IAAA,KAKjBC,aAAsB,GAAtBA,aAAsB;IAAA,KAKtBC,SAAkB,GAAlBA,SAAkB;IAAA,KAKlBC,UAAmB,GAAnBA,UAAmB;IAAA,KAKnBC,MAAgB,GAAhBA,MAAgB;IAAA,KAIhBC,eAAyB,GAAzBA,eAAyB;EACjC;EAEH,OAAOC,UAAU,CACfC,MAA6B,EAC7BC,uBAAgC,EAChCL,UAAmB,EACnBE,eAAyB,EACzB;IACA,MAAMI,MAAkB,GAAG;MACzBC,gBAAgB,EAAE,CAAC,CAACH,MAAM,CAACI,QAAQ;MACnCH;IACF,CAAC;IACD,OAAO,IAAIb,eAAe,CACxBc,MAAM,EACN,CAAC,CAACF,MAAM,CAACK,YAAY,EACrB,CAAC,CAACL,MAAM,CAACM,OAAO,EAChB,CAAC,CAACN,MAAM,CAACO,MAAM,EACf,CAACP,MAAM,CAACQ,QAAQ,EAChB,CAACR,MAAM,CAACS,gBAAgB,EACxBb,UAAU,EACV,CAAC,CAACI,MAAM,CAACH,MAAM,EACfC,eAAe,CAChB;EACH;AACF;AAAC"}
|
|
@@ -15,24 +15,18 @@ Object.defineProperty(exports, "WorkspaceComponent", {
|
|
|
15
15
|
return _workspaceComponent().WorkspaceComponent;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
-
|
|
19
18
|
function _workspaceComponent() {
|
|
20
19
|
const data = require("./workspace-component");
|
|
21
|
-
|
|
22
20
|
_workspaceComponent = function () {
|
|
23
21
|
return data;
|
|
24
22
|
};
|
|
25
|
-
|
|
26
23
|
return data;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
function _componentStatus() {
|
|
30
26
|
const data = require("./component-status");
|
|
31
|
-
|
|
32
27
|
_componentStatus = function () {
|
|
33
28
|
return data;
|
|
34
29
|
};
|
|
35
|
-
|
|
36
30
|
return data;
|
|
37
31
|
}
|
|
38
32
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { WorkspaceComponent } from './workspace-component';\nexport { ComponentStatus } from './component-status';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { WorkspaceComponent } from './workspace-component';\nexport { ComponentStatus } from './component-status';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA"}
|
|
@@ -1,188 +1,132 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.array.iterator.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.array.sort.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.promise.js");
|
|
10
|
-
|
|
11
7
|
Object.defineProperty(exports, "__esModule", {
|
|
12
8
|
value: true
|
|
13
9
|
});
|
|
14
10
|
exports.WorkspaceComponentLoader = void 0;
|
|
15
|
-
|
|
16
11
|
function _defineProperty2() {
|
|
17
12
|
const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
13
|
_defineProperty2 = function () {
|
|
20
14
|
return data;
|
|
21
15
|
};
|
|
22
|
-
|
|
23
16
|
return data;
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
function _component() {
|
|
27
19
|
const data = require("@teambit/component");
|
|
28
|
-
|
|
29
20
|
_component = function () {
|
|
30
21
|
return data;
|
|
31
22
|
};
|
|
32
|
-
|
|
33
23
|
return data;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
25
|
function _extensionData() {
|
|
37
26
|
const data = require("@teambit/legacy/dist/consumer/config/extension-data");
|
|
38
|
-
|
|
39
27
|
_extensionData = function () {
|
|
40
28
|
return data;
|
|
41
29
|
};
|
|
42
|
-
|
|
43
30
|
return data;
|
|
44
31
|
}
|
|
45
|
-
|
|
46
32
|
function _pMapSeries() {
|
|
47
33
|
const data = _interopRequireDefault(require("p-map-series"));
|
|
48
|
-
|
|
49
34
|
_pMapSeries = function () {
|
|
50
35
|
return data;
|
|
51
36
|
};
|
|
52
|
-
|
|
53
37
|
return data;
|
|
54
38
|
}
|
|
55
|
-
|
|
56
39
|
function _lodash() {
|
|
57
40
|
const data = require("lodash");
|
|
58
|
-
|
|
59
41
|
_lodash = function () {
|
|
60
42
|
return data;
|
|
61
43
|
};
|
|
62
|
-
|
|
63
44
|
return data;
|
|
64
45
|
}
|
|
65
|
-
|
|
66
46
|
function _component2() {
|
|
67
47
|
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component"));
|
|
68
|
-
|
|
69
48
|
_component2 = function () {
|
|
70
49
|
return data;
|
|
71
50
|
};
|
|
72
|
-
|
|
73
51
|
return data;
|
|
74
52
|
}
|
|
75
|
-
|
|
76
53
|
function _exceptions() {
|
|
77
54
|
const data = require("@teambit/legacy/dist/consumer/bit-map/exceptions");
|
|
78
|
-
|
|
79
55
|
_exceptions = function () {
|
|
80
56
|
return data;
|
|
81
57
|
};
|
|
82
|
-
|
|
83
58
|
return data;
|
|
84
59
|
}
|
|
85
|
-
|
|
86
60
|
function _utils() {
|
|
87
61
|
const data = require("@teambit/legacy/dist/utils");
|
|
88
|
-
|
|
89
62
|
_utils = function () {
|
|
90
63
|
return data;
|
|
91
64
|
};
|
|
92
|
-
|
|
93
65
|
return data;
|
|
94
66
|
}
|
|
95
|
-
|
|
96
67
|
function _componentIssues() {
|
|
97
68
|
const data = require("@teambit/component-issues");
|
|
98
|
-
|
|
99
69
|
_componentIssues = function () {
|
|
100
70
|
return data;
|
|
101
71
|
};
|
|
102
|
-
|
|
103
72
|
return data;
|
|
104
73
|
}
|
|
105
|
-
|
|
106
74
|
function _exceptions2() {
|
|
107
75
|
const data = require("@teambit/legacy/dist/scope/exceptions");
|
|
108
|
-
|
|
109
76
|
_exceptions2 = function () {
|
|
110
77
|
return data;
|
|
111
78
|
};
|
|
112
|
-
|
|
113
79
|
return data;
|
|
114
80
|
}
|
|
115
|
-
|
|
116
81
|
function _dependencyResolver() {
|
|
117
82
|
const data = require("@teambit/dependency-resolver");
|
|
118
|
-
|
|
119
83
|
_dependencyResolver = function () {
|
|
120
84
|
return data;
|
|
121
85
|
};
|
|
122
|
-
|
|
123
86
|
return data;
|
|
124
87
|
}
|
|
125
|
-
|
|
126
88
|
function _envs() {
|
|
127
89
|
const data = require("@teambit/envs");
|
|
128
|
-
|
|
129
90
|
_envs = function () {
|
|
130
91
|
return data;
|
|
131
92
|
};
|
|
132
|
-
|
|
133
93
|
return data;
|
|
134
94
|
}
|
|
135
|
-
|
|
136
95
|
function _config() {
|
|
137
96
|
const data = require("@teambit/legacy/dist/consumer/config");
|
|
138
|
-
|
|
139
97
|
_config = function () {
|
|
140
98
|
return data;
|
|
141
99
|
};
|
|
142
|
-
|
|
143
100
|
return data;
|
|
144
101
|
}
|
|
145
|
-
|
|
146
102
|
function _inMemoryCache() {
|
|
147
103
|
const data = require("@teambit/legacy/dist/cache/in-memory-cache");
|
|
148
|
-
|
|
149
104
|
_inMemoryCache = function () {
|
|
150
105
|
return data;
|
|
151
106
|
};
|
|
152
|
-
|
|
153
107
|
return data;
|
|
154
108
|
}
|
|
155
|
-
|
|
156
109
|
function _cacheFactory() {
|
|
157
110
|
const data = require("@teambit/legacy/dist/cache/cache-factory");
|
|
158
|
-
|
|
159
111
|
_cacheFactory = function () {
|
|
160
112
|
return data;
|
|
161
113
|
};
|
|
162
|
-
|
|
163
114
|
return data;
|
|
164
115
|
}
|
|
165
|
-
|
|
166
116
|
function _componentNotFoundInPath() {
|
|
167
117
|
const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path"));
|
|
168
|
-
|
|
169
118
|
_componentNotFoundInPath = function () {
|
|
170
119
|
return data;
|
|
171
120
|
};
|
|
172
|
-
|
|
173
121
|
return data;
|
|
174
122
|
}
|
|
175
|
-
|
|
176
123
|
function _workspaceComponent() {
|
|
177
124
|
const data = require("./workspace-component");
|
|
178
|
-
|
|
179
125
|
_workspaceComponent = function () {
|
|
180
126
|
return data;
|
|
181
127
|
};
|
|
182
|
-
|
|
183
128
|
return data;
|
|
184
129
|
}
|
|
185
|
-
|
|
186
130
|
class WorkspaceComponentLoader {
|
|
187
131
|
// cache loaded components
|
|
188
132
|
constructor(workspace, logger, dependencyResolver, envs) {
|
|
@@ -195,7 +139,6 @@ class WorkspaceComponentLoader {
|
|
|
195
139
|
maxSize: (0, _inMemoryCache().getMaxSizeForComponents)()
|
|
196
140
|
});
|
|
197
141
|
}
|
|
198
|
-
|
|
199
142
|
async getMany(ids, loadOpts) {
|
|
200
143
|
const idsWithoutEmpty = (0, _lodash().compact)(ids);
|
|
201
144
|
const errors = [];
|
|
@@ -210,7 +153,6 @@ class WorkspaceComponentLoader {
|
|
|
210
153
|
});
|
|
211
154
|
return undefined;
|
|
212
155
|
}
|
|
213
|
-
|
|
214
156
|
throw err;
|
|
215
157
|
});
|
|
216
158
|
});
|
|
@@ -218,20 +160,18 @@ class WorkspaceComponentLoader {
|
|
|
218
160
|
errors.forEach(err => {
|
|
219
161
|
this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);
|
|
220
162
|
this.logger.warn(`failed loading component ${err.id.toString()}`, err.err);
|
|
221
|
-
});
|
|
222
|
-
|
|
163
|
+
});
|
|
164
|
+
// remove errored components
|
|
223
165
|
const filteredComponents = (0, _lodash().compact)(components);
|
|
224
166
|
longProcessLogger.end();
|
|
225
167
|
return filteredComponents;
|
|
226
168
|
}
|
|
227
|
-
|
|
228
169
|
async getInvalid(ids) {
|
|
229
170
|
const idsWithoutEmpty = (0, _lodash().compact)(ids);
|
|
230
171
|
const errors = [];
|
|
231
172
|
const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);
|
|
232
173
|
await (0, _pMapSeries().default)(idsWithoutEmpty, async id => {
|
|
233
174
|
longProcessLogger.logProgress(id.toString());
|
|
234
|
-
|
|
235
175
|
try {
|
|
236
176
|
await this.workspace.consumer.loadComponent(id._legacy);
|
|
237
177
|
} catch (err) {
|
|
@@ -242,36 +182,28 @@ class WorkspaceComponentLoader {
|
|
|
242
182
|
});
|
|
243
183
|
return;
|
|
244
184
|
}
|
|
245
|
-
|
|
246
185
|
throw err;
|
|
247
186
|
}
|
|
248
187
|
});
|
|
249
188
|
return errors;
|
|
250
189
|
}
|
|
251
|
-
|
|
252
190
|
async get(componentId, legacyComponent, useCache = true, storeInCache = true, loadOpts) {
|
|
253
191
|
const bitIdWithVersion = (0, _utils().getLatestVersionNumber)(this.workspace.consumer.bitmapIdsFromCurrentLane, componentId._legacy);
|
|
254
192
|
const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;
|
|
255
193
|
const fromCache = this.getFromCache(id, loadOpts);
|
|
256
|
-
|
|
257
194
|
if (fromCache && useCache) {
|
|
258
195
|
return fromCache;
|
|
259
196
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
197
|
+
const consumerComponent = legacyComponent || (await this.getConsumerComponent(id));
|
|
198
|
+
// in case of out-of-sync, the id may changed during the load process
|
|
263
199
|
const updatedId = consumerComponent ? _component().ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;
|
|
264
200
|
const component = await this.loadOne(updatedId, consumerComponent, loadOpts);
|
|
265
|
-
|
|
266
201
|
if (storeInCache) {
|
|
267
202
|
this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded
|
|
268
|
-
|
|
269
203
|
this.saveInCache(component, loadOpts);
|
|
270
204
|
}
|
|
271
|
-
|
|
272
205
|
return component;
|
|
273
206
|
}
|
|
274
|
-
|
|
275
207
|
async getIfExist(componentId) {
|
|
276
208
|
try {
|
|
277
209
|
return await this.get(componentId);
|
|
@@ -279,56 +211,45 @@ class WorkspaceComponentLoader {
|
|
|
279
211
|
if (this.isComponentNotExistsError(err)) {
|
|
280
212
|
return undefined;
|
|
281
213
|
}
|
|
282
|
-
|
|
283
214
|
throw err;
|
|
284
215
|
}
|
|
285
216
|
}
|
|
286
|
-
|
|
287
217
|
addMultipleEnvsIssueIfNeeded(component) {
|
|
288
218
|
const envs = this.envs.getAllEnvsConfiguredOnComponent(component);
|
|
289
219
|
const envIds = (0, _lodash().uniq)(envs.map(env => env.id));
|
|
290
|
-
|
|
291
220
|
if (envIds.length < 2) {
|
|
292
221
|
return;
|
|
293
222
|
}
|
|
294
|
-
|
|
295
223
|
component.state.issues.getOrCreate(_componentIssues().IssuesClasses.MultipleEnvs).data = envIds;
|
|
296
224
|
}
|
|
297
|
-
|
|
298
225
|
clearCache() {
|
|
299
226
|
this.componentsCache.deleteAll();
|
|
300
227
|
}
|
|
301
|
-
|
|
302
228
|
clearComponentCache(id) {
|
|
303
229
|
const idStr = id.toString();
|
|
304
|
-
|
|
305
230
|
for (const cacheKey of this.componentsCache.keys()) {
|
|
306
231
|
if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {
|
|
307
232
|
this.componentsCache.delete(cacheKey);
|
|
308
233
|
}
|
|
309
234
|
}
|
|
310
235
|
}
|
|
311
|
-
|
|
312
236
|
async loadOne(id, consumerComponent, loadOpts) {
|
|
313
237
|
const componentFromScope = await this.workspace.scope.get(id);
|
|
314
|
-
|
|
315
238
|
if (!consumerComponent) {
|
|
316
239
|
if (!componentFromScope) throw new (_exceptions().MissingBitMapComponent)(id.toString());
|
|
317
240
|
return componentFromScope;
|
|
318
241
|
}
|
|
319
|
-
|
|
320
242
|
const {
|
|
321
243
|
extensions
|
|
322
244
|
} = await this.workspace.componentExtensions(id, componentFromScope);
|
|
323
|
-
const extensionsFromConsumerComponent = consumerComponent.extensions || new (_extensionData().ExtensionDataList)();
|
|
245
|
+
const extensionsFromConsumerComponent = consumerComponent.extensions || new (_extensionData().ExtensionDataList)();
|
|
246
|
+
// Merge extensions added by the legacy code in memory (for example data of dependency resolver)
|
|
247
|
+
const extensionDataList = _extensionData().ExtensionDataList.mergeConfigs([extensionsFromConsumerComponent, extensions]).filterRemovedExtensions();
|
|
324
248
|
|
|
325
|
-
|
|
249
|
+
// temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data
|
|
326
250
|
// TODO: remove this once we remove all direct access from legacy code to extensions data
|
|
327
|
-
|
|
328
|
-
|
|
329
251
|
consumerComponent.extensions = extensionDataList;
|
|
330
252
|
const state = new (_component().State)(new (_component().Config)(consumerComponent.mainFile, extensionDataList), await this.workspace.createAspectList(extensionDataList), _component().ComponentFS.fromVinyls(consumerComponent.files), consumerComponent.dependencies, consumerComponent);
|
|
331
|
-
|
|
332
253
|
if (componentFromScope) {
|
|
333
254
|
// Removed by @gilad. do not mutate the component from the scope
|
|
334
255
|
// componentFromScope.state = state;
|
|
@@ -337,14 +258,13 @@ class WorkspaceComponentLoader {
|
|
|
337
258
|
const updatedComp = await this.executeLoadSlot(workspaceComponent, loadOpts);
|
|
338
259
|
return updatedComp;
|
|
339
260
|
}
|
|
340
|
-
|
|
341
261
|
return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);
|
|
342
262
|
}
|
|
343
|
-
|
|
344
263
|
saveInCache(component, loadOpts) {
|
|
345
264
|
const cacheKey = createComponentCacheKey(component.id, loadOpts);
|
|
346
265
|
this.componentsCache.set(cacheKey, component);
|
|
347
266
|
}
|
|
267
|
+
|
|
348
268
|
/**
|
|
349
269
|
* make sure that not only the id-str match, but also the legacy-id.
|
|
350
270
|
* this is needed because the ComponentID.toString() is the same whether or not the legacy-id has
|
|
@@ -352,19 +272,14 @@ class WorkspaceComponentLoader {
|
|
|
352
272
|
* as a result, when out-of-sync is happening and the id is changed to include scope-name in the
|
|
353
273
|
* legacy-id, the component is the cache has the old id.
|
|
354
274
|
*/
|
|
355
|
-
|
|
356
|
-
|
|
357
275
|
getFromCache(id, loadOpts) {
|
|
358
276
|
const cacheKey = createComponentCacheKey(id, loadOpts);
|
|
359
277
|
const fromCache = this.componentsCache.get(cacheKey);
|
|
360
|
-
|
|
361
278
|
if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {
|
|
362
279
|
return fromCache;
|
|
363
280
|
}
|
|
364
|
-
|
|
365
281
|
return undefined;
|
|
366
282
|
}
|
|
367
|
-
|
|
368
283
|
async getConsumerComponent(id) {
|
|
369
284
|
try {
|
|
370
285
|
return await this.workspace.consumer.loadComponent(id._legacy);
|
|
@@ -376,36 +291,36 @@ class WorkspaceComponentLoader {
|
|
|
376
291
|
this.logger.debug(`failed loading component "${id.toString()}" from the workspace due to "${err.name}" error\n${err.message}`);
|
|
377
292
|
return undefined;
|
|
378
293
|
}
|
|
379
|
-
|
|
380
294
|
throw err;
|
|
381
295
|
}
|
|
382
296
|
}
|
|
383
|
-
|
|
384
297
|
isComponentNotExistsError(err) {
|
|
385
298
|
return err instanceof _exceptions2().ComponentNotFound || err instanceof _exceptions().MissingBitMapComponent || err instanceof _componentNotFoundInPath().default;
|
|
386
299
|
}
|
|
387
|
-
|
|
388
300
|
async executeLoadSlot(component, loadOpts) {
|
|
389
301
|
if (component.state._consumer.removed) {
|
|
390
302
|
// if it was soft-removed now, the component is not in the FS. loading aspects such as composition ends up with
|
|
391
303
|
// errors as they try to read component files from the filesystem.
|
|
392
304
|
return component;
|
|
393
|
-
}
|
|
394
|
-
// TODO: remove this once those extensions dependent on workspace
|
|
395
|
-
|
|
305
|
+
}
|
|
396
306
|
|
|
397
|
-
|
|
307
|
+
// Special load events which runs from the workspace but should run from the correct aspect
|
|
308
|
+
// TODO: remove this once those extensions dependent on workspace
|
|
309
|
+
const envsData = await this.workspace.getEnvSystemDescriptor(component);
|
|
398
310
|
|
|
311
|
+
// Move to deps resolver main runtime once we switch ws<> deps resolver direction
|
|
399
312
|
const policy = await this.dependencyResolver.mergeVariantPolicies(component.config.extensions);
|
|
400
313
|
const dependencies = await this.dependencyResolver.extractDepsFromLegacy(component, policy);
|
|
401
314
|
const depResolverData = {
|
|
402
315
|
dependencies,
|
|
403
316
|
policy: policy.serialize()
|
|
404
|
-
};
|
|
317
|
+
};
|
|
405
318
|
|
|
406
|
-
|
|
407
|
-
|
|
319
|
+
// Make sure we are adding the envs / deps data first because other on load events might depend on it
|
|
320
|
+
await Promise.all([this.upsertExtensionData(component, _envs().EnvsAspect.id, envsData), this.upsertExtensionData(component, _dependencyResolver().DependencyResolverAspect.id, depResolverData)]);
|
|
408
321
|
|
|
322
|
+
// We are updating the component state with the envs and deps data here, so in case we have other slots that depend on this data
|
|
323
|
+
// they will be able to get it, as it's very common use case that during on load someone want to access to the component env for example
|
|
409
324
|
const aspectListWithEnvsAndDeps = await this.workspace.createAspectList(component.state.config.extensions);
|
|
410
325
|
component.state.aspects = aspectListWithEnvsAndDeps;
|
|
411
326
|
const entries = this.workspace.onComponentLoadSlot.toArray();
|
|
@@ -413,43 +328,35 @@ class WorkspaceComponentLoader {
|
|
|
413
328
|
const data = await onLoad(component, loadOpts);
|
|
414
329
|
return this.upsertExtensionData(component, extension, data);
|
|
415
330
|
});
|
|
416
|
-
await Promise.all(promises);
|
|
331
|
+
await Promise.all(promises);
|
|
417
332
|
|
|
333
|
+
// Update the aspect list to have changes happened during the on load slot (new data added above)
|
|
418
334
|
const updatedAspectList = await this.workspace.createAspectList(component.state.config.extensions);
|
|
419
335
|
component.state.aspects = updatedAspectList;
|
|
420
336
|
return component;
|
|
421
337
|
}
|
|
422
|
-
|
|
423
338
|
newComponentFromState(id, state) {
|
|
424
339
|
return new (_workspaceComponent().WorkspaceComponent)(id, null, state, new (_component().TagMap)(), this.workspace);
|
|
425
340
|
}
|
|
426
|
-
|
|
427
341
|
async upsertExtensionData(component, extension, data) {
|
|
428
342
|
if (!data) return;
|
|
429
343
|
const existingExtension = component.state.config.extensions.findExtension(extension);
|
|
430
|
-
|
|
431
344
|
if (existingExtension) {
|
|
432
345
|
// Only merge top level of extension data
|
|
433
346
|
Object.assign(existingExtension.data, data);
|
|
434
347
|
return;
|
|
435
348
|
}
|
|
436
|
-
|
|
437
349
|
component.state.config.extensions.push(await this.getDataEntry(extension, data));
|
|
438
350
|
}
|
|
439
|
-
|
|
440
351
|
async getDataEntry(extension, data) {
|
|
441
352
|
// TODO: @gilad we need to refactor the extension data entry api.
|
|
442
353
|
return new (_config().ExtensionDataEntry)(undefined, undefined, extension, undefined, data);
|
|
443
354
|
}
|
|
444
|
-
|
|
445
355
|
}
|
|
446
|
-
|
|
447
356
|
exports.WorkspaceComponentLoader = WorkspaceComponentLoader;
|
|
448
|
-
|
|
449
357
|
function createComponentCacheKey(id, loadOpts) {
|
|
450
358
|
return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts !== null && loadOpts !== void 0 ? loadOpts : {}))}`;
|
|
451
359
|
}
|
|
452
|
-
|
|
453
360
|
function sortKeys(obj) {
|
|
454
361
|
return (0, _lodash().fromPairs)(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));
|
|
455
362
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","createInMemoryCache","maxSize","getMaxSizeForComponents","getMany","ids","loadOpts","idsWithoutEmpty","compact","errors","longProcessLogger","createLongProcessLogger","length","componentsP","mapSeries","id","logProgress","toString","get","undefined","catch","err","isComponentNotExistsError","push","components","forEach","console","warn","filteredComponents","end","getInvalid","consumer","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","bitIdWithVersion","getLatestVersionNumber","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","uniq","map","env","state","issues","getOrCreate","IssuesClasses","MultipleEnvs","data","clearCache","deleteAll","clearComponentCache","idStr","cacheKey","keys","startsWith","delete","componentFromScope","MissingBitMapComponent","extensions","componentExtensions","extensionsFromConsumerComponent","ExtensionDataList","extensionDataList","mergeConfigs","filterRemovedExtensions","State","Config","mainFile","createAspectList","ComponentFS","fromVinyls","files","dependencies","workspaceComponent","WorkspaceComponent","head","tags","updatedComp","executeLoadSlot","newComponentFromState","createComponentCacheKey","set","isEqual","debug","name","message","ComponentNotFound","ComponentNotFoundInPath","_consumer","removed","envsData","getEnvSystemDescriptor","policy","mergeVariantPolicies","config","extractDepsFromLegacy","depResolverData","serialize","Promise","all","upsertExtensionData","EnvsAspect","DependencyResolverAspect","aspectListWithEnvsAndDeps","aspects","entries","onComponentLoadSlot","toArray","promises","extension","onLoad","updatedAspectList","TagMap","existingExtension","findExtension","Object","assign","getDataEntry","ExtensionDataEntry","JSON","stringify","sortKeys","obj","fromPairs","sort","k1","k2","localeCompare"],"sources":["workspace-component-loader.ts"],"sourcesContent":["import { Component, ComponentFS, ComponentID, Config, InvalidComponent, State, TagMap } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport mapSeries from 'p-map-series';\nimport { compact, fromPairs, uniq } from 'lodash';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';\nimport { getLatestVersionNumber } from '@teambit/legacy/dist/utils';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { Workspace } from '../workspace';\nimport { WorkspaceComponent } from './workspace-component';\n\nexport class WorkspaceComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private dependencyResolver: DependencyResolverMain,\n private envs: EnvsMain\n ) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n }\n\n async getMany(ids: Array<ComponentID>, loadOpts?: ComponentLoadOptions): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: { id: ComponentID; err: Error }[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n return this.get(id, undefined, undefined, undefined, loadOpts).catch((err) => {\n if (this.isComponentNotExistsError(err)) {\n errors.push({\n id,\n err,\n });\n return undefined;\n }\n throw err;\n });\n });\n const components = await componentsP;\n errors.forEach((err) => {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n this.logger.warn(`failed loading component ${err.id.toString()}`, err.err);\n });\n // remove errored components\n const filteredComponents: Component[] = compact(components);\n longProcessLogger.end();\n return filteredComponents;\n }\n\n async getInvalid(ids: Array<ComponentID>): Promise<InvalidComponent[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: InvalidComponent[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n await mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n try {\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n if (ConsumerComponent.isComponentInvalidByErrorType(err)) {\n errors.push({\n id,\n err,\n });\n return;\n }\n throw err;\n }\n });\n return errors;\n }\n\n async get(\n componentId: ComponentID,\n legacyComponent?: ConsumerComponent,\n useCache = true,\n storeInCache = true,\n loadOpts?: ComponentLoadOptions\n ): Promise<Component> {\n const bitIdWithVersion: BitId = getLatestVersionNumber(\n this.workspace.consumer.bitmapIdsFromCurrentLane,\n componentId._legacy\n );\n const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;\n const fromCache = this.getFromCache(id, loadOpts);\n if (fromCache && useCache) {\n return fromCache;\n }\n const consumerComponent = legacyComponent || (await this.getConsumerComponent(id));\n // in case of out-of-sync, the id may changed during the load process\n const updatedId = consumerComponent ? ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;\n const component = await this.loadOne(updatedId, consumerComponent, loadOpts);\n if (storeInCache) {\n this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded\n this.saveInCache(component, loadOpts);\n }\n return component;\n }\n\n async getIfExist(componentId: ComponentID) {\n try {\n return await this.get(componentId);\n } catch (err: any) {\n if (this.isComponentNotExistsError(err)) {\n return undefined;\n }\n throw err;\n }\n }\n\n private addMultipleEnvsIssueIfNeeded(component: Component) {\n const envs = this.envs.getAllEnvsConfiguredOnComponent(component);\n const envIds = uniq(envs.map((env) => env.id));\n if (envIds.length < 2) {\n return;\n }\n component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envIds;\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n }\n clearComponentCache(id: ComponentID) {\n const idStr = id.toString();\n for (const cacheKey of this.componentsCache.keys()) {\n if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {\n this.componentsCache.delete(cacheKey);\n }\n }\n }\n\n private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent, loadOpts?: ComponentLoadOptions) {\n const componentFromScope = await this.workspace.scope.get(id);\n if (!consumerComponent) {\n if (!componentFromScope) throw new MissingBitMapComponent(id.toString());\n return componentFromScope;\n }\n const { extensions } = await this.workspace.componentExtensions(id, componentFromScope);\n const extensionsFromConsumerComponent = consumerComponent.extensions || new ExtensionDataList();\n // Merge extensions added by the legacy code in memory (for example data of dependency resolver)\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConsumerComponent,\n extensions,\n ]).filterRemovedExtensions();\n\n // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data\n // TODO: remove this once we remove all direct access from legacy code to extensions data\n consumerComponent.extensions = extensionDataList;\n\n const state = new State(\n new Config(consumerComponent.mainFile, extensionDataList),\n await this.workspace.createAspectList(extensionDataList),\n ComponentFS.fromVinyls(consumerComponent.files),\n consumerComponent.dependencies,\n consumerComponent\n );\n if (componentFromScope) {\n // Removed by @gilad. do not mutate the component from the scope\n // componentFromScope.state = state;\n // const workspaceComponent = WorkspaceComponent.fromComponent(componentFromScope, this.workspace);\n const workspaceComponent = new WorkspaceComponent(\n componentFromScope.id,\n componentFromScope.head,\n state,\n componentFromScope.tags,\n this.workspace\n );\n const updatedComp = await this.executeLoadSlot(workspaceComponent, loadOpts);\n return updatedComp;\n }\n return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);\n }\n\n private saveInCache(component: Component, loadOpts?: ComponentLoadOptions): void {\n const cacheKey = createComponentCacheKey(component.id, loadOpts);\n this.componentsCache.set(cacheKey, component);\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID, loadOpts?: ComponentLoadOptions): Component | undefined {\n const cacheKey = createComponentCacheKey(id, loadOpts);\n const fromCache = this.componentsCache.get(cacheKey);\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private async getConsumerComponent(id: ComponentID): Promise<ConsumerComponent | undefined> {\n try {\n return await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n // don't return undefined for any error. otherwise, if the component is invalid (e.g. main\n // file is missing) it returns the model component later unexpectedly, or if it's new, it\n // shows MissingBitMapComponent error incorrectly.\n if (this.isComponentNotExistsError(err)) {\n this.logger.debug(\n `failed loading component \"${id.toString()}\" from the workspace due to \"${err.name}\" error\\n${err.message}`\n );\n return undefined;\n }\n throw err;\n }\n }\n\n private isComponentNotExistsError(err: Error): boolean {\n return (\n err instanceof ComponentNotFound ||\n err instanceof MissingBitMapComponent ||\n err instanceof ComponentNotFoundInPath\n );\n }\n\n private async executeLoadSlot(component: Component, loadOpts?: ComponentLoadOptions) {\n if (component.state._consumer.removed) {\n // if it was soft-removed now, the component is not in the FS. loading aspects such as composition ends up with\n // errors as they try to read component files from the filesystem.\n return component;\n }\n\n // Special load events which runs from the workspace but should run from the correct aspect\n // TODO: remove this once those extensions dependent on workspace\n const envsData = await this.workspace.getEnvSystemDescriptor(component);\n\n // Move to deps resolver main runtime once we switch ws<> deps resolver direction\n const policy = await this.dependencyResolver.mergeVariantPolicies(component.config.extensions);\n const dependencies = await this.dependencyResolver.extractDepsFromLegacy(component, policy);\n\n const depResolverData = {\n dependencies,\n policy: policy.serialize(),\n };\n\n // Make sure we are adding the envs / deps data first because other on load events might depend on it\n await Promise.all([\n this.upsertExtensionData(component, EnvsAspect.id, envsData),\n this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData),\n ]);\n\n // We are updating the component state with the envs and deps data here, so in case we have other slots that depend on this data\n // they will be able to get it, as it's very common use case that during on load someone want to access to the component env for example\n const aspectListWithEnvsAndDeps = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = aspectListWithEnvsAndDeps;\n\n const entries = this.workspace.onComponentLoadSlot.toArray();\n const promises = entries.map(async ([extension, onLoad]) => {\n const data = await onLoad(component, loadOpts);\n return this.upsertExtensionData(component, extension, data);\n });\n\n await Promise.all(promises);\n\n // Update the aspect list to have changes happened during the on load slot (new data added above)\n const updatedAspectList = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = updatedAspectList;\n return component;\n }\n\n private newComponentFromState(id: ComponentID, state: State): Component {\n return new WorkspaceComponent(id, null, state, new TagMap(), this.workspace);\n }\n\n private async upsertExtensionData(component: Component, extension: string, data: any) {\n if (!data) return;\n const existingExtension = component.state.config.extensions.findExtension(extension);\n if (existingExtension) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n component.state.config.extensions.push(await this.getDataEntry(extension, data));\n }\n\n private async getDataEntry(extension: string, data: { [key: string]: any }): Promise<ExtensionDataEntry> {\n // TODO: @gilad we need to refactor the extension data entry api.\n return new ExtensionDataEntry(undefined, undefined, extension, undefined, data);\n }\n}\n\nfunction createComponentCacheKey(id: ComponentID, loadOpts?: ComponentLoadOptions): string {\n return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts ?? {}))}`;\n}\n\nfunction sortKeys(obj: Object) {\n return fromPairs(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["WorkspaceComponentLoader","constructor","workspace","logger","dependencyResolver","envs","componentsCache","createInMemoryCache","maxSize","getMaxSizeForComponents","getMany","ids","loadOpts","idsWithoutEmpty","compact","errors","longProcessLogger","createLongProcessLogger","length","componentsP","mapSeries","id","logProgress","toString","get","undefined","catch","err","isComponentNotExistsError","push","components","forEach","console","warn","filteredComponents","end","getInvalid","consumer","loadComponent","_legacy","ConsumerComponent","isComponentInvalidByErrorType","componentId","legacyComponent","useCache","storeInCache","bitIdWithVersion","getLatestVersionNumber","bitmapIdsFromCurrentLane","version","changeVersion","fromCache","getFromCache","consumerComponent","getConsumerComponent","updatedId","ComponentID","fromLegacy","scope","component","loadOne","addMultipleEnvsIssueIfNeeded","saveInCache","getIfExist","getAllEnvsConfiguredOnComponent","envIds","uniq","map","env","state","issues","getOrCreate","IssuesClasses","MultipleEnvs","data","clearCache","deleteAll","clearComponentCache","idStr","cacheKey","keys","startsWith","delete","componentFromScope","MissingBitMapComponent","extensions","componentExtensions","extensionsFromConsumerComponent","ExtensionDataList","extensionDataList","mergeConfigs","filterRemovedExtensions","State","Config","mainFile","createAspectList","ComponentFS","fromVinyls","files","dependencies","workspaceComponent","WorkspaceComponent","head","tags","updatedComp","executeLoadSlot","newComponentFromState","createComponentCacheKey","set","isEqual","debug","name","message","ComponentNotFound","ComponentNotFoundInPath","_consumer","removed","envsData","getEnvSystemDescriptor","policy","mergeVariantPolicies","config","extractDepsFromLegacy","depResolverData","serialize","Promise","all","upsertExtensionData","EnvsAspect","DependencyResolverAspect","aspectListWithEnvsAndDeps","aspects","entries","onComponentLoadSlot","toArray","promises","extension","onLoad","updatedAspectList","TagMap","existingExtension","findExtension","Object","assign","getDataEntry","ExtensionDataEntry","JSON","stringify","sortKeys","obj","fromPairs","sort","k1","k2","localeCompare"],"sources":["workspace-component-loader.ts"],"sourcesContent":["import { Component, ComponentFS, ComponentID, Config, InvalidComponent, State, TagMap } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport mapSeries from 'p-map-series';\nimport { compact, fromPairs, uniq } from 'lodash';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { MissingBitMapComponent } from '@teambit/legacy/dist/consumer/bit-map/exceptions';\nimport { getLatestVersionNumber } from '@teambit/legacy/dist/utils';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport { ComponentNotFound } from '@teambit/legacy/dist/scope/exceptions';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { ExtensionDataEntry } from '@teambit/legacy/dist/consumer/config';\nimport { getMaxSizeForComponents, InMemoryCache } from '@teambit/legacy/dist/cache/in-memory-cache';\nimport { createInMemoryCache } from '@teambit/legacy/dist/cache/cache-factory';\nimport ComponentNotFoundInPath from '@teambit/legacy/dist/consumer/component/exceptions/component-not-found-in-path';\nimport { ComponentLoadOptions } from '@teambit/legacy/dist/consumer/component/component-loader';\nimport { Workspace } from '../workspace';\nimport { WorkspaceComponent } from './workspace-component';\n\nexport class WorkspaceComponentLoader {\n private componentsCache: InMemoryCache<Component>; // cache loaded components\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private dependencyResolver: DependencyResolverMain,\n private envs: EnvsMain\n ) {\n this.componentsCache = createInMemoryCache({ maxSize: getMaxSizeForComponents() });\n }\n\n async getMany(ids: Array<ComponentID>, loadOpts?: ComponentLoadOptions): Promise<Component[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: { id: ComponentID; err: Error }[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n const componentsP = mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n return this.get(id, undefined, undefined, undefined, loadOpts).catch((err) => {\n if (this.isComponentNotExistsError(err)) {\n errors.push({\n id,\n err,\n });\n return undefined;\n }\n throw err;\n });\n });\n const components = await componentsP;\n errors.forEach((err) => {\n this.logger.console(`failed loading component ${err.id.toString()}, see full error in debug.log file`);\n this.logger.warn(`failed loading component ${err.id.toString()}`, err.err);\n });\n // remove errored components\n const filteredComponents: Component[] = compact(components);\n longProcessLogger.end();\n return filteredComponents;\n }\n\n async getInvalid(ids: Array<ComponentID>): Promise<InvalidComponent[]> {\n const idsWithoutEmpty = compact(ids);\n const errors: InvalidComponent[] = [];\n const longProcessLogger = this.logger.createLongProcessLogger('loading components', ids.length);\n await mapSeries(idsWithoutEmpty, async (id: ComponentID) => {\n longProcessLogger.logProgress(id.toString());\n try {\n await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n if (ConsumerComponent.isComponentInvalidByErrorType(err)) {\n errors.push({\n id,\n err,\n });\n return;\n }\n throw err;\n }\n });\n return errors;\n }\n\n async get(\n componentId: ComponentID,\n legacyComponent?: ConsumerComponent,\n useCache = true,\n storeInCache = true,\n loadOpts?: ComponentLoadOptions\n ): Promise<Component> {\n const bitIdWithVersion: BitId = getLatestVersionNumber(\n this.workspace.consumer.bitmapIdsFromCurrentLane,\n componentId._legacy\n );\n const id = bitIdWithVersion.version ? componentId.changeVersion(bitIdWithVersion.version) : componentId;\n const fromCache = this.getFromCache(id, loadOpts);\n if (fromCache && useCache) {\n return fromCache;\n }\n const consumerComponent = legacyComponent || (await this.getConsumerComponent(id));\n // in case of out-of-sync, the id may changed during the load process\n const updatedId = consumerComponent ? ComponentID.fromLegacy(consumerComponent.id, id.scope) : id;\n const component = await this.loadOne(updatedId, consumerComponent, loadOpts);\n if (storeInCache) {\n this.addMultipleEnvsIssueIfNeeded(component); // it's in storeInCache block, otherwise, it wasn't fully loaded\n this.saveInCache(component, loadOpts);\n }\n return component;\n }\n\n async getIfExist(componentId: ComponentID) {\n try {\n return await this.get(componentId);\n } catch (err: any) {\n if (this.isComponentNotExistsError(err)) {\n return undefined;\n }\n throw err;\n }\n }\n\n private addMultipleEnvsIssueIfNeeded(component: Component) {\n const envs = this.envs.getAllEnvsConfiguredOnComponent(component);\n const envIds = uniq(envs.map((env) => env.id));\n if (envIds.length < 2) {\n return;\n }\n component.state.issues.getOrCreate(IssuesClasses.MultipleEnvs).data = envIds;\n }\n\n clearCache() {\n this.componentsCache.deleteAll();\n }\n clearComponentCache(id: ComponentID) {\n const idStr = id.toString();\n for (const cacheKey of this.componentsCache.keys()) {\n if (cacheKey === idStr || cacheKey.startsWith(`${idStr}:`)) {\n this.componentsCache.delete(cacheKey);\n }\n }\n }\n\n private async loadOne(id: ComponentID, consumerComponent?: ConsumerComponent, loadOpts?: ComponentLoadOptions) {\n const componentFromScope = await this.workspace.scope.get(id);\n if (!consumerComponent) {\n if (!componentFromScope) throw new MissingBitMapComponent(id.toString());\n return componentFromScope;\n }\n const { extensions } = await this.workspace.componentExtensions(id, componentFromScope);\n const extensionsFromConsumerComponent = consumerComponent.extensions || new ExtensionDataList();\n // Merge extensions added by the legacy code in memory (for example data of dependency resolver)\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConsumerComponent,\n extensions,\n ]).filterRemovedExtensions();\n\n // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data\n // TODO: remove this once we remove all direct access from legacy code to extensions data\n consumerComponent.extensions = extensionDataList;\n\n const state = new State(\n new Config(consumerComponent.mainFile, extensionDataList),\n await this.workspace.createAspectList(extensionDataList),\n ComponentFS.fromVinyls(consumerComponent.files),\n consumerComponent.dependencies,\n consumerComponent\n );\n if (componentFromScope) {\n // Removed by @gilad. do not mutate the component from the scope\n // componentFromScope.state = state;\n // const workspaceComponent = WorkspaceComponent.fromComponent(componentFromScope, this.workspace);\n const workspaceComponent = new WorkspaceComponent(\n componentFromScope.id,\n componentFromScope.head,\n state,\n componentFromScope.tags,\n this.workspace\n );\n const updatedComp = await this.executeLoadSlot(workspaceComponent, loadOpts);\n return updatedComp;\n }\n return this.executeLoadSlot(this.newComponentFromState(id, state), loadOpts);\n }\n\n private saveInCache(component: Component, loadOpts?: ComponentLoadOptions): void {\n const cacheKey = createComponentCacheKey(component.id, loadOpts);\n this.componentsCache.set(cacheKey, component);\n }\n\n /**\n * make sure that not only the id-str match, but also the legacy-id.\n * this is needed because the ComponentID.toString() is the same whether or not the legacy-id has\n * scope-name, as it includes the defaultScope if the scope is empty.\n * as a result, when out-of-sync is happening and the id is changed to include scope-name in the\n * legacy-id, the component is the cache has the old id.\n */\n private getFromCache(id: ComponentID, loadOpts?: ComponentLoadOptions): Component | undefined {\n const cacheKey = createComponentCacheKey(id, loadOpts);\n const fromCache = this.componentsCache.get(cacheKey);\n if (fromCache && fromCache.id._legacy.isEqual(id._legacy)) {\n return fromCache;\n }\n return undefined;\n }\n\n private async getConsumerComponent(id: ComponentID): Promise<ConsumerComponent | undefined> {\n try {\n return await this.workspace.consumer.loadComponent(id._legacy);\n } catch (err: any) {\n // don't return undefined for any error. otherwise, if the component is invalid (e.g. main\n // file is missing) it returns the model component later unexpectedly, or if it's new, it\n // shows MissingBitMapComponent error incorrectly.\n if (this.isComponentNotExistsError(err)) {\n this.logger.debug(\n `failed loading component \"${id.toString()}\" from the workspace due to \"${err.name}\" error\\n${err.message}`\n );\n return undefined;\n }\n throw err;\n }\n }\n\n private isComponentNotExistsError(err: Error): boolean {\n return (\n err instanceof ComponentNotFound ||\n err instanceof MissingBitMapComponent ||\n err instanceof ComponentNotFoundInPath\n );\n }\n\n private async executeLoadSlot(component: Component, loadOpts?: ComponentLoadOptions) {\n if (component.state._consumer.removed) {\n // if it was soft-removed now, the component is not in the FS. loading aspects such as composition ends up with\n // errors as they try to read component files from the filesystem.\n return component;\n }\n\n // Special load events which runs from the workspace but should run from the correct aspect\n // TODO: remove this once those extensions dependent on workspace\n const envsData = await this.workspace.getEnvSystemDescriptor(component);\n\n // Move to deps resolver main runtime once we switch ws<> deps resolver direction\n const policy = await this.dependencyResolver.mergeVariantPolicies(component.config.extensions);\n const dependencies = await this.dependencyResolver.extractDepsFromLegacy(component, policy);\n\n const depResolverData = {\n dependencies,\n policy: policy.serialize(),\n };\n\n // Make sure we are adding the envs / deps data first because other on load events might depend on it\n await Promise.all([\n this.upsertExtensionData(component, EnvsAspect.id, envsData),\n this.upsertExtensionData(component, DependencyResolverAspect.id, depResolverData),\n ]);\n\n // We are updating the component state with the envs and deps data here, so in case we have other slots that depend on this data\n // they will be able to get it, as it's very common use case that during on load someone want to access to the component env for example\n const aspectListWithEnvsAndDeps = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = aspectListWithEnvsAndDeps;\n\n const entries = this.workspace.onComponentLoadSlot.toArray();\n const promises = entries.map(async ([extension, onLoad]) => {\n const data = await onLoad(component, loadOpts);\n return this.upsertExtensionData(component, extension, data);\n });\n\n await Promise.all(promises);\n\n // Update the aspect list to have changes happened during the on load slot (new data added above)\n const updatedAspectList = await this.workspace.createAspectList(component.state.config.extensions);\n component.state.aspects = updatedAspectList;\n return component;\n }\n\n private newComponentFromState(id: ComponentID, state: State): Component {\n return new WorkspaceComponent(id, null, state, new TagMap(), this.workspace);\n }\n\n private async upsertExtensionData(component: Component, extension: string, data: any) {\n if (!data) return;\n const existingExtension = component.state.config.extensions.findExtension(extension);\n if (existingExtension) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n component.state.config.extensions.push(await this.getDataEntry(extension, data));\n }\n\n private async getDataEntry(extension: string, data: { [key: string]: any }): Promise<ExtensionDataEntry> {\n // TODO: @gilad we need to refactor the extension data entry api.\n return new ExtensionDataEntry(undefined, undefined, extension, undefined, data);\n }\n}\n\nfunction createComponentCacheKey(id: ComponentID, loadOpts?: ComponentLoadOptions): string {\n return `${id.toString()}:${JSON.stringify(sortKeys(loadOpts ?? {}))}`;\n}\n\nfunction sortKeys(obj: Object) {\n return fromPairs(Object.entries(obj).sort(([k1], [k2]) => k1.localeCompare(k2)));\n}\n"],"mappings":"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"}
|