@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.
Files changed (215) hide show
  1. package/LICENSE +201 -0
  2. package/index.d.ts +22 -0
  3. package/lib/AssetGraph.js +518 -0
  4. package/lib/Atlaspack.js +587 -0
  5. package/lib/AtlaspackConfig.js +298 -0
  6. package/lib/AtlaspackConfig.schema.js +125 -0
  7. package/lib/BundleGraph.js +1445 -0
  8. package/lib/CommittedAsset.js +133 -0
  9. package/lib/Dependency.js +88 -0
  10. package/lib/Environment.js +128 -0
  11. package/lib/InternalConfig.js +48 -0
  12. package/lib/PackagerRunner.js +519 -0
  13. package/lib/ReporterRunner.js +151 -0
  14. package/lib/RequestTracker.js +1089 -0
  15. package/lib/SymbolPropagation.js +625 -0
  16. package/lib/TargetDescriptor.schema.js +115 -0
  17. package/lib/Transformation.js +536 -0
  18. package/lib/UncommittedAsset.js +342 -0
  19. package/lib/Validation.js +215 -0
  20. package/lib/applyRuntimes.js +279 -0
  21. package/lib/assetUtils.js +189 -0
  22. package/lib/atlaspack-v3/AtlaspackV3.js +74 -0
  23. package/lib/atlaspack-v3/fs.js +30 -0
  24. package/lib/atlaspack-v3/index.js +19 -0
  25. package/lib/atlaspack-v3/jsCallable.js +15 -0
  26. package/lib/atlaspack-v3/plugins/Resolver.js +12 -0
  27. package/lib/atlaspack-v3/plugins/index.js +16 -0
  28. package/lib/atlaspack-v3/worker/index.js +3 -0
  29. package/lib/atlaspack-v3/worker/worker.js +30 -0
  30. package/lib/buildCache.js +18 -0
  31. package/lib/constants.js +21 -0
  32. package/lib/dumpGraphToGraphViz.js +206 -0
  33. package/lib/index.js +106 -0
  34. package/lib/loadAtlaspackPlugin.js +148 -0
  35. package/lib/loadDotEnv.js +54 -0
  36. package/lib/projectPath.js +86 -0
  37. package/lib/public/Asset.js +259 -0
  38. package/lib/public/Bundle.js +231 -0
  39. package/lib/public/BundleGraph.js +193 -0
  40. package/lib/public/BundleGroup.js +44 -0
  41. package/lib/public/Config.js +202 -0
  42. package/lib/public/Dependency.js +131 -0
  43. package/lib/public/Environment.js +244 -0
  44. package/lib/public/MutableBundleGraph.js +184 -0
  45. package/lib/public/PluginOptions.js +71 -0
  46. package/lib/public/Symbols.js +247 -0
  47. package/lib/public/Target.js +64 -0
  48. package/lib/registerCoreWithSerializer.js +45 -0
  49. package/lib/requests/AssetGraphRequest.js +427 -0
  50. package/lib/requests/AssetGraphRequestRust.js +187 -0
  51. package/lib/requests/AssetRequest.js +137 -0
  52. package/lib/requests/AtlaspackBuildRequest.js +78 -0
  53. package/lib/requests/AtlaspackConfigRequest.js +473 -0
  54. package/lib/requests/BundleGraphRequest.js +419 -0
  55. package/lib/requests/ConfigRequest.js +198 -0
  56. package/lib/requests/DevDepRequest.js +166 -0
  57. package/lib/requests/EntryRequest.js +295 -0
  58. package/lib/requests/PackageRequest.js +88 -0
  59. package/lib/requests/PathRequest.js +349 -0
  60. package/lib/requests/TargetRequest.js +1177 -0
  61. package/lib/requests/ValidationRequest.js +66 -0
  62. package/lib/requests/WriteBundleRequest.js +252 -0
  63. package/lib/requests/WriteBundlesRequest.js +153 -0
  64. package/lib/resolveOptions.js +234 -0
  65. package/lib/serializer.js +216 -0
  66. package/lib/serializerCore.browser.js +29 -0
  67. package/lib/serializerCore.js +16 -0
  68. package/lib/summarizeRequest.js +55 -0
  69. package/lib/types.js +35 -0
  70. package/lib/utils.js +160 -0
  71. package/lib/worker.js +170 -0
  72. package/package.json +59 -0
  73. package/src/AssetGraph.js +646 -0
  74. package/src/Atlaspack.js +632 -0
  75. package/src/AtlaspackConfig.js +490 -0
  76. package/src/AtlaspackConfig.schema.js +141 -0
  77. package/src/BundleGraph.js +2193 -0
  78. package/src/CommittedAsset.js +143 -0
  79. package/src/Dependency.js +142 -0
  80. package/src/Environment.js +151 -0
  81. package/src/InternalConfig.js +72 -0
  82. package/src/PackagerRunner.js +790 -0
  83. package/src/ReporterRunner.js +158 -0
  84. package/src/RequestTracker.js +1697 -0
  85. package/src/SymbolPropagation.js +794 -0
  86. package/src/TargetDescriptor.schema.js +136 -0
  87. package/src/Transformation.js +752 -0
  88. package/src/UncommittedAsset.js +426 -0
  89. package/src/Validation.js +223 -0
  90. package/src/applyRuntimes.js +341 -0
  91. package/src/assetUtils.js +254 -0
  92. package/src/atlaspack-v3/AtlaspackV3.js +73 -0
  93. package/src/atlaspack-v3/fs.js +36 -0
  94. package/src/atlaspack-v3/index.js +5 -0
  95. package/src/atlaspack-v3/jsCallable.js +13 -0
  96. package/src/atlaspack-v3/plugins/Resolver.js +9 -0
  97. package/src/atlaspack-v3/plugins/index.js +3 -0
  98. package/src/atlaspack-v3/worker/index.js +8 -0
  99. package/src/atlaspack-v3/worker/worker.js +14 -0
  100. package/src/buildCache.js +15 -0
  101. package/src/constants.js +22 -0
  102. package/src/dumpGraphToGraphViz.js +244 -0
  103. package/src/index.js +22 -0
  104. package/src/loadAtlaspackPlugin.js +239 -0
  105. package/src/loadDotEnv.js +56 -0
  106. package/src/projectPath.js +87 -0
  107. package/src/public/Asset.js +359 -0
  108. package/src/public/Bundle.js +337 -0
  109. package/src/public/BundleGraph.js +335 -0
  110. package/src/public/BundleGroup.js +55 -0
  111. package/src/public/Config.js +261 -0
  112. package/src/public/Dependency.js +176 -0
  113. package/src/public/Environment.js +316 -0
  114. package/src/public/MutableBundleGraph.js +320 -0
  115. package/src/public/PluginOptions.js +99 -0
  116. package/src/public/Symbols.js +315 -0
  117. package/src/public/Target.js +71 -0
  118. package/src/registerCoreWithSerializer.js +34 -0
  119. package/src/requests/AssetGraphRequest.js +577 -0
  120. package/src/requests/AssetGraphRequestRust.js +222 -0
  121. package/src/requests/AssetRequest.js +179 -0
  122. package/src/requests/AtlaspackBuildRequest.js +109 -0
  123. package/src/requests/AtlaspackConfigRequest.js +709 -0
  124. package/src/requests/BundleGraphRequest.js +547 -0
  125. package/src/requests/ConfigRequest.js +287 -0
  126. package/src/requests/DevDepRequest.js +246 -0
  127. package/src/requests/EntryRequest.js +385 -0
  128. package/src/requests/PackageRequest.js +105 -0
  129. package/src/requests/PathRequest.js +454 -0
  130. package/src/requests/TargetRequest.js +1632 -0
  131. package/src/requests/ValidationRequest.js +79 -0
  132. package/src/requests/WriteBundleRequest.js +362 -0
  133. package/src/requests/WriteBundlesRequest.js +209 -0
  134. package/src/resolveOptions.js +278 -0
  135. package/src/serializer.js +255 -0
  136. package/src/serializerCore.browser.js +8 -0
  137. package/src/serializerCore.js +5 -0
  138. package/src/summarizeRequest.js +47 -0
  139. package/src/types.js +581 -0
  140. package/src/utils.js +211 -0
  141. package/src/worker.js +189 -0
  142. package/test/AssetGraph.test.js +679 -0
  143. package/test/Atlaspack.test.js +142 -0
  144. package/test/AtlaspackConfig.test.js +405 -0
  145. package/test/AtlaspackConfigRequest.test.js +993 -0
  146. package/test/BundleGraph.test.js +121 -0
  147. package/test/EntryRequest.test.js +215 -0
  148. package/test/Environment.test.js +99 -0
  149. package/test/InternalAsset.test.js +76 -0
  150. package/test/PackagerRunner.test.js +27 -0
  151. package/test/PublicAsset.test.js +40 -0
  152. package/test/PublicBundle.test.js +68 -0
  153. package/test/PublicDependency.test.js +22 -0
  154. package/test/PublicEnvironment.test.js +27 -0
  155. package/test/PublicMutableBundleGraph.test.js +192 -0
  156. package/test/RequestTracker.test.js +448 -0
  157. package/test/SymbolPropagation.test.js +716 -0
  158. package/test/TargetRequest.test.js +1715 -0
  159. package/test/fixtures/application-targets/package.json +3 -0
  160. package/test/fixtures/atlaspack/index.js +1 -0
  161. package/test/fixtures/atlaspack/other.js +3 -0
  162. package/test/fixtures/atlaspack/package.json +1 -0
  163. package/test/fixtures/atlaspack/yarn.lock +0 -0
  164. package/test/fixtures/bundle.js +10 -0
  165. package/test/fixtures/common-targets/package.json +24 -0
  166. package/test/fixtures/common-targets-ignore/package.json +13 -0
  167. package/test/fixtures/config/.atlaspackrc +6 -0
  168. package/test/fixtures/config/subfolder/.atlaspackrc +6 -0
  169. package/test/fixtures/config-extends-not-found/.atlaspackrc +3 -0
  170. package/test/fixtures/config-extends-not-found/.atlaspackrc-json5 +3 -0
  171. package/test/fixtures/config-extends-not-found/.atlaspackrc-multiple +3 -0
  172. package/test/fixtures/config-extends-not-found/.atlaspackrc-node-modules +3 -0
  173. package/test/fixtures/config-malformed/.atlaspackrc +3 -0
  174. package/test/fixtures/config-node-pipeline/.atlaspackrc +6 -0
  175. package/test/fixtures/config-plugin-not-found/.atlaspackrc +6 -0
  176. package/test/fixtures/context/package.json +8 -0
  177. package/test/fixtures/custom-format-infer-ext/package.json +6 -0
  178. package/test/fixtures/custom-format-infer-type/package.json +7 -0
  179. package/test/fixtures/custom-format-mismatch/package.json +8 -0
  180. package/test/fixtures/custom-targets/package.json +20 -0
  181. package/test/fixtures/custom-targets-distdir/package.json +11 -0
  182. package/test/fixtures/duplicate-targets/package.json +4 -0
  183. package/test/fixtures/glob-like/[entry].js +0 -0
  184. package/test/fixtures/invalid-distpath/package.json +11 -0
  185. package/test/fixtures/invalid-engines/package.json +12 -0
  186. package/test/fixtures/invalid-source-missing/package.json +5 -0
  187. package/test/fixtures/invalid-source-not-file/package.json +5 -0
  188. package/test/fixtures/invalid-source-not-file/src/index.js +1 -0
  189. package/test/fixtures/invalid-target-source-missing/package.json +9 -0
  190. package/test/fixtures/invalid-target-source-not-file/package.json +9 -0
  191. package/test/fixtures/invalid-target-source-not-file/src/index.js +1 -0
  192. package/test/fixtures/invalid-targets/package.json +19 -0
  193. package/test/fixtures/library-custom-scopehoist/package.json +9 -0
  194. package/test/fixtures/library-scopehoist/package.json +8 -0
  195. package/test/fixtures/local-plugin-config-pkg/.atlaspackrc +3 -0
  196. package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/index.json +8 -0
  197. package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/local-plugin.js +7 -0
  198. package/test/fixtures/local-plugin-config-pkg/node_modules/atlaspack-config-local/package.json +7 -0
  199. package/test/fixtures/main-format-mismatch/package.json +8 -0
  200. package/test/fixtures/main-global/package.json +8 -0
  201. package/test/fixtures/main-mjs/package.json +8 -0
  202. package/test/fixtures/module-a.js +1 -0
  203. package/test/fixtures/module-b.js +1 -0
  204. package/test/fixtures/plugins/local-plugin.js +7 -0
  205. package/test/fixtures/plugins/node_modules/atlaspack-transformer-bad-engines/index.js +7 -0
  206. package/test/fixtures/plugins/node_modules/atlaspack-transformer-bad-engines/package.json +7 -0
  207. package/test/fixtures/plugins/node_modules/atlaspack-transformer-no-engines/index.js +7 -0
  208. package/test/fixtures/plugins/node_modules/atlaspack-transformer-no-engines/package.json +4 -0
  209. package/test/fixtures/targets-default-distdir-none/package.json +5 -0
  210. package/test/fixtures/targets-default-distdir-one/package.json +8 -0
  211. package/test/fixtures/targets-default-distdir-two/package.json +18 -0
  212. package/test/requests/ConfigRequest.test.js +254 -0
  213. package/test/serializer.test.js +302 -0
  214. package/test/test-utils.js +80 -0
  215. 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
+ }