@atlaspack/core 2.14.1-dev.145 → 2.14.1-dev.146
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/lib/AssetGraph.js +17 -6
- package/lib/Atlaspack.js +3 -1
- package/lib/BundleGraph.js +6 -5
- package/lib/Dependency.js +6 -2
- package/lib/Environment.js +4 -3
- package/lib/EnvironmentManager.js +137 -0
- package/lib/InternalConfig.js +3 -2
- package/lib/PackagerRunner.js +52 -15
- package/lib/RequestTracker.js +191 -89
- package/lib/UncommittedAsset.js +20 -2
- package/lib/applyRuntimes.js +2 -1
- package/lib/assetUtils.js +2 -1
- package/lib/public/Asset.js +3 -2
- package/lib/public/Bundle.js +2 -1
- package/lib/public/Config.js +98 -3
- package/lib/public/Dependency.js +2 -1
- package/lib/public/MutableBundleGraph.js +2 -1
- package/lib/public/Target.js +2 -1
- package/lib/requests/AssetGraphRequest.js +13 -1
- package/lib/requests/AssetRequest.js +2 -1
- package/lib/requests/BundleGraphRequest.js +13 -1
- package/lib/requests/ConfigRequest.js +27 -4
- package/lib/requests/TargetRequest.js +18 -16
- package/lib/requests/WriteBundleRequest.js +15 -3
- package/lib/requests/WriteBundlesRequest.js +1 -0
- package/lib/resolveOptions.js +4 -2
- package/package.json +17 -17
- package/src/AssetGraph.js +12 -6
- package/src/Atlaspack.js +5 -4
- package/src/BundleGraph.js +13 -8
- package/src/Dependency.js +13 -5
- package/src/Environment.js +8 -5
- package/src/EnvironmentManager.js +145 -0
- package/src/InternalConfig.js +6 -5
- package/src/PackagerRunner.js +72 -20
- package/src/RequestTracker.js +330 -146
- package/src/UncommittedAsset.js +23 -3
- package/src/applyRuntimes.js +6 -1
- package/src/assetUtils.js +4 -3
- package/src/atlaspack-v3/worker/compat/plugin-config.js +9 -5
- package/src/public/Asset.js +9 -2
- package/src/public/Bundle.js +2 -1
- package/src/public/Config.js +129 -14
- package/src/public/Dependency.js +2 -1
- package/src/public/MutableBundleGraph.js +2 -1
- package/src/public/Target.js +2 -1
- package/src/requests/AssetGraphRequest.js +13 -3
- package/src/requests/AssetRequest.js +2 -1
- package/src/requests/BundleGraphRequest.js +13 -3
- package/src/requests/ConfigRequest.js +33 -9
- package/src/requests/TargetRequest.js +19 -25
- package/src/requests/WriteBundleRequest.js +14 -8
- package/src/requests/WriteBundlesRequest.js +1 -0
- package/src/resolveOptions.js +4 -2
- package/src/types.js +9 -7
- package/test/Environment.test.js +43 -34
- package/test/EnvironmentManager.test.js +192 -0
- package/test/PublicEnvironment.test.js +10 -7
- package/test/RequestTracker.test.js +115 -3
- package/test/public/Config.test.js +108 -0
- package/test/requests/ConfigRequest.test.js +187 -3
- package/test/test-utils.js +4 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
# @atlaspack/core
|
|
2
2
|
|
|
3
|
+
## 2.18.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`1b52b99`](https://github.com/atlassian-labs/atlaspack/commit/1b52b99db4298b04c1a6eb0f97994d75a2d436f9)]:
|
|
8
|
+
- @atlaspack/graph@3.5.0
|
|
9
|
+
|
|
10
|
+
## 2.18.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [#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
|
|
15
|
+
|
|
16
|
+
- [#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
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [#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
|
|
21
|
+
|
|
22
|
+
- [#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
|
|
23
|
+
|
|
24
|
+
- 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)]:
|
|
25
|
+
- @atlaspack/fs@2.15.5
|
|
26
|
+
- @atlaspack/types@2.15.0
|
|
27
|
+
- @atlaspack/rust@3.3.5
|
|
28
|
+
- @atlaspack/cache@3.2.5
|
|
29
|
+
- @atlaspack/package-manager@2.14.10
|
|
30
|
+
- @atlaspack/profiler@2.14.8
|
|
31
|
+
- @atlaspack/workers@2.14.10
|
|
32
|
+
- @atlaspack/plugin@2.14.10
|
|
33
|
+
- @atlaspack/logger@2.14.10
|
|
34
|
+
- @atlaspack/utils@2.14.10
|
|
35
|
+
|
|
36
|
+
## 2.17.4
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- [#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
|
|
41
|
+
|
|
42
|
+
- [#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
|
|
43
|
+
|
|
44
|
+
- [#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
|
|
45
|
+
|
|
46
|
+
- [#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
|
|
47
|
+
|
|
48
|
+
- 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)]:
|
|
49
|
+
- @atlaspack/cache@3.2.4
|
|
50
|
+
- @atlaspack/rust@3.3.4
|
|
51
|
+
- @atlaspack/fs@2.15.4
|
|
52
|
+
- @atlaspack/feature-flags@2.16.0
|
|
53
|
+
- @atlaspack/logger@2.14.9
|
|
54
|
+
- @atlaspack/utils@2.14.9
|
|
55
|
+
- @atlaspack/package-manager@2.14.9
|
|
56
|
+
- @atlaspack/graph@3.4.7
|
|
57
|
+
- @atlaspack/workers@2.14.9
|
|
58
|
+
- @atlaspack/profiler@2.14.7
|
|
59
|
+
- @atlaspack/types@2.14.9
|
|
60
|
+
- @atlaspack/plugin@2.14.9
|
|
61
|
+
|
|
3
62
|
## 2.17.3
|
|
4
63
|
|
|
5
64
|
### Patch 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
|
|
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
151
|
input.env = 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);
|
package/lib/Atlaspack.js
CHANGED
|
@@ -509,7 +509,9 @@ class Atlaspack {
|
|
|
509
509
|
if (this.rustAtlaspack) {
|
|
510
510
|
nativeInvalid = await this.rustAtlaspack.respondToFsEvents(events);
|
|
511
511
|
}
|
|
512
|
-
let
|
|
512
|
+
let {
|
|
513
|
+
didInvalidate: isInvalid
|
|
514
|
+
} = await this.#requestTracker.respondToFSEvents(events, Number.POSITIVE_INFINITY);
|
|
513
515
|
if ((nativeInvalid || isInvalid) && this.#watchQueue.getNumWaiting() === 0) {
|
|
514
516
|
if (this.#watchAbortController) {
|
|
515
517
|
this.#watchAbortController.abort();
|
package/lib/BundleGraph.js
CHANGED
|
@@ -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;
|
|
@@ -862,7 +863,7 @@ class BundleGraph {
|
|
|
862
863
|
return;
|
|
863
864
|
}
|
|
864
865
|
visitedBundles.add(descendant);
|
|
865
|
-
if (descendant.type !== bundle.type || descendant.env.context !== bundle.env.context) {
|
|
866
|
+
if (descendant.type !== bundle.type || (0, _EnvironmentManager.fromEnvironmentId)(descendant.env).context !== (0, _EnvironmentManager.fromEnvironmentId)(bundle.env).context) {
|
|
866
867
|
actions.skipChildren();
|
|
867
868
|
return;
|
|
868
869
|
}
|
|
@@ -890,7 +891,7 @@ class BundleGraph {
|
|
|
890
891
|
isAssetReachableFromBundle(asset, bundle) {
|
|
891
892
|
// If a bundle's environment is isolated, it can't access assets present
|
|
892
893
|
// in any ancestor bundles. Don't consider any assets reachable.
|
|
893
|
-
if (_Environment.ISOLATED_ENVS.has(bundle.env.context) || !bundle.isSplittable || bundle.bundleBehavior === _types.BundleBehavior.isolated || bundle.bundleBehavior === _types.BundleBehavior.inline) {
|
|
894
|
+
if (_Environment.ISOLATED_ENVS.has((0, _EnvironmentManager.fromEnvironmentId)(bundle.env).context) || !bundle.isSplittable || bundle.bundleBehavior === _types.BundleBehavior.isolated || bundle.bundleBehavior === _types.BundleBehavior.inline) {
|
|
894
895
|
return false;
|
|
895
896
|
}
|
|
896
897
|
|
|
@@ -918,7 +919,7 @@ class BundleGraph {
|
|
|
918
919
|
let node = (0, _nullthrows().default)(this._graph.getNode(nodeId));
|
|
919
920
|
// If we've reached the root or a context change without
|
|
920
921
|
// finding this asset in the ancestry, it is not reachable.
|
|
921
|
-
if (node.type === 'root' || node.type === 'bundle' && (node.value.id === bundle.id || node.value.env.context !== bundle.env.context)) {
|
|
922
|
+
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)) {
|
|
922
923
|
isReachable = false;
|
|
923
924
|
actions.stop();
|
|
924
925
|
return;
|
|
@@ -1413,7 +1414,7 @@ class BundleGraph {
|
|
|
1413
1414
|
for (let referencedBundle of this.getReferencedBundles(bundle)) {
|
|
1414
1415
|
hash.writeString(referencedBundle.id);
|
|
1415
1416
|
}
|
|
1416
|
-
hash.writeString(JSON.stringify((0, _utils().objectSortedEntriesDeep)(bundle.env)));
|
|
1417
|
+
hash.writeString(JSON.stringify((0, _utils().objectSortedEntriesDeep)((0, _EnvironmentManager.fromEnvironmentId)(bundle.env))));
|
|
1417
1418
|
return hash.finish();
|
|
1418
1419
|
}
|
|
1419
1420
|
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
|
|
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,
|
package/lib/Environment.js
CHANGED
|
@@ -15,6 +15,7 @@ function _rust() {
|
|
|
15
15
|
var _utils = require("./utils");
|
|
16
16
|
var _Environment = _interopRequireWildcard(require("./public/Environment"));
|
|
17
17
|
var _IdentifierRegistry = require("./IdentifierRegistry");
|
|
18
|
+
var _EnvironmentManager = require("./EnvironmentManager");
|
|
18
19
|
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
20
|
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
21
|
const DEFAULT_ENGINES = {
|
|
@@ -108,15 +109,15 @@ function createEnvironment({
|
|
|
108
109
|
loc
|
|
109
110
|
};
|
|
110
111
|
res.id = getEnvironmentHash(res);
|
|
111
|
-
return Object.freeze(res);
|
|
112
|
+
return (0, _EnvironmentManager.toEnvironmentRef)(Object.freeze(res));
|
|
112
113
|
}
|
|
113
114
|
function mergeEnvironments(projectRoot, a, b) {
|
|
114
115
|
// If merging the same object, avoid copying.
|
|
115
116
|
if (a === b || !b) {
|
|
116
|
-
return a;
|
|
117
|
+
return (0, _EnvironmentManager.toEnvironmentRef)(a);
|
|
117
118
|
}
|
|
118
119
|
if (b instanceof _Environment.default) {
|
|
119
|
-
return (0, _Environment.environmentToInternalEnvironment)(b);
|
|
120
|
+
return (0, _EnvironmentManager.toEnvironmentRef)((0, _Environment.environmentToInternalEnvironment)(b));
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
// $FlowFixMe - ignore the `id` that is already on a
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fromEnvironmentId = fromEnvironmentId;
|
|
7
|
+
exports.loadEnvironmentsFromCache = loadEnvironmentsFromCache;
|
|
8
|
+
exports.toEnvironmentId = toEnvironmentId;
|
|
9
|
+
exports.toEnvironmentRef = toEnvironmentRef;
|
|
10
|
+
exports.writeEnvironmentsToCache = writeEnvironmentsToCache;
|
|
11
|
+
function _rust() {
|
|
12
|
+
const data = require("@atlaspack/rust");
|
|
13
|
+
_rust = function () {
|
|
14
|
+
return data;
|
|
15
|
+
};
|
|
16
|
+
return data;
|
|
17
|
+
}
|
|
18
|
+
function _featureFlags() {
|
|
19
|
+
const data = require("@atlaspack/feature-flags");
|
|
20
|
+
_featureFlags = function () {
|
|
21
|
+
return data;
|
|
22
|
+
};
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
function _logger() {
|
|
26
|
+
const data = require("@atlaspack/logger");
|
|
27
|
+
_logger = function () {
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
var _constants = require("./constants");
|
|
33
|
+
/*!
|
|
34
|
+
* At the moment we're doing this change for `CoreEnvironment`,
|
|
35
|
+
* but the same change must be made for `TypesEnvironment` in @atlaspack/types.
|
|
36
|
+
*/
|
|
37
|
+
const localEnvironmentCache = new Map();
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* When deduplication is cleaned-up this will always be a string.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Convert environment to a ref.
|
|
45
|
+
* This is what we should be using to store environments.
|
|
46
|
+
*/
|
|
47
|
+
function toEnvironmentRef(env) {
|
|
48
|
+
if (!(0, _featureFlags().getFeatureFlag)('environmentDeduplication')) {
|
|
49
|
+
return env;
|
|
50
|
+
}
|
|
51
|
+
const id = toEnvironmentId(env);
|
|
52
|
+
return id;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Convert environment to a string ID
|
|
57
|
+
*/
|
|
58
|
+
function toEnvironmentId(
|
|
59
|
+
/**
|
|
60
|
+
* Redundant type during roll-out
|
|
61
|
+
*/
|
|
62
|
+
env) {
|
|
63
|
+
if (!(0, _featureFlags().getFeatureFlag)('environmentDeduplication')) {
|
|
64
|
+
return typeof env === 'string' ? env : env.id;
|
|
65
|
+
}
|
|
66
|
+
if (typeof env === 'string') {
|
|
67
|
+
return env;
|
|
68
|
+
}
|
|
69
|
+
(0, _rust().addEnvironment)(env);
|
|
70
|
+
return env.id;
|
|
71
|
+
}
|
|
72
|
+
function fromEnvironmentId(id) {
|
|
73
|
+
if (!(0, _featureFlags().getFeatureFlag)('environmentDeduplication')) {
|
|
74
|
+
if (typeof id === 'string') {
|
|
75
|
+
throw new Error('This should never happen when environmentDeduplication feature-flag is off');
|
|
76
|
+
} else {
|
|
77
|
+
return id;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (typeof id !== 'string') {
|
|
81
|
+
return id;
|
|
82
|
+
}
|
|
83
|
+
const localEnv = localEnvironmentCache.get(id);
|
|
84
|
+
if (localEnv) {
|
|
85
|
+
return localEnv;
|
|
86
|
+
}
|
|
87
|
+
const env = Object.freeze((0, _rust().getEnvironment)(id));
|
|
88
|
+
localEnvironmentCache.set(id, env);
|
|
89
|
+
return env;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Writes all environments and their IDs to the cache
|
|
94
|
+
* @param {Cache} cache
|
|
95
|
+
* @returns {Promise<void>}
|
|
96
|
+
*/
|
|
97
|
+
async function writeEnvironmentsToCache(cache) {
|
|
98
|
+
const environments = (0, _rust().getAllEnvironments)();
|
|
99
|
+
const environmentIds = new Set();
|
|
100
|
+
|
|
101
|
+
// Store each environment individually
|
|
102
|
+
for (const env of environments) {
|
|
103
|
+
environmentIds.add(env.id);
|
|
104
|
+
const envKey = `Environment/${_constants.ATLASPACK_VERSION}/${env.id}`;
|
|
105
|
+
await (0, _logger().instrument)(`RequestTracker::writeToCache::cache.put(${envKey})`, async () => {
|
|
106
|
+
await cache.set(envKey, env);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Store the list of environment IDs
|
|
111
|
+
await (0, _logger().instrument)(`RequestTracker::writeToCache::cache.put(${`EnvironmentManager/${_constants.ATLASPACK_VERSION}`})`, async () => {
|
|
112
|
+
await cache.set(`EnvironmentManager/${_constants.ATLASPACK_VERSION}`, Array.from(environmentIds));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Loads all environments and their IDs from the cache
|
|
118
|
+
* @param {Cache} cache
|
|
119
|
+
* @returns {Promise<void>}
|
|
120
|
+
*/
|
|
121
|
+
async function loadEnvironmentsFromCache(cache) {
|
|
122
|
+
const cachedEnvIds = await cache.get(`EnvironmentManager/${_constants.ATLASPACK_VERSION}`);
|
|
123
|
+
if (cachedEnvIds == null) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const environments = [];
|
|
127
|
+
for (const envId of cachedEnvIds) {
|
|
128
|
+
const envKey = `Environment/${_constants.ATLASPACK_VERSION}/${envId}`;
|
|
129
|
+
const cachedEnv = await cache.get(envKey);
|
|
130
|
+
if (cachedEnv != null) {
|
|
131
|
+
environments.push(cachedEnv);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (environments.length > 0) {
|
|
135
|
+
(0, _rust().setAllEnvironments)(environments);
|
|
136
|
+
}
|
|
137
|
+
}
|
package/lib/InternalConfig.js
CHANGED
|
@@ -14,6 +14,7 @@ function _rust() {
|
|
|
14
14
|
return data;
|
|
15
15
|
}
|
|
16
16
|
var _IdentifierRegistry = require("./IdentifierRegistry");
|
|
17
|
+
var _EnvironmentManager = require("./EnvironmentManager");
|
|
17
18
|
function createConfig({
|
|
18
19
|
plugin,
|
|
19
20
|
isSource,
|
|
@@ -30,11 +31,11 @@ function createConfig({
|
|
|
30
31
|
invalidateOnBuild
|
|
31
32
|
}) {
|
|
32
33
|
let environment = env ?? (0, _Environment.createEnvironment)();
|
|
33
|
-
const configId = (0, _rust().hashString)(plugin + (0, _projectPath.fromProjectPathRelative)(searchPath) + environment
|
|
34
|
+
const configId = (0, _rust().hashString)(plugin + (0, _projectPath.fromProjectPathRelative)(searchPath) + (0, _EnvironmentManager.toEnvironmentId)(environment) + String(isSource));
|
|
34
35
|
_IdentifierRegistry.identifierRegistry.addIdentifier('config_request', configId, {
|
|
35
36
|
plugin,
|
|
36
37
|
searchPath,
|
|
37
|
-
environmentId: environment
|
|
38
|
+
environmentId: (0, _EnvironmentManager.toEnvironmentId)(environment),
|
|
38
39
|
isSource
|
|
39
40
|
});
|
|
40
41
|
return {
|
package/lib/PackagerRunner.js
CHANGED
|
@@ -92,6 +92,14 @@ function _profiler() {
|
|
|
92
92
|
};
|
|
93
93
|
return data;
|
|
94
94
|
}
|
|
95
|
+
var _EnvironmentManager = require("./EnvironmentManager");
|
|
96
|
+
function _featureFlags() {
|
|
97
|
+
const data = require("@atlaspack/feature-flags");
|
|
98
|
+
_featureFlags = function () {
|
|
99
|
+
return data;
|
|
100
|
+
};
|
|
101
|
+
return data;
|
|
102
|
+
}
|
|
95
103
|
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); }
|
|
96
104
|
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; }
|
|
97
105
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -390,15 +398,17 @@ class PackagerRunner {
|
|
|
390
398
|
let fullPath = (0, _projectPath.fromProjectPath)(this.options.projectRoot, filePath);
|
|
391
399
|
let sourceRoot = _path().default.relative(_path().default.dirname(fullPath), this.options.projectRoot);
|
|
392
400
|
let inlineSources = false;
|
|
401
|
+
const bundleEnv = (0, _EnvironmentManager.fromEnvironmentId)(bundle.env);
|
|
393
402
|
if (bundle.target) {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
403
|
+
const bundleTargetEnv = (0, _EnvironmentManager.fromEnvironmentId)(bundle.target.env);
|
|
404
|
+
if (bundleEnv.sourceMap && bundleEnv.sourceMap.sourceRoot !== undefined) {
|
|
405
|
+
sourceRoot = bundleEnv.sourceMap.sourceRoot;
|
|
406
|
+
} else if (this.options.serveOptions && bundleTargetEnv.context === 'browser') {
|
|
397
407
|
sourceRoot = '/__parcel_source_root';
|
|
398
408
|
}
|
|
399
|
-
if (
|
|
400
|
-
inlineSources =
|
|
401
|
-
} else if (
|
|
409
|
+
if (bundleEnv.sourceMap && bundleEnv.sourceMap.inlineSources !== undefined) {
|
|
410
|
+
inlineSources = bundleEnv.sourceMap.inlineSources;
|
|
411
|
+
} else if (bundleTargetEnv.context !== 'node') {
|
|
402
412
|
// inlining should only happen in production for browser targets by default
|
|
403
413
|
inlineSources = this.options.mode === 'production';
|
|
404
414
|
}
|
|
@@ -407,7 +417,7 @@ class PackagerRunner {
|
|
|
407
417
|
// Set source root to 'atlaspack' so stack traces are clean in Sentry
|
|
408
418
|
sourceRoot = 'atlaspack';
|
|
409
419
|
}
|
|
410
|
-
let isInlineMap =
|
|
420
|
+
let isInlineMap = bundleEnv.sourceMap && bundleEnv.sourceMap.inline;
|
|
411
421
|
let stringified = await map.stringify({
|
|
412
422
|
file: _path().default.basename(fullPath + '.map'),
|
|
413
423
|
// $FlowFixMe
|
|
@@ -438,6 +448,10 @@ class PackagerRunner {
|
|
|
438
448
|
devDepHashes += await this.getDevDepHashes(inlineBundle);
|
|
439
449
|
}
|
|
440
450
|
let invalidationHash = await (0, _assetUtils.getInvalidationHash)(invalidations, this.options);
|
|
451
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
452
|
+
const hash = (0, _rust().hashString)(_constants.ATLASPACK_VERSION + devDepHashes + invalidationHash + bundle.target.publicUrl + bundleGraph.getHash(bundle) + JSON.stringify(configResults) + JSON.stringify(globalInfoResults) + this.options.mode + (this.options.shouldBuildLazily ? 'lazy' : 'eager'));
|
|
453
|
+
return _path().default.join(bundle.displayName ?? bundle.name ?? bundle.id, hash);
|
|
454
|
+
}
|
|
441
455
|
return (0, _rust().hashString)(_constants.ATLASPACK_VERSION + devDepHashes + invalidationHash + bundle.target.publicUrl + bundleGraph.getHash(bundle) + JSON.stringify(configResults) + JSON.stringify(globalInfoResults) + this.options.mode + (this.options.shouldBuildLazily ? 'lazy' : 'eager'));
|
|
442
456
|
}
|
|
443
457
|
async getDevDepHashes(bundle) {
|
|
@@ -461,25 +475,27 @@ class PackagerRunner {
|
|
|
461
475
|
let contentKey = PackagerRunner.getContentKey(cacheKey);
|
|
462
476
|
let mapKey = PackagerRunner.getMapKey(cacheKey);
|
|
463
477
|
let isLargeBlob = await this.options.cache.hasLargeBlob(contentKey);
|
|
464
|
-
let contentExists = isLargeBlob || (await this.options.cache.has(contentKey));
|
|
478
|
+
let contentExists = (0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements') ? isLargeBlob : isLargeBlob || (await this.options.cache.has(contentKey));
|
|
465
479
|
if (!contentExists) {
|
|
466
480
|
return null;
|
|
467
481
|
}
|
|
468
|
-
let mapExists = await this.options.cache.has(mapKey);
|
|
482
|
+
let mapExists = (0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements') ? await this.options.cache.hasLargeBlob(mapKey) : await this.options.cache.has(mapKey);
|
|
469
483
|
return {
|
|
470
484
|
contents: isLargeBlob ? this.options.cache.getStream(contentKey) : (0, _utils().blobToStream)(await this.options.cache.getBlob(contentKey)),
|
|
471
|
-
map: mapExists ? (0, _utils().blobToStream)(await this.options.cache.getBlob(mapKey)) : null
|
|
485
|
+
map: mapExists ? (0, _utils().blobToStream)((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements') ? await this.options.cache.getLargeBlob(mapKey) : await this.options.cache.getBlob(mapKey)) : null
|
|
472
486
|
};
|
|
473
487
|
}
|
|
474
488
|
async writeToCache(cacheKeys, type, contents, map) {
|
|
475
489
|
let size = 0;
|
|
476
490
|
let hash;
|
|
477
491
|
let hashReferences = [];
|
|
478
|
-
let isLargeBlob =
|
|
492
|
+
let isLargeBlob = (0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements');
|
|
479
493
|
|
|
480
494
|
// TODO: don't replace hash references in binary files??
|
|
481
495
|
if (contents instanceof _stream().Readable) {
|
|
482
|
-
|
|
496
|
+
if (!(0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
497
|
+
isLargeBlob = true;
|
|
498
|
+
}
|
|
483
499
|
let boundaryStr = '';
|
|
484
500
|
let h = new (_rust().Hash)();
|
|
485
501
|
await this.options.cache.setStream(cacheKeys.content, (0, _utils().blobToStream)(contents).pipe(new (_utils().TapStream)(buf => {
|
|
@@ -495,15 +511,27 @@ class PackagerRunner {
|
|
|
495
511
|
size = buffer.byteLength;
|
|
496
512
|
hash = (0, _rust().hashBuffer)(buffer);
|
|
497
513
|
hashReferences = contents.match(_constants.HASH_REF_REGEX) ?? [];
|
|
498
|
-
|
|
514
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
515
|
+
await this.options.cache.setLargeBlob(cacheKeys.content, buffer);
|
|
516
|
+
} else {
|
|
517
|
+
await this.options.cache.setBlob(cacheKeys.content, buffer);
|
|
518
|
+
}
|
|
499
519
|
} else {
|
|
500
520
|
size = contents.length;
|
|
501
521
|
hash = (0, _rust().hashBuffer)(contents);
|
|
502
522
|
hashReferences = contents.toString().match(_constants.HASH_REF_REGEX) ?? [];
|
|
503
|
-
|
|
523
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
524
|
+
await this.options.cache.setLargeBlob(cacheKeys.content, contents);
|
|
525
|
+
} else {
|
|
526
|
+
await this.options.cache.setBlob(cacheKeys.content, contents);
|
|
527
|
+
}
|
|
504
528
|
}
|
|
505
529
|
if (map != null) {
|
|
506
|
-
|
|
530
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
531
|
+
await this.options.cache.setLargeBlob(cacheKeys.map, map);
|
|
532
|
+
} else {
|
|
533
|
+
await this.options.cache.setBlob(cacheKeys.map, map);
|
|
534
|
+
}
|
|
507
535
|
}
|
|
508
536
|
let info = {
|
|
509
537
|
type,
|
|
@@ -517,12 +545,21 @@ class PackagerRunner {
|
|
|
517
545
|
return info;
|
|
518
546
|
}
|
|
519
547
|
static getContentKey(cacheKey) {
|
|
548
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
549
|
+
return `PackagerRunner/${_constants.ATLASPACK_VERSION}/${cacheKey}/content`;
|
|
550
|
+
}
|
|
520
551
|
return (0, _rust().hashString)(`${cacheKey}:content`);
|
|
521
552
|
}
|
|
522
553
|
static getMapKey(cacheKey) {
|
|
554
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
555
|
+
return `PackagerRunner/${_constants.ATLASPACK_VERSION}/${cacheKey}/map`;
|
|
556
|
+
}
|
|
523
557
|
return (0, _rust().hashString)(`${cacheKey}:map`);
|
|
524
558
|
}
|
|
525
559
|
static getInfoKey(cacheKey) {
|
|
560
|
+
if ((0, _featureFlags().getFeatureFlag)('cachePerformanceImprovements')) {
|
|
561
|
+
return `PackagerRunner/${_constants.ATLASPACK_VERSION}/${cacheKey}/info`;
|
|
562
|
+
}
|
|
526
563
|
return (0, _rust().hashString)(`${cacheKey}:info`);
|
|
527
564
|
}
|
|
528
565
|
}
|