@atlaspack/core 2.16.2-dev.14 → 2.16.2-dev.1c70d50f9.99

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 (75) hide show
  1. package/CHANGELOG.md +196 -0
  2. package/lib/AssetGraph.js +27 -7
  3. package/lib/Atlaspack.js +10 -2
  4. package/lib/BundleGraph.js +6 -105
  5. package/lib/Dependency.js +6 -2
  6. package/lib/Environment.js +5 -3
  7. package/lib/EnvironmentManager.js +137 -0
  8. package/lib/InternalConfig.js +3 -2
  9. package/lib/PackagerRunner.js +52 -15
  10. package/lib/RequestTracker.js +313 -94
  11. package/lib/UncommittedAsset.js +20 -2
  12. package/lib/applyRuntimes.js +2 -1
  13. package/lib/assetUtils.js +2 -1
  14. package/lib/atlaspack-v3/worker/worker.js +8 -0
  15. package/lib/index.js +29 -1
  16. package/lib/public/Asset.js +3 -2
  17. package/lib/public/Bundle.js +2 -1
  18. package/lib/public/BundleGraph.js +21 -8
  19. package/lib/public/Config.js +91 -3
  20. package/lib/public/Dependency.js +2 -1
  21. package/lib/public/MutableBundleGraph.js +2 -1
  22. package/lib/public/Target.js +2 -1
  23. package/lib/requests/AssetGraphRequest.js +13 -1
  24. package/lib/requests/AssetGraphRequestRust.js +17 -2
  25. package/lib/requests/AssetRequest.js +2 -1
  26. package/lib/requests/BundleGraphRequest.js +13 -1
  27. package/lib/requests/ConfigRequest.js +27 -4
  28. package/lib/requests/DevDepRequest.js +21 -1
  29. package/lib/requests/PathRequest.js +10 -0
  30. package/lib/requests/TargetRequest.js +18 -16
  31. package/lib/requests/WriteBundleRequest.js +15 -3
  32. package/lib/requests/WriteBundlesRequest.js +1 -0
  33. package/lib/resolveOptions.js +4 -2
  34. package/package.json +18 -25
  35. package/src/AssetGraph.js +30 -7
  36. package/src/Atlaspack.js +13 -5
  37. package/src/BundleGraph.js +13 -175
  38. package/src/Dependency.js +13 -5
  39. package/src/Environment.js +9 -6
  40. package/src/EnvironmentManager.js +145 -0
  41. package/src/InternalConfig.js +6 -5
  42. package/src/PackagerRunner.js +72 -20
  43. package/src/RequestTracker.js +532 -150
  44. package/src/UncommittedAsset.js +23 -3
  45. package/src/applyRuntimes.js +6 -1
  46. package/src/assetUtils.js +4 -3
  47. package/src/atlaspack-v3/worker/compat/plugin-config.js +9 -5
  48. package/src/atlaspack-v3/worker/worker.js +7 -0
  49. package/src/index.js +5 -1
  50. package/src/public/Asset.js +9 -2
  51. package/src/public/Bundle.js +2 -1
  52. package/src/public/BundleGraph.js +22 -15
  53. package/src/public/Config.js +128 -14
  54. package/src/public/Dependency.js +2 -1
  55. package/src/public/MutableBundleGraph.js +5 -2
  56. package/src/public/Target.js +2 -1
  57. package/src/requests/AssetGraphRequest.js +13 -3
  58. package/src/requests/AssetGraphRequestRust.js +14 -2
  59. package/src/requests/AssetRequest.js +2 -1
  60. package/src/requests/BundleGraphRequest.js +13 -3
  61. package/src/requests/ConfigRequest.js +33 -9
  62. package/src/requests/DevDepRequest.js +44 -12
  63. package/src/requests/PathRequest.js +4 -0
  64. package/src/requests/TargetRequest.js +19 -25
  65. package/src/requests/WriteBundleRequest.js +14 -8
  66. package/src/requests/WriteBundlesRequest.js +1 -0
  67. package/src/resolveOptions.js +4 -2
  68. package/src/types.js +10 -7
  69. package/test/Environment.test.js +43 -34
  70. package/test/EnvironmentManager.test.js +192 -0
  71. package/test/PublicEnvironment.test.js +10 -7
  72. package/test/RequestTracker.test.js +115 -3
  73. package/test/public/Config.test.js +108 -0
  74. package/test/requests/ConfigRequest.test.js +187 -3
  75. package/test/test-utils.js +4 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,201 @@
1
1
  # @atlaspack/core
2
2
 
