@teambit/workspace 0.0.880 → 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.
Files changed (106) hide show
  1. package/dist/bit-map.js +10 -51
  2. package/dist/bit-map.js.map +1 -1
  3. package/dist/build-graph-from-fs.js +3 -54
  4. package/dist/build-graph-from-fs.js.map +1 -1
  5. package/dist/capsule.cmd.js +2 -34
  6. package/dist/capsule.cmd.js.map +1 -1
  7. package/dist/component-config-file/component-config-file.js +2 -60
  8. package/dist/component-config-file/component-config-file.js.map +1 -1
  9. package/dist/component-config-file/exceptions/already-exists.js +0 -6
  10. package/dist/component-config-file/exceptions/already-exists.js.map +1 -1
  11. package/dist/component-config-file/exceptions/index.js +0 -3
  12. package/dist/component-config-file/exceptions/index.js.map +1 -1
  13. package/dist/component-config-file/index.js +0 -6
  14. package/dist/component-config-file/index.js.map +1 -1
  15. package/dist/component-tree.widget.js +0 -18
  16. package/dist/component-tree.widget.js.map +1 -1
  17. package/dist/constants.js.map +1 -1
  18. package/dist/eject-conf.cmd.js +0 -23
  19. package/dist/eject-conf.cmd.js.map +1 -1
  20. package/dist/envs-subcommands/envs-replace.cmd.js +0 -13
  21. package/dist/envs-subcommands/envs-replace.cmd.js.map +1 -1
  22. package/dist/envs-subcommands/envs-set.cmd.js +0 -16
  23. package/dist/envs-subcommands/envs-set.cmd.js.map +1 -1
  24. package/dist/envs-subcommands/envs-unset.cmd.js +0 -18
  25. package/dist/envs-subcommands/envs-unset.cmd.js.map +1 -1
  26. package/dist/events/index.js +0 -6
  27. package/dist/events/index.js.map +1 -1
  28. package/dist/events/on-component-add-event.js +1 -12
  29. package/dist/events/on-component-add-event.js.map +1 -1
  30. package/dist/events/on-component-change-event.js +1 -12
  31. package/dist/events/on-component-change-event.js.map +1 -1
  32. package/dist/events/on-component-removed-event.js +1 -12
  33. package/dist/events/on-component-removed-event.js.map +1 -1
  34. package/dist/exceptions/incorrect-env-aspect.js +0 -6
  35. package/dist/exceptions/incorrect-env-aspect.js.map +1 -1
  36. package/dist/index.js +0 -19
  37. package/dist/index.js.map +1 -1
  38. package/dist/list.cmd.js +2 -15
  39. package/dist/list.cmd.js.map +1 -1
  40. package/dist/pattern.cmd.js +0 -16
  41. package/dist/pattern.cmd.js.map +1 -1
  42. package/dist/scope-subcommands/scope-set.cmd.js +0 -17
  43. package/dist/scope-subcommands/scope-set.cmd.js.map +1 -1
  44. package/dist/ui/index.js +0 -3
  45. package/dist/ui/index.js.map +1 -1
  46. package/dist/ui/workspace/default-component.js.map +1 -1
  47. package/dist/ui/workspace/index.js +0 -2
  48. package/dist/ui/workspace/index.js.map +1 -1
  49. package/dist/ui/workspace/use-workspace.js +14 -49
  50. package/dist/ui/workspace/use-workspace.js.map +1 -1
  51. package/dist/ui/workspace/workspace-context.js +0 -7
  52. package/dist/ui/workspace/workspace-context.js.map +1 -1
  53. package/dist/ui/workspace/workspace-model.js +2 -14
  54. package/dist/ui/workspace/workspace-model.js.map +1 -1
  55. package/dist/ui/workspace/workspace-overview/index.js +0 -3
  56. package/dist/ui/workspace/workspace-overview/index.js.map +1 -1
  57. package/dist/ui/workspace/workspace-overview/workspace-overview.js +0 -23
  58. package/dist/ui/workspace/workspace-overview/workspace-overview.js.map +1 -1
  59. package/dist/ui/workspace/workspace-provider.js +0 -8
  60. package/dist/ui/workspace/workspace-provider.js.map +1 -1
  61. package/dist/ui/workspace/workspace.js +2 -52
  62. package/dist/ui/workspace/workspace.js.map +1 -1
  63. package/dist/use.cmd.js +0 -13
  64. package/dist/use.cmd.js.map +1 -1
  65. package/dist/watch/check-types.js +0 -1
  66. package/dist/watch/check-types.js.map +1 -1
  67. package/dist/watch/output-formatter.js +1 -12
  68. package/dist/watch/output-formatter.js.map +1 -1
  69. package/dist/watch/watch-queue.js +0 -13
  70. package/dist/watch/watch-queue.js.map +1 -1
  71. package/dist/watch/watch.cmd.js +6 -41
  72. package/dist/watch/watch.cmd.js.map +1 -1
  73. package/dist/watch/watcher.js +13 -133
  74. package/dist/watch/watcher.js.map +1 -1
  75. package/dist/workspace-component/component-status.js +0 -4
  76. package/dist/workspace-component/component-status.js.map +1 -1
  77. package/dist/workspace-component/index.js +0 -6
  78. package/dist/workspace-component/index.js.map +1 -1
  79. package/dist/workspace-component/workspace-component-loader.js +21 -114
  80. package/dist/workspace-component/workspace-component-loader.js.map +1 -1
  81. package/dist/workspace-component/workspace-component.js +1 -11
  82. package/dist/workspace-component/workspace-component.js.map +1 -1
  83. package/dist/workspace-section.js +2 -0
  84. package/dist/workspace-section.js.map +1 -1
  85. package/dist/workspace.aspect.js +0 -5
  86. package/dist/workspace.aspect.js.map +1 -1
  87. package/dist/workspace.composition.js +0 -6
  88. package/dist/workspace.composition.js.map +1 -1
  89. package/dist/workspace.graphql.js +0 -12
  90. package/dist/workspace.graphql.js.map +1 -1
  91. package/dist/workspace.js +134 -545
  92. package/dist/workspace.js.map +1 -1
  93. package/dist/workspace.main.runtime.js +0 -55
  94. package/dist/workspace.main.runtime.js.map +1 -1
  95. package/dist/workspace.provider.js +8 -77
  96. package/dist/workspace.provider.js.map +1 -1
  97. package/dist/workspace.ui-root.js +3 -17
  98. package/dist/workspace.ui-root.js.map +1 -1
  99. package/dist/workspace.ui.drawer.js +2 -24
  100. package/dist/workspace.ui.drawer.js.map +1 -1
  101. package/dist/workspace.ui.runtime.js +0 -75
  102. package/dist/workspace.ui.runtime.js.map +1 -1
  103. package/package-tar/teambit-workspace-0.0.882.tgz +0 -0
  104. package/package.json +33 -33
  105. package/{preview-1666312873430.js → preview-1666496165706.js} +2 -2
  106. package/package-tar/teambit-workspace-0.0.880.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":";;;;;;;AAOO,MAAMA,eAAN,CAAsB;EAC3BC,WAAW;EACT;AACJ;AACA;EACaC,UAJA;EAMT;AACJ;AACA;EACaC,KATA;EAWT;AACJ;AACA;EACaC,SAdA;EAgBT;AACJ;AACA;EACaC,QAnBA;EAqBT;AACJ;AACA;EACaC,aAxBA;EA0BT;AACJ;AACA;EACaC,SA7BA;EA+BT;AACJ;AACA;EACaC,UAlCA;EAoCT;AACJ;AACA;EACaC,MAvCA;EAwCT;AACJ;AACA;EACaC,eA3CA,EA4CT;IAAA,KAxCSR,UAwCT,GAxCSA,UAwCT;IAAA,KAnCSC,KAmCT,GAnCSA,KAmCT;IAAA,KA9BSC,SA8BT,GA9BSA,SA8BT;IAAA,KAzBSC,QAyBT,GAzBSA,QAyBT;IAAA,KApBSC,aAoBT,GApBSA,aAoBT;IAAA,KAfSC,SAeT,GAfSA,SAeT;IAAA,KAVSC,UAUT,GAVSA,UAUT;IAAA,KALSC,MAKT,GALSA,MAKT;IAAA,KADSC,eACT,GADSA,eACT;EAAE;;EAEa,OAAVC,UAAU,CACfC,MADe,EAEfC,uBAFe,EAGfL,UAHe,EAIfE,eAJe,EAKf;IACA,MAAMI,MAAkB,GAAG;MACzBC,gBAAgB,EAAE,CAAC,CAACH,MAAM,CAACI,QADF;MAEzBH;IAFyB,CAA3B;IAIA,OAAO,IAAIb,eAAJ,CACLc,MADK,EAEL,CAAC,CAACF,MAAM,CAACK,YAFJ,EAGL,CAAC,CAACL,MAAM,CAACM,OAHJ,EAIL,CAAC,CAACN,MAAM,CAACO,MAJJ,EAKL,CAACP,MAAM,CAACQ,QALH,EAML,CAACR,MAAM,CAACS,gBANH,EAOLb,UAPK,EAQL,CAAC,CAACI,MAAM,CAACH,MARJ,EASLC,eATK,CAAP;EAWD;;AApE0B"}
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":";;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
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
- }); // remove errored components
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
- const consumerComponent = legacyComponent || (await this.getConsumerComponent(id)); // in case of out-of-sync, the id may changed during the load process
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)(); // Merge extensions added by the legacy code in memory (for example data of dependency resolver)
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
- const extensionDataList = _extensionData().ExtensionDataList.mergeConfigs([extensionsFromConsumerComponent, extensions]).filterRemovedExtensions(); // temporarily mutate consumer component extensions until we remove all direct access from legacy to extensions data
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
- } // Special load events which runs from the workspace but should run from the correct aspect
394
- // TODO: remove this once those extensions dependent on workspace
395
-
305
+ }
396
306
 
397
- const envsData = await this.workspace.getEnvSystemDescriptor(component); // Move to deps resolver main runtime once we switch ws<> deps resolver direction
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
- }; // Make sure we are adding the envs / deps data first because other on load events might depend on it
317
+ };
405
318
 
406
- await Promise.all([this.upsertExtensionData(component, _envs().EnvsAspect.id, envsData), this.upsertExtensionData(component, _dependencyResolver().DependencyResolverAspect.id, depResolverData)]); // 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
407
- // 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
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); // Update the aspect list to have changes happened during the on load slot (new data added above)
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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"}