@atlaspack/core 2.12.1-canary.3354
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/LICENSE +201 -0
- package/index.d.ts +22 -0
- package/lib/AssetGraph.js +518 -0
- package/lib/Atlaspack.js +587 -0
- package/lib/AtlaspackConfig.js +298 -0
- package/lib/AtlaspackConfig.schema.js +125 -0
- package/lib/BundleGraph.js +1445 -0
- package/lib/CommittedAsset.js +133 -0
- package/lib/Dependency.js +88 -0
- package/lib/Environment.js +128 -0
- package/lib/InternalConfig.js +48 -0
- package/lib/PackagerRunner.js +519 -0
- package/lib/ReporterRunner.js +151 -0
- package/lib/RequestTracker.js +1089 -0
- package/lib/SymbolPropagation.js +625 -0
- package/lib/TargetDescriptor.schema.js +115 -0
- package/lib/Transformation.js +536 -0
- package/lib/UncommittedAsset.js +342 -0
- package/lib/Validation.js +215 -0
- package/lib/applyRuntimes.js +279 -0
- package/lib/assetUtils.js +189 -0
- package/lib/atlaspack-v3/AtlaspackV3.js +74 -0
- package/lib/atlaspack-v3/fs.js +30 -0
- package/lib/atlaspack-v3/index.js +19 -0
- package/lib/atlaspack-v3/jsCallable.js +15 -0
- package/lib/atlaspack-v3/plugins/Resolver.js +12 -0
- package/lib/atlaspack-v3/plugins/index.js +16 -0
- package/lib/atlaspack-v3/worker/index.js +3 -0
- package/lib/atlaspack-v3/worker/worker.js +30 -0
- package/lib/buildCache.js +18 -0
- package/lib/constants.js +21 -0
- package/lib/dumpGraphToGraphViz.js +206 -0
- package/lib/index.js +106 -0
- package/lib/loadAtlaspackPlugin.js +148 -0
- package/lib/loadDotEnv.js +54 -0
- package/lib/projectPath.js +86 -0
- package/lib/public/Asset.js +259 -0
- package/lib/public/Bundle.js +231 -0
- package/lib/public/BundleGraph.js +193 -0
- package/lib/public/BundleGroup.js +44 -0
- package/lib/public/Config.js +202 -0
- package/lib/public/Dependency.js +131 -0
- package/lib/public/Environment.js +244 -0
- package/lib/public/MutableBundleGraph.js +184 -0
- package/lib/public/PluginOptions.js +71 -0
- package/lib/public/Symbols.js +247 -0
- package/lib/public/Target.js +64 -0
- package/lib/registerCoreWithSerializer.js +45 -0
- package/lib/requests/AssetGraphRequest.js +427 -0
- package/lib/requests/AssetGraphRequestRust.js +187 -0
- package/lib/requests/AssetRequest.js +137 -0
- package/lib/requests/AtlaspackBuildRequest.js +78 -0
- package/lib/requests/AtlaspackConfigRequest.js +473 -0
- package/lib/requests/BundleGraphRequest.js +419 -0
- package/lib/requests/ConfigRequest.js +198 -0
- package/lib/requests/DevDepRequest.js +166 -0
- package/lib/requests/EntryRequest.js +295 -0
- package/lib/requests/PackageRequest.js +88 -0
- package/lib/requests/PathRequest.js +349 -0
- package/lib/requests/TargetRequest.js +1177 -0
- package/lib/requests/ValidationRequest.js +66 -0
- package/lib/requests/WriteBundleRequest.js +252 -0
- package/lib/requests/WriteBundlesRequest.js +153 -0
- package/lib/resolveOptions.js +234 -0
- package/lib/serializer.js +216 -0
- package/lib/serializerCore.browser.js +29 -0
- package/lib/serializerCore.js +16 -0
- package/lib/summarizeRequest.js +55 -0
- package/lib/types.js +35 -0
- package/lib/utils.js +160 -0
- package/lib/worker.js +170 -0
- package/package.json +59 -0
- package/src/AssetGraph.js +646 -0
- package/src/Atlaspack.js +632 -0
- package/src/AtlaspackConfig.js +490 -0
- package/src/AtlaspackConfig.schema.js +141 -0
- package/src/BundleGraph.js +2193 -0
- package/src/CommittedAsset.js +143 -0
- package/src/Dependency.js +142 -0
- package/src/Environment.js +151 -0
- package/src/InternalConfig.js +72 -0
- package/src/PackagerRunner.js +790 -0
- package/src/ReporterRunner.js +158 -0
- package/src/RequestTracker.js +1697 -0
- package/src/SymbolPropagation.js +794 -0
- package/src/TargetDescriptor.schema.js +136 -0
- package/src/Transformation.js +752 -0
- package/src/UncommittedAsset.js +426 -0
- package/src/Validation.js +223 -0
- package/src/applyRuntimes.js +341 -0
- package/src/assetUtils.js +254 -0
- package/src/atlaspack-v3/AtlaspackV3.js +73 -0
- package/src/atlaspack-v3/fs.js +36 -0
- package/src/atlaspack-v3/index.js +5 -0
- package/src/atlaspack-v3/jsCallable.js +13 -0
- package/src/atlaspack-v3/plugins/Resolver.js +9 -0
- package/src/atlaspack-v3/plugins/index.js +3 -0
- package/src/atlaspack-v3/worker/index.js +8 -0
- package/src/atlaspack-v3/worker/worker.js +14 -0
- package/src/buildCache.js +15 -0
- package/src/constants.js +22 -0
- package/src/dumpGraphToGraphViz.js +244 -0
- package/src/index.js +22 -0
- package/src/loadAtlaspackPlugin.js +239 -0
- package/src/loadDotEnv.js +56 -0
- package/src/projectPath.js +87 -0
- package/src/public/Asset.js +359 -0
- package/src/public/Bundle.js +337 -0
- package/src/public/BundleGraph.js +335 -0
- package/src/public/BundleGroup.js +55 -0
- package/src/public/Config.js +261 -0
- package/src/public/Dependency.js +176 -0
- package/src/public/Environment.js +316 -0
- package/src/public/MutableBundleGraph.js +320 -0
- package/src/public/PluginOptions.js +99 -0
- package/src/public/Symbols.js +315 -0
- package/src/public/Target.js +71 -0
- package/src/registerCoreWithSerializer.js +34 -0
- package/src/requests/AssetGraphRequest.js +577 -0
- package/src/requests/AssetGraphRequestRust.js +222 -0
- package/src/requests/AssetRequest.js +179 -0
- package/src/requests/AtlaspackBuildRequest.js +109 -0
- package/src/requests/AtlaspackConfigRequest.js +709 -0
- package/src/requests/BundleGraphRequest.js +547 -0
- package/src/requests/ConfigRequest.js +287 -0
- package/src/requests/DevDepRequest.js +246 -0
- package/src/requests/EntryRequest.js +385 -0
- package/src/requests/PackageRequest.js +105 -0
- package/src/requests/PathRequest.js +454 -0
- package/src/requests/TargetRequest.js +1632 -0
- package/src/requests/ValidationRequest.js +79 -0
- package/src/requests/WriteBundleRequest.js +362 -0
- package/src/requests/WriteBundlesRequest.js +209 -0
- package/src/resolveOptions.js +278 -0
- package/src/serializer.js +255 -0
- package/src/serializerCore.browser.js +8 -0
- package/src/serializerCore.js +5 -0
- package/src/summarizeRequest.js +47 -0
- package/src/types.js +581 -0
- package/src/utils.js +211 -0
- package/src/worker.js +189 -0
- package/test/AssetGraph.test.js +679 -0
- package/test/Atlaspack.test.js +142 -0
- package/test/AtlaspackConfig.test.js +405 -0
- package/test/AtlaspackConfigRequest.test.js +993 -0
- package/test/BundleGraph.test.js +121 -0
- package/test/EntryRequest.test.js +215 -0
- package/test/Environment.test.js +99 -0
- package/test/InternalAsset.test.js +76 -0
- package/test/PackagerRunner.test.js +27 -0
- package/test/PublicAsset.test.js +40 -0
- package/test/PublicBundle.test.js +68 -0
- package/test/PublicDependency.test.js +22 -0
- package/test/PublicEnvironment.test.js +27 -0
- package/test/PublicMutableBundleGraph.test.js +192 -0
- package/test/RequestTracker.test.js +448 -0
- package/test/SymbolPropagation.test.js +716 -0
- package/test/TargetRequest.test.js +1715 -0
- package/test/fixtures/application-targets/package.json +3 -0
- package/test/fixtures/atlaspack/index.js +1 -0
- package/test/fixtures/atlaspack/other.js +3 -0
- package/test/fixtures/atlaspack/package.json +1 -0
- package/test/fixtures/atlaspack/yarn.lock +0 -0
- package/test/fixtures/bundle.js +10 -0
- package/test/fixtures/common-targets/package.json +24 -0
- package/test/fixtures/common-targets-ignore/package.json +13 -0
- package/test/fixtures/config/.atlaspackrc +6 -0
- package/test/fixtures/config/subfolder/.atlaspackrc +6 -0
- package/test/fixtures/config-extends-not-found/.atlaspackrc +3 -0
- package/test/fixtures/config-extends-not-found/.atlaspackrc-json5 +3 -0
- package/test/fixtures/config-extends-not-found/.atlaspackrc-multiple +3 -0
- package/test/fixtures/config-extends-not-found/.atlaspackrc-node-modules +3 -0
- package/test/fixtures/config-malformed/.atlaspackrc +3 -0
- package/test/fixtures/config-node-pipeline/.atlaspackrc +6 -0
- package/test/fixtures/config-plugin-not-found/.atlaspackrc +6 -0
- package/test/fixtures/context/package.json +8 -0
- package/test/fixtures/custom-format-infer-ext/package.json +6 -0
- package/test/fixtures/custom-format-infer-type/package.json +7 -0
- package/test/fixtures/custom-format-mismatch/package.json +8 -0
- package/test/fixtures/custom-targets/package.json +20 -0
- package/test/fixtures/custom-targets-distdir/package.json +11 -0
- package/test/fixtures/duplicate-targets/package.json +4 -0
- package/test/fixtures/glob-like/[entry].js +0 -0
- package/test/fixtures/invalid-distpath/package.json +11 -0
- package/test/fixtures/invalid-engines/package.json +12 -0
- package/test/fixtures/invalid-source-missing/package.json +5 -0
- package/test/fixtures/invalid-source-not-file/package.json +5 -0
- package/test/fixtures/invalid-source-not-file/src/index.js +1 -0
- package/test/fixtures/invalid-target-source-missing/package.json +9 -0
- package/test/fixtures/invalid-target-source-not-file/package.json +9 -0
- package/test/fixtures/invalid-target-source-not-file/src/index.js +1 -0
- package/test/fixtures/invalid-targets/package.json +19 -0
- package/test/fixtures/library-custom-scopehoist/package.json +9 -0
- package/test/fixtures/library-scopehoist/package.json +8 -0
- package/test/fixtures/local-plugin-config-pkg/.atlaspackrc +3 -0
- package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/index.json +8 -0
- package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/local-plugin.js +7 -0
- package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/package.json +7 -0
- package/test/fixtures/main-format-mismatch/package.json +8 -0
- package/test/fixtures/main-global/package.json +8 -0
- package/test/fixtures/main-mjs/package.json +8 -0
- package/test/fixtures/module-a.js +1 -0
- package/test/fixtures/module-b.js +1 -0
- package/test/fixtures/plugins/local-plugin.js +7 -0
- package/test/fixtures/plugins/node_modules/atlaspack-transformer-bad-engines/index.js +7 -0
- package/test/fixtures/plugins/node_modules/atlaspack-transformer-bad-engines/package.json +7 -0
- package/test/fixtures/plugins/node_modules/atlaspack-transformer-no-engines/index.js +7 -0
- package/test/fixtures/plugins/node_modules/atlaspack-transformer-no-engines/package.json +4 -0
- package/test/fixtures/targets-default-distdir-none/package.json +5 -0
- package/test/fixtures/targets-default-distdir-one/package.json +8 -0
- package/test/fixtures/targets-default-distdir-two/package.json +18 -0
- package/test/requests/ConfigRequest.test.js +254 -0
- package/test/serializer.test.js +302 -0
- package/test/test-utils.js +80 -0
- package/test/utils.test.js +43 -0
package/src/utils.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// @flow strict-local
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
FilePath,
|
|
5
|
+
FileCreateInvalidation,
|
|
6
|
+
SourceLocation,
|
|
7
|
+
} from '@atlaspack/types';
|
|
8
|
+
import type {
|
|
9
|
+
BundleGroup,
|
|
10
|
+
AtlaspackOptions,
|
|
11
|
+
InternalFileCreateInvalidation,
|
|
12
|
+
InternalSourceLocation,
|
|
13
|
+
InternalDevDepOptions,
|
|
14
|
+
Invalidations,
|
|
15
|
+
} from './types';
|
|
16
|
+
import type {PackageManager} from '@atlaspack/package-manager';
|
|
17
|
+
|
|
18
|
+
import invariant from 'assert';
|
|
19
|
+
import baseX from 'base-x';
|
|
20
|
+
import {hashObject} from '@atlaspack/utils';
|
|
21
|
+
import {fromProjectPath, toProjectPath} from './projectPath';
|
|
22
|
+
|
|
23
|
+
const base62 = baseX(
|
|
24
|
+
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export function getBundleGroupId(bundleGroup: BundleGroup): string {
|
|
28
|
+
return 'bundle_group:' + bundleGroup.target.name + bundleGroup.entryAssetId;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function assertSignalNotAborted(signal: ?AbortSignal): void {
|
|
32
|
+
if (signal && signal.aborted) {
|
|
33
|
+
throw new BuildAbortError();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class BuildAbortError extends Error {
|
|
38
|
+
name: string = 'BuildAbortError';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function getPublicId(
|
|
42
|
+
id: string,
|
|
43
|
+
alreadyExists: string => boolean,
|
|
44
|
+
): string {
|
|
45
|
+
let encoded = base62.encode(Buffer.from(id, 'hex'));
|
|
46
|
+
for (let end = 5; end <= encoded.length; end++) {
|
|
47
|
+
let candidate = encoded.slice(0, end);
|
|
48
|
+
if (!alreadyExists(candidate)) {
|
|
49
|
+
return candidate;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
throw new Error('Original id was not unique');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// These options don't affect compilation and should cause invalidations
|
|
57
|
+
const ignoreOptions = new Set([
|
|
58
|
+
'env', // handled by separate invalidateOnEnvChange
|
|
59
|
+
'inputFS',
|
|
60
|
+
'outputFS',
|
|
61
|
+
'workerFarm',
|
|
62
|
+
'packageManager',
|
|
63
|
+
'detailedReport',
|
|
64
|
+
'shouldDisableCache',
|
|
65
|
+
'cacheDir',
|
|
66
|
+
'shouldAutoInstall',
|
|
67
|
+
'logLevel',
|
|
68
|
+
'shouldProfile',
|
|
69
|
+
'shouldTrace',
|
|
70
|
+
'shouldPatchConsole',
|
|
71
|
+
'projectRoot',
|
|
72
|
+
'additionalReporters',
|
|
73
|
+
]);
|
|
74
|
+
|
|
75
|
+
export function optionsProxy(
|
|
76
|
+
options: AtlaspackOptions,
|
|
77
|
+
invalidateOnOptionChange: string => void,
|
|
78
|
+
addDevDependency?: (devDep: InternalDevDepOptions) => void,
|
|
79
|
+
): AtlaspackOptions {
|
|
80
|
+
let packageManager = addDevDependency
|
|
81
|
+
? proxyPackageManager(
|
|
82
|
+
options.projectRoot,
|
|
83
|
+
options.packageManager,
|
|
84
|
+
addDevDependency,
|
|
85
|
+
)
|
|
86
|
+
: options.packageManager;
|
|
87
|
+
return new Proxy(options, {
|
|
88
|
+
get(target, prop) {
|
|
89
|
+
if (prop === 'packageManager') {
|
|
90
|
+
return packageManager;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (!ignoreOptions.has(prop)) {
|
|
94
|
+
invalidateOnOptionChange(prop);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return target[prop];
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function proxyPackageManager(
|
|
103
|
+
projectRoot: FilePath,
|
|
104
|
+
packageManager: PackageManager,
|
|
105
|
+
addDevDependency: (devDep: InternalDevDepOptions) => void,
|
|
106
|
+
): PackageManager {
|
|
107
|
+
let require = (id: string, from: string, opts) => {
|
|
108
|
+
addDevDependency({
|
|
109
|
+
specifier: id,
|
|
110
|
+
resolveFrom: toProjectPath(projectRoot, from),
|
|
111
|
+
range: opts?.range,
|
|
112
|
+
});
|
|
113
|
+
return packageManager.require(id, from, opts);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
return new Proxy(packageManager, {
|
|
117
|
+
get(target, prop) {
|
|
118
|
+
if (prop === 'require') {
|
|
119
|
+
return require;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// $FlowFixMe
|
|
123
|
+
return target[prop];
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function hashFromOption(value: mixed): string {
|
|
129
|
+
if (typeof value === 'object' && value != null) {
|
|
130
|
+
return hashObject(value);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return String(value);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function invalidateOnFileCreateToInternal(
|
|
137
|
+
projectRoot: FilePath,
|
|
138
|
+
invalidation: FileCreateInvalidation,
|
|
139
|
+
): InternalFileCreateInvalidation {
|
|
140
|
+
if (invalidation.glob != null) {
|
|
141
|
+
return {glob: toProjectPath(projectRoot, invalidation.glob)};
|
|
142
|
+
} else if (invalidation.filePath != null) {
|
|
143
|
+
return {
|
|
144
|
+
filePath: toProjectPath(projectRoot, invalidation.filePath),
|
|
145
|
+
};
|
|
146
|
+
} else {
|
|
147
|
+
invariant(
|
|
148
|
+
invalidation.aboveFilePath != null && invalidation.fileName != null,
|
|
149
|
+
);
|
|
150
|
+
return {
|
|
151
|
+
fileName: invalidation.fileName,
|
|
152
|
+
aboveFilePath: toProjectPath(projectRoot, invalidation.aboveFilePath),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export function createInvalidations(): Invalidations {
|
|
158
|
+
return {
|
|
159
|
+
invalidateOnBuild: false,
|
|
160
|
+
invalidateOnStartup: false,
|
|
161
|
+
invalidateOnOptionChange: new Set(),
|
|
162
|
+
invalidateOnEnvChange: new Set(),
|
|
163
|
+
invalidateOnFileChange: new Set(),
|
|
164
|
+
invalidateOnFileCreate: [],
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function fromInternalSourceLocation(
|
|
169
|
+
projectRoot: FilePath,
|
|
170
|
+
loc: ?InternalSourceLocation,
|
|
171
|
+
): ?SourceLocation {
|
|
172
|
+
if (!loc) return loc;
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
filePath: fromProjectPath(projectRoot, loc.filePath),
|
|
176
|
+
start: loc.start,
|
|
177
|
+
end: loc.end,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export function toInternalSourceLocation(
|
|
182
|
+
projectRoot: FilePath,
|
|
183
|
+
loc: ?SourceLocation,
|
|
184
|
+
): ?InternalSourceLocation {
|
|
185
|
+
if (!loc) return loc;
|
|
186
|
+
|
|
187
|
+
return {
|
|
188
|
+
filePath: toProjectPath(projectRoot, loc.filePath),
|
|
189
|
+
start: loc.start,
|
|
190
|
+
end: loc.end,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export function toInternalSymbols<T: {|loc: ?SourceLocation|}>(
|
|
194
|
+
projectRoot: FilePath,
|
|
195
|
+
symbols: ?Map<Symbol, T>,
|
|
196
|
+
): ?Map<
|
|
197
|
+
Symbol,
|
|
198
|
+
{|loc: ?InternalSourceLocation, ...$Rest<T, {|loc: ?SourceLocation|}>|},
|
|
199
|
+
> {
|
|
200
|
+
if (!symbols) return symbols;
|
|
201
|
+
|
|
202
|
+
return new Map(
|
|
203
|
+
[...symbols].map(([k, {loc, ...v}]) => [
|
|
204
|
+
k,
|
|
205
|
+
{
|
|
206
|
+
...v,
|
|
207
|
+
loc: toInternalSourceLocation(projectRoot, loc),
|
|
208
|
+
},
|
|
209
|
+
]),
|
|
210
|
+
);
|
|
211
|
+
}
|
package/src/worker.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// @flow strict-local
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
Bundle,
|
|
5
|
+
AtlaspackOptions,
|
|
6
|
+
ProcessedAtlaspackConfig,
|
|
7
|
+
RequestInvalidation,
|
|
8
|
+
} from './types';
|
|
9
|
+
import type {SharedReference, WorkerApi} from '@atlaspack/workers';
|
|
10
|
+
import {loadConfig as configCache} from '@atlaspack/utils';
|
|
11
|
+
import type {DevDepSpecifier} from './requests/DevDepRequest';
|
|
12
|
+
|
|
13
|
+
import invariant from 'assert';
|
|
14
|
+
import nullthrows from 'nullthrows';
|
|
15
|
+
import BundleGraph from './BundleGraph';
|
|
16
|
+
import Transformation, {
|
|
17
|
+
type TransformationOpts,
|
|
18
|
+
type TransformationResult,
|
|
19
|
+
} from './Transformation';
|
|
20
|
+
import {reportWorker, report} from './ReporterRunner';
|
|
21
|
+
import PackagerRunner, {type RunPackagerRunnerResult} from './PackagerRunner';
|
|
22
|
+
import Validation, {type ValidationOpts} from './Validation';
|
|
23
|
+
import AtlaspackConfig from './AtlaspackConfig';
|
|
24
|
+
import {registerCoreWithSerializer} from './registerCoreWithSerializer';
|
|
25
|
+
import {clearBuildCaches} from './buildCache';
|
|
26
|
+
import {init as initSourcemaps} from '@parcel/source-map';
|
|
27
|
+
import {init as initRust} from '@atlaspack/rust';
|
|
28
|
+
import WorkerFarm from '@atlaspack/workers';
|
|
29
|
+
import {setFeatureFlags} from '@atlaspack/feature-flags';
|
|
30
|
+
|
|
31
|
+
import '@atlaspack/cache'; // register with serializer
|
|
32
|
+
import '@atlaspack/package-manager';
|
|
33
|
+
import '@atlaspack/fs';
|
|
34
|
+
|
|
35
|
+
// $FlowFixMe
|
|
36
|
+
if (process.env.ATLASPACK_BUILD_REPL && process.browser) {
|
|
37
|
+
/* eslint-disable import/no-extraneous-dependencies, monorepo/no-internal-import */
|
|
38
|
+
require('@atlaspack/repl/src/atlaspack/BrowserPackageManager.js');
|
|
39
|
+
// $FlowFixMe
|
|
40
|
+
require('@atlaspack/repl/src/atlaspack/ExtendedMemoryFS.js');
|
|
41
|
+
/* eslint-enable import/no-extraneous-dependencies, monorepo/no-internal-import */
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
registerCoreWithSerializer();
|
|
45
|
+
|
|
46
|
+
// Remove the workerApi type from the TransformationOpts and ValidationOpts types:
|
|
47
|
+
// https://github.com/facebook/flow/issues/2835
|
|
48
|
+
type WorkerTransformationOpts = {|
|
|
49
|
+
...$Diff<TransformationOpts, {|workerApi: mixed, options: AtlaspackOptions|}>,
|
|
50
|
+
optionsRef: SharedReference,
|
|
51
|
+
configCachePath: string,
|
|
52
|
+
|};
|
|
53
|
+
type WorkerValidationOpts = {|
|
|
54
|
+
...$Diff<ValidationOpts, {|workerApi: mixed, options: AtlaspackOptions|}>,
|
|
55
|
+
optionsRef: SharedReference,
|
|
56
|
+
configCachePath: string,
|
|
57
|
+
|};
|
|
58
|
+
|
|
59
|
+
// TODO: this should eventually be replaced by an in memory cache layer
|
|
60
|
+
let atlaspackConfigCache = new Map();
|
|
61
|
+
|
|
62
|
+
function loadOptions(ref, workerApi) {
|
|
63
|
+
return nullthrows(
|
|
64
|
+
((workerApi.getSharedReference(
|
|
65
|
+
ref,
|
|
66
|
+
// $FlowFixMe
|
|
67
|
+
): any): AtlaspackOptions),
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async function loadConfig(cachePath, options) {
|
|
72
|
+
let config = atlaspackConfigCache.get(cachePath);
|
|
73
|
+
if (config && config.options === options) {
|
|
74
|
+
return config;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let processedConfig = nullthrows(
|
|
78
|
+
await options.cache.get<ProcessedAtlaspackConfig>(cachePath),
|
|
79
|
+
);
|
|
80
|
+
config = new AtlaspackConfig(processedConfig, options);
|
|
81
|
+
atlaspackConfigCache.set(cachePath, config);
|
|
82
|
+
|
|
83
|
+
setFeatureFlags(options.featureFlags);
|
|
84
|
+
|
|
85
|
+
return config;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function clearConfigCache() {
|
|
89
|
+
configCache.clear();
|
|
90
|
+
clearBuildCaches();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export async function runTransform(
|
|
94
|
+
workerApi: WorkerApi,
|
|
95
|
+
opts: WorkerTransformationOpts,
|
|
96
|
+
): Promise<TransformationResult> {
|
|
97
|
+
let {optionsRef, configCachePath, ...rest} = opts;
|
|
98
|
+
let options = loadOptions(optionsRef, workerApi);
|
|
99
|
+
let config = await loadConfig(configCachePath, options);
|
|
100
|
+
|
|
101
|
+
return new Transformation({
|
|
102
|
+
workerApi,
|
|
103
|
+
options,
|
|
104
|
+
config,
|
|
105
|
+
...rest,
|
|
106
|
+
}).run();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export async function runValidate(
|
|
110
|
+
workerApi: WorkerApi,
|
|
111
|
+
opts: WorkerValidationOpts,
|
|
112
|
+
): Promise<void> {
|
|
113
|
+
let {optionsRef, configCachePath, ...rest} = opts;
|
|
114
|
+
let options = loadOptions(optionsRef, workerApi);
|
|
115
|
+
let config = await loadConfig(configCachePath, options);
|
|
116
|
+
|
|
117
|
+
return new Validation({
|
|
118
|
+
workerApi,
|
|
119
|
+
report: reportWorker.bind(null, workerApi),
|
|
120
|
+
options,
|
|
121
|
+
config,
|
|
122
|
+
...rest,
|
|
123
|
+
}).run();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export async function runPackage(
|
|
127
|
+
workerApi: WorkerApi,
|
|
128
|
+
{
|
|
129
|
+
bundle,
|
|
130
|
+
bundleGraphReference,
|
|
131
|
+
configCachePath,
|
|
132
|
+
optionsRef,
|
|
133
|
+
previousDevDeps,
|
|
134
|
+
invalidDevDeps,
|
|
135
|
+
previousInvalidations,
|
|
136
|
+
}: {|
|
|
137
|
+
bundle: Bundle,
|
|
138
|
+
bundleGraphReference: SharedReference,
|
|
139
|
+
configCachePath: string,
|
|
140
|
+
optionsRef: SharedReference,
|
|
141
|
+
previousDevDeps: Map<string, string>,
|
|
142
|
+
invalidDevDeps: Array<DevDepSpecifier>,
|
|
143
|
+
previousInvalidations: Array<RequestInvalidation>,
|
|
144
|
+
|},
|
|
145
|
+
): Promise<RunPackagerRunnerResult> {
|
|
146
|
+
let bundleGraph = workerApi.getSharedReference(bundleGraphReference);
|
|
147
|
+
invariant(bundleGraph instanceof BundleGraph);
|
|
148
|
+
let options = loadOptions(optionsRef, workerApi);
|
|
149
|
+
let atlaspackConfig = await loadConfig(configCachePath, options);
|
|
150
|
+
|
|
151
|
+
let runner = new PackagerRunner({
|
|
152
|
+
config: atlaspackConfig,
|
|
153
|
+
options,
|
|
154
|
+
report: WorkerFarm.isWorker() ? reportWorker.bind(null, workerApi) : report,
|
|
155
|
+
previousDevDeps,
|
|
156
|
+
previousInvalidations,
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
return runner.run(bundleGraph, bundle, invalidDevDeps);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export async function childInit() {
|
|
163
|
+
await initSourcemaps;
|
|
164
|
+
await initRust?.();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const PKG_RE =
|
|
168
|
+
/node_modules[/\\]((?:@[^/\\]+[/\\][^/\\]+)|[^/\\]+)(?!.*[/\\]node_modules[/\\])/;
|
|
169
|
+
export function invalidateRequireCache(workerApi: WorkerApi, file: string) {
|
|
170
|
+
if (process.env.ATLASPACK_BUILD_ENV === 'test') {
|
|
171
|
+
// Delete this module and all children in the same node_modules folder
|
|
172
|
+
let module = require.cache[file];
|
|
173
|
+
if (module) {
|
|
174
|
+
delete require.cache[file];
|
|
175
|
+
|
|
176
|
+
let pkg = file.match(PKG_RE)?.[1];
|
|
177
|
+
for (let child of module.children) {
|
|
178
|
+
if (pkg === child.id.match(PKG_RE)?.[1]) {
|
|
179
|
+
invalidateRequireCache(workerApi, child.id);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
atlaspackConfigCache.clear();
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
throw new Error('invalidateRequireCache is only for tests');
|
|
189
|
+
}
|