3
+ ## 2.18.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#652](https://github.com/atlassian-labs/atlaspack/pull/652) [`644b157`](https://github.com/atlassian-labs/atlaspack/commit/644b157dee72a871acc2d0facf0b87b8eea51956) Thanks [@yamadapc](https://github.com/yamadapc)! - Fix bugs related to build aborts. Builds and cache writes will no longer be aborted.
8
+
9
+ - Updated dependencies [[`644b157`](https://github.com/atlassian-labs/atlaspack/commit/644b157dee72a871acc2d0facf0b87b8eea51956)]:
10
+ - @atlaspack/feature-flags@2.18.2
11
+ - @atlaspack/cache@3.2.9
12
+ - @atlaspack/fs@2.15.9
13
+ - @atlaspack/graph@3.5.4
14
+ - @atlaspack/utils@2.15.2
15
+ - @atlaspack/package-manager@2.14.14
16
+ - @atlaspack/profiler@2.14.12
17
+ - @atlaspack/types@2.15.4
18
+ - @atlaspack/workers@2.14.14
19
+ - @atlaspack/plugin@2.14.14
20
+
21
+ ## 2.18.4
22
+
23
+ ### Patch Changes
24
+
25
+ - [#650](https://github.com/atlassian-labs/atlaspack/pull/650) [`ef3d622`](https://github.com/atlassian-labs/atlaspack/commit/ef3d6228f4e006702198a19c61e051d194d325cb) Thanks [@alshdavid](https://github.com/alshdavid)! - Remove package.json#exports
26
+
27
+ - [#646](https://github.com/atlassian-labs/atlaspack/pull/646) [`6b1f5ff`](https://github.com/atlassian-labs/atlaspack/commit/6b1f5fff68d7131fae075e14f4d2c02606dc6058) Thanks [@alshdavid](https://github.com/alshdavid)! - Export WORKER_PATH from @atlaspack/core
28
+
29
+ - [#633](https://github.com/atlassian-labs/atlaspack/pull/633) [`26aa9c5`](https://github.com/atlassian-labs/atlaspack/commit/26aa9c599d2be45ce1438a74c5fa22f39b9b554b) Thanks [@sbhuiyan-atlassian](https://github.com/sbhuiyan-atlassian)! - Ported various HMR changes from Parcel
30
+
31
+ - [#648](https://github.com/atlassian-labs/atlaspack/pull/648) [`c8f7df4`](https://github.com/atlassian-labs/atlaspack/commit/c8f7df4eadfc4718040fceb065dae6e96a4051e7) Thanks [@alshdavid](https://github.com/alshdavid)! - Export ATLASPACK_VERSION and other internals
32
+
33
+ - [#626](https://github.com/atlassian-labs/atlaspack/pull/626) [`0501255`](https://github.com/atlassian-labs/atlaspack/commit/05012550da35b05ce7d356a8cc29311e7f9afdca) Thanks [@yamadapc](https://github.com/yamadapc)! - Clean-up tsconfig invalidation improvements feature-flag
34
+
35
+ - Updated dependencies [[`ef3d622`](https://github.com/atlassian-labs/atlaspack/commit/ef3d6228f4e006702198a19c61e051d194d325cb), [`26aa9c5`](https://github.com/atlassian-labs/atlaspack/commit/26aa9c599d2be45ce1438a74c5fa22f39b9b554b), [`0501255`](https://github.com/atlassian-labs/atlaspack/commit/05012550da35b05ce7d356a8cc29311e7f9afdca)]:
36
+ - @atlaspack/workers@2.14.13
37
+ - @atlaspack/logger@2.14.11
38
+ - @atlaspack/feature-flags@2.18.1
39
+ - @atlaspack/fs@2.15.8
40
+ - @atlaspack/package-manager@2.14.13
41
+ - @atlaspack/types@2.15.3
42
+ - @atlaspack/cache@3.2.8
43
+ - @atlaspack/utils@2.15.1
44
+ - @atlaspack/graph@3.5.3
45
+ - @atlaspack/plugin@2.14.13
46
+ - @atlaspack/profiler@2.14.11
47
+
48
+ ## 2.18.3
49
+
50
+ ### Patch Changes
51
+
52
+ - Updated dependencies [[`10fbcfb`](https://github.com/atlassian-labs/atlaspack/commit/10fbcfbfa49c7a83da5d7c40983e36e87f524a75), [`85c52d3`](https://github.com/atlassian-labs/atlaspack/commit/85c52d3f7717b3c84a118d18ab98cfbfd71dcbd2), [`e39c6cf`](https://github.com/atlassian-labs/atlaspack/commit/e39c6cf05f7e95ce5420dbcea66f401b1cbd397c)]:
53
+ - @atlaspack/feature-flags@2.18.0
54
+ - @atlaspack/utils@2.15.0
55
+ - @atlaspack/cache@3.2.7
56
+ - @atlaspack/fs@2.15.7
57
+ - @atlaspack/graph@3.5.2
58
+ - @atlaspack/package-manager@2.14.12
59
+ - @atlaspack/workers@2.14.12
60
+ - @atlaspack/profiler@2.14.10
61
+ - @atlaspack/types@2.15.2
62
+ - @atlaspack/plugin@2.14.12
63
+
64
+ ## 2.18.2
65
+
66
+ ### Patch Changes
67
+
68
+ - Updated dependencies [[`73ea3c4`](https://github.com/atlassian-labs/atlaspack/commit/73ea3c4d85d4401fdd15abcbf988237e890e7ad3), [`b1b3693`](https://github.com/atlassian-labs/atlaspack/commit/b1b369317c66f8a431c170df2ebba4fa5b2e38ef)]:
69
+ - @atlaspack/feature-flags@2.17.0
70
+ - @atlaspack/cache@3.2.6
71
+ - @atlaspack/fs@2.15.6
72
+ - @atlaspack/graph@3.5.1
73
+ - @atlaspack/utils@2.14.11
74
+ - @atlaspack/package-manager@2.14.11
75
+ - @atlaspack/profiler@2.14.9
76
+ - @atlaspack/types@2.15.1
77
+ - @atlaspack/workers@2.14.11
78
+ - @atlaspack/plugin@2.14.11
79
+
80
+ ## 2.18.1
81
+
82
+ ### Patch Changes
83
+
84
+ - Updated dependencies [[`1b52b99`](https://github.com/atlassian-labs/atlaspack/commit/1b52b99db4298b04c1a6eb0f97994d75a2d436f9)]:
85
+ - @atlaspack/graph@3.5.0
86
+
87
+ ## 2.18.0
88
+
89
+ ### Minor Changes
90
+
91
+ - [#601](https://github.com/atlassian-labs/atlaspack/pull/601) [`1e32d4e`](https://github.com/atlassian-labs/atlaspack/commit/1e32d4eae6b3af3968e8a0ef97d35b4347fd4196) Thanks [@yamadapc](https://github.com/yamadapc)! - Improve granular configuration file invalidations
92
+
93
+ - [#599](https://github.com/atlassian-labs/atlaspack/pull/599) [`0b2f6f5`](https://github.com/atlassian-labs/atlaspack/commit/0b2f6f55794d3ff6e2f5a41f963e7e5dd8ad9f8d) Thanks [@pancaspe87](https://github.com/pancaspe87)! - load and write env to cache - change is feature flagged
94
+
95
+ ### Patch Changes
96
+
97
+ - [#595](https://github.com/atlassian-labs/atlaspack/pull/595) [`51aba5f`](https://github.com/atlassian-labs/atlaspack/commit/51aba5fc0e49235ee06bbc3c376f48c3e7da5c4b) Thanks [@yamadapc](https://github.com/yamadapc)! - Add bundleId to write bundle request results
98
+
99
+ - [#572](https://github.com/atlassian-labs/atlaspack/pull/572) [`6dd4ccb`](https://github.com/atlassian-labs/atlaspack/commit/6dd4ccb753541de32322d881f973d571dd57e4ca) Thanks [@yamadapc](https://github.com/yamadapc)! - Add feature-flagged change which removes all environment duplication around objects
100
+
101
+ - Updated dependencies [[`0999fb7`](https://github.com/atlassian-labs/atlaspack/commit/0999fb78da519a6c7582d212883e515fcf6c1252), [`51aba5f`](https://github.com/atlassian-labs/atlaspack/commit/51aba5fc0e49235ee06bbc3c376f48c3e7da5c4b), [`1e32d4e`](https://github.com/atlassian-labs/atlaspack/commit/1e32d4eae6b3af3968e8a0ef97d35b4347fd4196), [`35fdd4b`](https://github.com/atlassian-labs/atlaspack/commit/35fdd4b52da0af20f74667f7b8adfb2f90279b7c), [`6dd4ccb`](https://github.com/atlassian-labs/atlaspack/commit/6dd4ccb753541de32322d881f973d571dd57e4ca)]:
102
+ - @atlaspack/fs@2.15.5
103
+ - @atlaspack/types@2.15.0
104
+ - @atlaspack/rust@3.3.5
105
+ - @atlaspack/cache@3.2.5
106
+ - @atlaspack/package-manager@2.14.10
107
+ - @atlaspack/profiler@2.14.8
108
+ - @atlaspack/workers@2.14.10
109
+ - @atlaspack/plugin@2.14.10
110
+ - @atlaspack/logger@2.14.10
111
+ - @atlaspack/utils@2.14.10
112
+
113
+ ## 2.17.4
114
+
115
+ ### Patch Changes
116
+
117
+ - [#588](https://github.com/atlassian-labs/atlaspack/pull/588) [`1940859`](https://github.com/atlassian-labs/atlaspack/commit/194085942f0e86532e9d039fc3f8039badce4594) Thanks [@yamadapc](https://github.com/yamadapc)! - Do not invalidate all javascript files when tsconfig files change
118
+
119
+ - [#592](https://github.com/atlassian-labs/atlaspack/pull/592) [`15b6155`](https://github.com/atlassian-labs/atlaspack/commit/15b61556e9114203ebbc9de94b864118ca764598) Thanks [@yamadapc](https://github.com/yamadapc)! - Report large file invalidations
120
+
121
+ - [#503](https://github.com/atlassian-labs/atlaspack/pull/503) [`209692f`](https://github.com/atlassian-labs/atlaspack/commit/209692ffb11eae103a0d65c5e1118a5aa1625818) Thanks [@JakeLane](https://github.com/JakeLane)! - Fix conditional bundling reporter when condition is reused
122
+
123
+ - [#562](https://github.com/atlassian-labs/atlaspack/pull/562) [`d04de26`](https://github.com/atlassian-labs/atlaspack/commit/d04de26af684d7abfba5091fbe3df16a12cd0ebc) Thanks [@yamadapc](https://github.com/yamadapc)! - Update with feature-flagged change to write packages into files rather than LMDB
124
+
125
+ - Updated dependencies [[`124b7ff`](https://github.com/atlassian-labs/atlaspack/commit/124b7fff44f71aac9fbad289a9a9509b3dfc9aaa), [`e052521`](https://github.com/atlassian-labs/atlaspack/commit/e0525210850ed1606146eb86991049cf567c5dec), [`15c6d70`](https://github.com/atlassian-labs/atlaspack/commit/15c6d7000bd89da876bc590aa75b17a619a41896), [`e4d966c`](https://github.com/atlassian-labs/atlaspack/commit/e4d966c3c9c4292c5013372ae65b10d19d4bacc6), [`209692f`](https://github.com/atlassian-labs/atlaspack/commit/209692ffb11eae103a0d65c5e1118a5aa1625818), [`42a775d`](https://github.com/atlassian-labs/atlaspack/commit/42a775de8eec638ad188f3271964170d8c04d84b), [`29c2f10`](https://github.com/atlassian-labs/atlaspack/commit/29c2f106de9679adfb5afa04e1910471dc65a427), [`f4da1e1`](https://github.com/atlassian-labs/atlaspack/commit/f4da1e120e73eeb5e8b8927f05e88f04d6148c7b), [`1ef91fc`](https://github.com/atlassian-labs/atlaspack/commit/1ef91fcc863fdd2831511937083dbbc1263b3d9d)]:
126
+ - @atlaspack/cache@3.2.4
127
+ - @atlaspack/rust@3.3.4
128
+ - @atlaspack/fs@2.15.4
129
+ - @atlaspack/feature-flags@2.16.0
130
+ - @atlaspack/logger@2.14.9
131
+ - @atlaspack/utils@2.14.9
132
+ - @atlaspack/package-manager@2.14.9
133
+ - @atlaspack/graph@3.4.7
134
+ - @atlaspack/workers@2.14.9
135
+ - @atlaspack/profiler@2.14.7
136
+ - @atlaspack/types@2.14.9
137
+ - @atlaspack/plugin@2.14.9
138
+
139
+ ## 2.17.3
140
+
141
+ ### Patch Changes
142
+
143
+ - [#551](https://github.com/atlassian-labs/atlaspack/pull/551) [`30f6017`](https://github.com/atlassian-labs/atlaspack/commit/30f60175ba4d272c5fc193973c63bc298584775b) Thanks [@yamadapc](https://github.com/yamadapc)! - Log request tracker invalidation counts on start-up
144
+
145
+ - [#550](https://github.com/atlassian-labs/atlaspack/pull/550) [`3a3e8e7`](https://github.com/atlassian-labs/atlaspack/commit/3a3e8e7be9e2dffd7304436d792f0f595d59665a) Thanks [@yamadapc](https://github.com/yamadapc)! - Fix typescript declaration files
146
+
147
+ - [#555](https://github.com/atlassian-labs/atlaspack/pull/555) [`15c1e3c`](https://github.com/atlassian-labs/atlaspack/commit/15c1e3c0628bae4c768d76cf3afc53d6d0d7ce7c) Thanks [@alshdavid](https://github.com/alshdavid)! - Added ATLASPACK_NATIVE_THREADS env variable to control the number of threads used by the native thread schedular
148
+
149
+ - Updated dependencies [[`30f6017`](https://github.com/atlassian-labs/atlaspack/commit/30f60175ba4d272c5fc193973c63bc298584775b), [`3a3e8e7`](https://github.com/atlassian-labs/atlaspack/commit/3a3e8e7be9e2dffd7304436d792f0f595d59665a), [`1ab0a27`](https://github.com/atlassian-labs/atlaspack/commit/1ab0a275aeca40350415e2b03e7440d1dddc6228), [`b8a4ae8`](https://github.com/atlassian-labs/atlaspack/commit/b8a4ae8f83dc0a83d8b145c5f729936ce52080a3)]:
150
+ - @atlaspack/feature-flags@2.15.1
151
+ - @atlaspack/fs@2.15.3
152
+ - @atlaspack/rust@3.3.3
153
+ - @atlaspack/cache@3.2.3
154
+ - @atlaspack/graph@3.4.6
155
+ - @atlaspack/utils@2.14.8
156
+ - @atlaspack/package-manager@2.14.8
157
+ - @atlaspack/logger@2.14.8
158
+ - @atlaspack/profiler@2.14.6
159
+ - @atlaspack/types@2.14.8
160
+ - @atlaspack/workers@2.14.8
161
+ - @atlaspack/plugin@2.14.8
162
+
163
+ ## 2.17.2
164
+
165
+ ### Patch Changes
166
+
167
+ - Updated dependencies [[`a1773d2`](https://github.com/atlassian-labs/atlaspack/commit/a1773d2a62d0ef7805ac7524621dcabcc1afe929), [`556d6ab`](https://github.com/atlassian-labs/atlaspack/commit/556d6ab8ede759fa7f37fcd3f4da336ef1c55e8f)]:
168
+ - @atlaspack/feature-flags@2.15.0
169
+ - @atlaspack/logger@2.14.7
170
+ - @atlaspack/rust@3.3.2
171
+ - @atlaspack/cache@3.2.2
172
+ - @atlaspack/fs@2.15.2
173
+ - @atlaspack/graph@3.4.5
174
+ - @atlaspack/utils@2.14.7
175
+ - @atlaspack/package-manager@2.14.7
176
+ - @atlaspack/workers@2.14.7
177
+ - @atlaspack/profiler@2.14.5
178
+ - @atlaspack/types@2.14.7
179
+ - @atlaspack/plugin@2.14.7
180
+
181
+ ## 2.17.1
182
+
183
+ ### Patch Changes
184
+
185
+ - Updated dependencies [[`e0f5337`](https://github.com/atlassian-labs/atlaspack/commit/e0f533757bd1019dbd108a04952c87da15286e09)]:
186
+ - @atlaspack/feature-flags@2.14.4
187
+ - @atlaspack/rust@3.3.1
188
+ - @atlaspack/cache@3.2.1
189
+ - @atlaspack/fs@2.15.1
190
+ - @atlaspack/graph@3.4.4
191
+ - @atlaspack/utils@2.14.6
192
+ - @atlaspack/logger@2.14.6
193
+ - @atlaspack/package-manager@2.14.6
194
+ - @atlaspack/profiler@2.14.4
195
+ - @atlaspack/types@2.14.6
196
+ - @atlaspack/workers@2.14.6
197
+ - @atlaspack/plugin@2.14.6
198
+
3
199
  ## 2.17.0
4
200
 
5
201
  ### Minor Changes
package/lib/AssetGraph.js CHANGED
@@ -46,6 +46,14 @@ function _graph() {
46
46
  }
47
47
  var _Dependency = require("./Dependency");
48
48
  var _projectPath = require("./projectPath");
49
+ var _EnvironmentManager = require("./EnvironmentManager");
50
+ function _featureFlags() {
51
+ const data = require("@atlaspack/feature-flags");
52
+ _featureFlags = function () {
53
+ return data;
54
+ };
55
+ return data;
56
+ }
49
57
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
50
58
  function nodeFromDep(dep) {
51
59
  return {
@@ -63,7 +71,7 @@ function nodeFromDep(dep) {
63
71
  }
64
72
  function nodeFromAssetGroup(assetGroup) {
65
73
  return {
66
- id: (0, _rust().hashString)((0, _projectPath.fromProjectPathRelative)(assetGroup.filePath) + assetGroup.env.id + String(assetGroup.isSource) + String(assetGroup.sideEffects) + (assetGroup.code ?? '') + ':' + (assetGroup.pipeline ?? '') + ':' + (assetGroup.query ?? '')),
74
+ id: (0, _rust().hashString)((0, _projectPath.fromProjectPathRelative)(assetGroup.filePath) + (0, _EnvironmentManager.toEnvironmentId)(assetGroup.env) + String(assetGroup.isSource) + String(assetGroup.sideEffects) + (assetGroup.code ?? '') + ':' + (assetGroup.pipeline ?? '') + ':' + (assetGroup.query ?? '')),
67
75
  type: 'asset_group',
68
76
  value: assetGroup,
69
77
  usedSymbolsDownDirty: true
@@ -130,16 +138,19 @@ class AssetGraph extends _graph().ContentGraph {
130
138
 
131
139
  // Deduplicates Environments by making them referentially equal
132
140
  normalizeEnvironment(input) {
141
+ if ((0, _featureFlags().getFeatureFlag)('environmentDeduplication')) {
142
+ return;
143
+ }
133
144
  let {
134
145
  id,
135
146
  context
136
- } = input.env;
147
+ } = (0, _EnvironmentManager.fromEnvironmentId)(input.env);
137
148
  let idAndContext = `${id}-${context}`;
138
149
  let env = this.envCache.get(idAndContext);
139
150
  if (env) {
140
- input.env = env;
151
+ input.env = (0, _EnvironmentManager.toEnvironmentRef)(env);
141
152
  } else {
142
- this.envCache.set(idAndContext, input.env);
153
+ this.envCache.set(idAndContext, (0, _EnvironmentManager.fromEnvironmentId)(input.env));
143
154
  }
144
155
  }
145
156
  setRootConnections({
@@ -199,13 +210,13 @@ class AssetGraph extends _graph().ContentGraph {
199
210
  env: target.env,
200
211
  isEntry: true,
201
212
  needsStableName: true,
202
- symbols: target.env.isLibrary ? new Map([['*', {
213
+ symbols: (0, _EnvironmentManager.fromEnvironmentId)(target.env).isLibrary ? new Map([['*', {
203
214
  local: '*',
204
215
  isWeak: true,
205
216
  loc: null
206
217
  }]]) : undefined
207
218
  }));
208
- if (node.value.env.isLibrary) {
219
+ if ((0, _EnvironmentManager.fromEnvironmentId)(node.value.env).isLibrary) {
209
220
  // in library mode, all of the entry's symbols are "used"
210
221
  node.usedSymbolsDown.add('*');
211
222
  node.usedSymbolsUp.set('*', undefined);
@@ -348,7 +359,7 @@ class AssetGraph extends _graph().ContentGraph {
348
359
  if (this.undeferredDependencies.has(d)) {
349
360
  return false;
350
361
  }
351
- let depIsDeferrable = d.symbols && !(d.env.isLibrary && d.isEntry) && !d.symbols.has('*') && ![...d.symbols.keys()].some(symbol => {
362
+ let depIsDeferrable = d.symbols && !((0, _EnvironmentManager.fromEnvironmentId)(d.env).isLibrary && d.isEntry) && !d.symbols.has('*') && ![...d.symbols.keys()].some(symbol => {
352
363
  var _resolvedAsset$symbol;
353
364
  let assetSymbol = (_resolvedAsset$symbol = resolvedAsset.symbols) === null || _resolvedAsset$symbol === void 0 || (_resolvedAsset$symbol = _resolvedAsset$symbol.get(symbol)) === null || _resolvedAsset$symbol === void 0 ? void 0 : _resolvedAsset$symbol.local;
354
365
  return assetSymbol != null && symbols.has(assetSymbol);
@@ -432,6 +443,15 @@ class AssetGraph extends _graph().ContentGraph {
432
443
  ...depNode.value.meta,
433
444
  ...existing.value.resolverMeta
434
445
  };
446
+ if ((0, _featureFlags().getFeatureFlag)('hmrImprovements')) {
447
+ depNode.value.resolverMeta = existing.value.resolverMeta;
448
+ }
449
+ }
450
+ if ((0, _featureFlags().getFeatureFlag)('hmrImprovements')) {
451
+ if ((existing === null || existing === void 0 ? void 0 : existing.type) === 'dependency' && existing.value.resolverPriority != null) {
452
+ depNode.value.priority = existing.value.resolverPriority;
453
+ depNode.value.resolverPriority = existing.value.resolverPriority;
454
+ }
435
455
  }
436
456
  let dependentAsset = dependentAssets.find(a => a.uniqueKey === dep.specifier);
437
457
  if (dependentAsset) {
package/lib/Atlaspack.js CHANGED
@@ -207,10 +207,16 @@ class Atlaspack {
207
207
  // $FlowFixMe
208
208
  const version = require('../package.json').version;
209
209
  await lmdb.put('current_session_version', Buffer.from(version));
210
+ let threads = undefined;
211
+ if (process.env.ATLASPACK_NATIVE_THREADS !== undefined) {
212
+ threads = parseInt(process.env.ATLASPACK_NATIVE_THREADS, 10);
213
+ } else if (process.env.NODE_ENV === 'test') {
214
+ threads = 2;
215
+ }
210
216
  rustAtlaspack = await _atlaspackV.AtlaspackV3.create({
211
217
  ...options,
212
218
  corePath: _path().default.join(__dirname, '..'),
213
- threads: process.env.NODE_ENV === 'test' ? 2 : undefined,
219
+ threads,
214
220
  entries: Array.isArray(entries) ? entries : entries == null ? undefined : [entries],
215
221
  env: resolvedOptions.env,
216
222
  fs: inputFS && new _atlaspackV.FileSystemV3(inputFS),
@@ -504,7 +510,9 @@ class Atlaspack {
504
510
  if (this.rustAtlaspack) {
505
511
  nativeInvalid = await this.rustAtlaspack.respondToFsEvents(events);
506
512
  }
507
- let isInvalid = await this.#requestTracker.respondToFSEvents(events, Number.POSITIVE_INFINITY);
513
+ let {
514
+ didInvalidate: isInvalid
515
+ } = await this.#requestTracker.respondToFSEvents(events, Number.POSITIVE_INFINITY);
508
516
  if ((nativeInvalid || isInvalid) && this.#watchQueue.getNumWaiting() === 0) {
509
517
  if (this.#watchAbortController) {
510
518
  this.#watchAbortController.abort();
@@ -51,6 +51,7 @@ function _featureFlags() {
51
51
  };
52
52
  return data;
53
53
  }
54
+ var _EnvironmentManager = require("./EnvironmentManager");
54
55
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
56
  const bundleGraphEdgeTypes = exports.bundleGraphEdgeTypes = {
56
57
  // A lack of an edge type indicates to follow the edge while traversing
@@ -207,7 +208,7 @@ class BundleGraph {
207
208
  }
208
209
  }
209
210
  }
210
- if (node.type === 'dependency' && node.value.symbols != null && node.value.env.shouldScopeHoist &&
211
+ if (node.type === 'dependency' && node.value.symbols != null && (0, _EnvironmentManager.fromEnvironmentId)(node.value.env).shouldScopeHoist &&
211
212
  // Disable in dev mode because this feature is at odds with safeToIncrementallyBundle
212
213
  isProduction) {
213
214
  let nodeValueSymbols = node.value.symbols;
@@ -822,86 +823,6 @@ class BundleGraph {
822
823
  traverseAssets(bundle, visit, startAsset) {
823
824
  return this.traverseBundle(bundle, (0, _graph().mapVisitor)(node => node.type === 'asset' ? node.value : null, visit), startAsset);
824
825
  }
825
- getReferencedAssets(bundle, cache) {
826
- const result = new Set();
827
- const siblingBundles = new Set(this.getBundleGroupsContainingBundle(bundle).flatMap(bundleGroup => this.getBundlesInBundleGroup(bundleGroup, {
828
- includeInline: true
829
- })));
830
- const candidates = new Map();
831
- this.traverseAssets(bundle, asset => {
832
- // If the asset is available in multiple bundles in the same target, it's referenced.
833
- const bundlesWithAsset = this.getBundlesWithAsset(asset);
834
- if (bundlesWithAsset.filter(b => b.target.name === bundle.target.name && b.target.distDir === bundle.target.distDir).length > 1) {
835
- result.add(asset.id);
836
- return;
837
- }
838
- const assetNodeId = (0, _nullthrows().default)(this._graph.getNodeIdByContentKey(asset.id));
839
- if (this._graph.getNodeIdsConnectedTo(assetNodeId, bundleGraphEdgeTypes.references).map(id => this._graph.getNode(id)).some(node => (node === null || node === void 0 ? void 0 : node.type) === 'dependency' && (node.value.priority === _types.Priority.lazy || node.value.priority === _types.Priority.conditional) && node.value.specifierType !== _types.SpecifierType.url)) {
840
- // If this asset is referenced by any async dependency, it's referenced.
841
- result.add(asset.id);
842
- return;
843
- }
844
- const dependencies = this._graph.getNodeIdsConnectedTo(assetNodeId).map(id => (0, _nullthrows().default)(this._graph.getNode(id))).filter(node => node.type === 'dependency').map(node => {
845
- (0, _assert().default)(node.type === 'dependency');
846
- return node.value;
847
- });
848
- candidates.set(asset.id, {
849
- asset,
850
- dependencies,
851
- bundlesWithAsset
852
- });
853
- });
854
- const visitedBundles = new Set();
855
-
856
- // Check if any of this bundle's descendants, referencers, bundles referenced
857
- // by referencers, or descendants of its referencers use the asset without
858
- // an explicit reference edge. This can happen if e.g. the asset has been
859
- // deduplicated.
860
- [...siblingBundles].forEach(referencer => {
861
- this.traverseBundles((descendant, _, actions) => {
862
- if (descendant.id === bundle.id) {
863
- return;
864
- }
865
- if (visitedBundles.has(descendant)) {
866
- actions.skipChildren();
867
- return;
868
- }
869
- visitedBundles.add(descendant);
870
- if (descendant.type !== bundle.type || descendant.env.context !== bundle.env.context) {
871
- actions.skipChildren();
872
- return;
873
- }
874
- for (let assetId of this.getBundleDirectReferences(descendant, cache)) {
875
- if (candidates.has(assetId)) {
876
- result.add(assetId);
877
- }
878
- }
879
- }, referencer);
880
- });
881
- return result;
882
- }
883
- getBundleDirectReferences(bundle, cache) {
884
- const cachedResult = cache.get(bundle);
885
- if (cachedResult != null) {
886
- return cachedResult;
887
- }
888
- const directReferences = new Set();
889
- const bundleAssets = this.getBundleContainedAssets(bundle);
890
- const bundleDependencies = this.getBundleContainedDependencies(bundle);
891
- for (const dependency of bundleDependencies) {
892
- this._graph.forEachNodeIdConnectedFrom(this._graph.getNodeIdByContentKey(dependency), assetId => {
893
- const asset = (0, _nullthrows().default)(this._graph.getNode(assetId));
894
- if (asset.type !== 'asset') {
895
- return;
896
- }
897
- if (!bundleAssets.has(asset.id)) {
898
- directReferences.add(asset.id);
899
- }
900
- });
901
- }
902
- cache.set(bundle, directReferences);
903
- return directReferences;
904
- }
905
826
  isAssetReferenced(bundle, asset) {
906
827
  // If the asset is available in multiple bundles in the same target, it's referenced.
907
828
  if (this.getBundlesWithAsset(asset).filter(b => b.target.name === bundle.target.name && b.target.distDir === bundle.target.distDir).length > 1) {
@@ -939,7 +860,7 @@ class BundleGraph {
939
860
  return;
940
861
  }
941
862
  visitedBundles.add(descendant);
942
- if (descendant.type !== bundle.type || descendant.env.context !== bundle.env.context) {
863
+ if (descendant.type !== bundle.type || (0, _EnvironmentManager.fromEnvironmentId)(descendant.env).context !== (0, _EnvironmentManager.fromEnvironmentId)(bundle.env).context) {
943
864
  actions.skipChildren();
944
865
  return;
945
866
  }
@@ -967,7 +888,7 @@ class BundleGraph {
967
888
  isAssetReachableFromBundle(asset, bundle) {
968
889
  // If a bundle's environment is isolated, it can't access assets present
969
890
  // in any ancestor bundles. Don't consider any assets reachable.
970
- if (_Environment.ISOLATED_ENVS.has(bundle.env.context) || !bundle.isSplittable || bundle.bundleBehavior === _types.BundleBehavior.isolated || bundle.bundleBehavior === _types.BundleBehavior.inline) {
891
+ if (_Environment.ISOLATED_ENVS.has((0, _EnvironmentManager.fromEnvironmentId)(bundle.env).context) || !bundle.isSplittable || bundle.bundleBehavior === _types.BundleBehavior.isolated || bundle.bundleBehavior === _types.BundleBehavior.inline) {
971
892
  return false;
972
893
  }
973
894
 
@@ -995,7 +916,7 @@ class BundleGraph {
995
916
  let node = (0, _nullthrows().default)(this._graph.getNode(nodeId));
996
917
  // If we've reached the root or a context change without
997
918
  // finding this asset in the ancestry, it is not reachable.
998
- if (node.type === 'root' || node.type === 'bundle' && (node.value.id === bundle.id || node.value.env.context !== bundle.env.context)) {
919
+ if (node.type === 'root' || node.type === 'bundle' && (node.value.id === bundle.id || (0, _EnvironmentManager.fromEnvironmentId)(node.value.env).context !== (0, _EnvironmentManager.fromEnvironmentId)(bundle.env).context)) {
999
920
  isReachable = false;
1000
921
  actions.stop();
1001
922
  return;
@@ -1220,26 +1141,6 @@ class BundleGraph {
1220
1141
  let dependencyNodeId = this._graph.getNodeIdByContentKey(dependency.id);
1221
1142
  return this._graph.hasEdge(bundleNodeId, dependencyNodeId, bundleGraphEdgeTypes.contains);
1222
1143
  }
1223
- getBundleContainedAssets(bundle) {
1224
- const assets = new Set();
1225
- this._graph.forEachNodeIdConnectedFrom(this._graph.getNodeIdByContentKey(bundle.id), nodeId => {
1226
- const node = (0, _nullthrows().default)(this._graph.getNode(nodeId));
1227
- if (node.type === 'asset') {
1228
- assets.add(node.value.id);
1229
- }
1230
- }, bundleGraphEdgeTypes.contains);
1231
- return assets;
1232
- }
1233
- getBundleContainedDependencies(bundle) {
1234
- const dependencies = new Set();
1235
- this._graph.forEachNodeIdConnectedFrom(this._graph.getNodeIdByContentKey(bundle.id), nodeId => {
1236
- const node = (0, _nullthrows().default)(this._graph.getNode(nodeId));
1237
- if (node.type === 'dependency') {
1238
- dependencies.add(node.value.id);
1239
- }
1240
- }, bundleGraphEdgeTypes.contains);
1241
- return dependencies;
1242
- }
1243
1144
  filteredTraverse(bundleNodeId, filter, visit) {
1244
1145
  return this._graph.filteredTraverse(filter, visit, bundleNodeId);
1245
1146
  }
@@ -1510,7 +1411,7 @@ class BundleGraph {
1510
1411
  for (let referencedBundle of this.getReferencedBundles(bundle)) {
1511
1412
  hash.writeString(referencedBundle.id);
1512
1413
  }
1513
- hash.writeString(JSON.stringify((0, _utils().objectSortedEntriesDeep)(bundle.env)));
1414
+ hash.writeString(JSON.stringify((0, _utils().objectSortedEntriesDeep)((0, _EnvironmentManager.fromEnvironmentId)(bundle.env))));
1514
1415
  return hash.finish();
1515
1416
  }
1516
1417
  getBundleGraphHash() {
package/lib/Dependency.js CHANGED
@@ -24,6 +24,7 @@ function _assert() {
24
24
  return data;
25
25
  }
26
26
  var _IdentifierRegistry = require("./IdentifierRegistry");
27
+ var _EnvironmentManager = require("./EnvironmentManager");
27
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29
  function createDependencyId({
29
30
  sourceAssetId,
@@ -41,8 +42,11 @@ function createDependencyId({
41
42
  const params = {
42
43
  sourceAssetId,
43
44
  specifier,
44
- environmentId: env.id,
45
- target,
45
+ environmentId: (0, _EnvironmentManager.toEnvironmentId)(env),
46
+ target: target != null ? {
47
+ ...target,
48
+ env: (0, _EnvironmentManager.fromEnvironmentId)(target.env)
49
+ } : null,
46
50
  pipeline,
47
51
  specifierType: _types.SpecifierType[specifierType],
48
52
  bundleBehavior,
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createEnvironment = createEnvironment;
7
+ exports.getEnvironmentHash = getEnvironmentHash;
7
8
  exports.mergeEnvironments = mergeEnvironments;
8
9
  function _rust() {
9
10
  const data = require("@atlaspack/rust");
@@ -15,6 +16,7 @@ function _rust() {
15
16
  var _utils = require("./utils");
16
17
  var _Environment = _interopRequireWildcard(require("./public/Environment"));
17
18
  var _IdentifierRegistry = require("./IdentifierRegistry");
19
+ var _EnvironmentManager = require("./EnvironmentManager");
18
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
22
  const DEFAULT_ENGINES = {
@@ -108,15 +110,15 @@ function createEnvironment({
108
110
  loc
109
111
  };
110
112
  res.id = getEnvironmentHash(res);
111
- return Object.freeze(res);
113
+ return (0, _EnvironmentManager.toEnvironmentRef)(Object.freeze(res));
112
114
  }
113
115
  function mergeEnvironments(projectRoot, a, b) {
114
116
  // If merging the same object, avoid copying.
115
117
  if (a === b || !b) {
116
- return a;
118
+ return (0, _EnvironmentManager.toEnvironmentRef)(a);
117
119
  }
118
120
  if (b instanceof _Environment.default) {
119
- return (0, _Environment.environmentToInternalEnvironment)(b);
121
+ return (0, _EnvironmentManager.toEnvironmentRef)((0, _Environment.environmentToInternalEnvironment)(b));
120
122
  }
121
123
 
122
124
  // $FlowFixMe - ignore the `id` that is already on a