@atlaspack/transformer-js 3.2.3-canary.36 → 3.2.3-canary.361

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.
@@ -4,8 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ exports.loadCompiledCssInJsConfig = loadCompiledCssInJsConfig;
8
+ exports.loadTokensConfig = loadTokensConfig;
9
+ function _buildCache() {
10
+ const data = require("@atlaspack/build-cache");
11
+ _buildCache = function () {
12
+ return data;
13
+ };
14
+ return data;
15
+ }
7
16
  function _sourceMap() {
8
- const data = _interopRequireDefault(require("@parcel/source-map"));
17
+ const data = _interopRequireDefault(require("@atlaspack/source-map"));
9
18
  _sourceMap = function () {
10
19
  return data;
11
20
  };
@@ -25,6 +34,13 @@ function _rust() {
25
34
  };
26
35
  return data;
27
36
  }
37
+ function _assert() {
38
+ const data = _interopRequireDefault(require("assert"));
39
+ _assert = function () {
40
+ return data;
41
+ };
42
+ return data;
43
+ }
28
44
  function _browserslist() {
29
45
  const data = _interopRequireDefault(require("browserslist"));
30
46
  _browserslist = function () {
@@ -68,6 +84,13 @@ function _featureFlags() {
68
84
  };
69
85
  return data;
70
86
  }
87
+ function _path() {
88
+ const data = _interopRequireWildcard(require("path"));
89
+ _path = function () {
90
+ return data;
91
+ };
92
+ return data;
93
+ }
71
94
  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); }
72
95
  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; }
73
96
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -130,15 +153,25 @@ const CONFIG_SCHEMA = {
130
153
  }
131
154
  }]
132
155
  },
156
+ addReactDisplayName: {
157
+ type: 'boolean'
158
+ },
133
159
  magicComments: {
134
160
  type: 'boolean'
135
161
  },
136
162
  unstable_inlineConstants: {
137
163
  type: 'boolean'
164
+ },
165
+ jsx: {
166
+ type: 'object'
138
167
  }
139
168
  },
140
169
  additionalProperties: false
141
170
  };
171
+
172
+ // Mirrors the CONFIG_SCHEMA
173
+
174
+ const configCache = (0, _buildCache().createBuildCache)();
142
175
  const SCRIPT_ERRORS = {
143
176
  browser: {
144
177
  message: 'Browser scripts cannot have imports or exports.',
@@ -155,51 +188,166 @@ const SCRIPT_ERRORS = {
155
188
  };
156
189
 
157
190
  // NOTE: Make sure this is in sync with the TypeScript definition in the @atlaspack/macros package.
191
+
192
+ const TOKENS_CONFIG_SCHEMA = {
193
+ type: 'object',
194
+ properties: {
195
+ shouldUseAutoFallback: {
196
+ type: 'boolean'
197
+ },
198
+ shouldForceAutoFallback: {
199
+ type: 'boolean'
200
+ },
201
+ forceAutoFallbackExemptions: {
202
+ type: 'array',
203
+ items: {
204
+ type: 'string'
205
+ }
206
+ },
207
+ defaultTheme: {
208
+ type: 'string',
209
+ enum: ['light', 'legacy-light']
210
+ },
211
+ tokenDataPath: {
212
+ type: 'string'
213
+ }
214
+ },
215
+ additionalProperties: false
216
+ };
217
+ async function legacyDetemineJsxConfig(config, options) {
218
+ let packageJson = await config.getPackage();
219
+ let isJSX, jsxPragma, jsxPragmaFrag, jsxImportSource, automaticJSXRuntime, reactRefresh;
220
+ if (config.isSource) {
221
+ var _packageJson$dependen2, _packageJson$devDepen2, _packageJson$peerDepe2, _await$config$getConf;
222
+ let reactLib;
223
+ if (packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react']) {
224
+ // e.g.: `{ alias: { "react": "preact/compat" } }`
225
+ reactLib = 'react';
226
+ } else {
227
+ // Find a dependency that we can map to a JSX pragma
228
+ reactLib = Object.keys(JSX_PRAGMA).find(libName => {
229
+ var _packageJson$dependen, _packageJson$devDepen, _packageJson$peerDepe;
230
+ return (packageJson === null || packageJson === void 0 || (_packageJson$dependen = packageJson.dependencies) === null || _packageJson$dependen === void 0 ? void 0 : _packageJson$dependen[libName]) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen = packageJson.devDependencies) === null || _packageJson$devDepen === void 0 ? void 0 : _packageJson$devDepen[libName]) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe = packageJson.peerDependencies) === null || _packageJson$peerDepe === void 0 ? void 0 : _packageJson$peerDepe[libName]);
231
+ });
232
+ }
233
+ reactRefresh = Boolean((packageJson === null || packageJson === void 0 || (_packageJson$dependen2 = packageJson.dependencies) === null || _packageJson$dependen2 === void 0 ? void 0 : _packageJson$dependen2.react) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen2 = packageJson.devDependencies) === null || _packageJson$devDepen2 === void 0 ? void 0 : _packageJson$devDepen2.react) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe2 = packageJson.peerDependencies) === null || _packageJson$peerDepe2 === void 0 ? void 0 : _packageJson$peerDepe2.react));
234
+ const compilerOptions = (_await$config$getConf = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
235
+ readTracking: true
236
+ })) === null || _await$config$getConf === void 0 || (_await$config$getConf = _await$config$getConf.contents) === null || _await$config$getConf === void 0 ? void 0 : _await$config$getConf.compilerOptions;
237
+
238
+ // Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
239
+ jsxPragma = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFactory) || (
240
+ // @ts-expect-error TS7053
241
+ reactLib ? JSX_PRAGMA[reactLib].pragma : undefined);
242
+ jsxPragmaFrag = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFragmentFactory) || (
243
+ // @ts-expect-error TS7053
244
+ reactLib ? JSX_PRAGMA[reactLib].pragmaFrag : undefined);
245
+ if ((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsx' || (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsxdev' || compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxImportSource) {
246
+ jsxImportSource = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxImportSource;
247
+ automaticJSXRuntime = true;
248
+ } else if (reactLib) {
249
+ var _JSX_PRAGMA$effective, _packageJson$dependen3, _packageJson$devDepen3, _packageJson$peerDepe3, _semver$minVersion;
250
+ let effectiveReactLib = packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react'] === 'preact/compat' ? 'preact' : reactLib;
251
+ // @ts-expect-error TS7053
252
+ let automaticVersion = (_JSX_PRAGMA$effective = JSX_PRAGMA[effectiveReactLib]) === null || _JSX_PRAGMA$effective === void 0 ? void 0 : _JSX_PRAGMA$effective.automatic;
253
+ let reactLibVersion = (packageJson === null || packageJson === void 0 || (_packageJson$dependen3 = packageJson.dependencies) === null || _packageJson$dependen3 === void 0 ? void 0 : _packageJson$dependen3[effectiveReactLib]) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen3 = packageJson.devDependencies) === null || _packageJson$devDepen3 === void 0 ? void 0 : _packageJson$devDepen3[effectiveReactLib]) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe3 = packageJson.peerDependencies) === null || _packageJson$peerDepe3 === void 0 ? void 0 : _packageJson$peerDepe3[effectiveReactLib]);
254
+ // @ts-expect-error TS2322
255
+ reactLibVersion = reactLibVersion ? _semver().default.validRange(reactLibVersion) : null;
256
+ let minReactLibVersion = reactLibVersion !== null && reactLibVersion !== '*' ? // @ts-expect-error TS2345
257
+ (_semver$minVersion = _semver().default.minVersion(reactLibVersion)) === null || _semver$minVersion === void 0 ? void 0 : _semver$minVersion.toString() : null;
258
+ automaticJSXRuntime = automaticVersion && !(compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxFactory) && minReactLibVersion != null && _semver().default.satisfies(minReactLibVersion, automaticVersion, {
259
+ includePrerelease: true
260
+ });
261
+ if (automaticJSXRuntime) {
262
+ jsxImportSource = reactLib;
263
+ }
264
+ }
265
+ isJSX = Boolean((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) || jsxPragma);
266
+ }
267
+ return {
268
+ isJSX,
269
+ jsxPragma,
270
+ jsxPragmaFrag,
271
+ jsxImportSource,
272
+ automaticJSXRuntime,
273
+ reactRefresh
274
+ };
275
+ }
276
+ async function loadTokensConfig(config, options) {
277
+ const conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
278
+ packageKey: '@atlaspack/transformer-tokens'
279
+ });
280
+ if (conf && conf.contents) {
281
+ _utils().validateSchema.diagnostic(TOKENS_CONFIG_SCHEMA, {
282
+ data: conf.contents,
283
+ source: () => options.inputFS.readFileSync(conf.filePath, 'utf8'),
284
+ filePath: conf.filePath,
285
+ prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-tokens')}`
286
+ }, '@atlaspack/transformer-tokens', 'Invalid config for @atlaspack/transformer-tokens');
287
+
288
+ // @ts-expect-error TS2339
289
+ const tokensConfig = conf.contents;
290
+ let resolvedConfig = {
291
+ shouldUseAutoFallback: tokensConfig.shouldUseAutoFallback ?? true,
292
+ shouldForceAutoFallback: tokensConfig.shouldForceAutoFallback ?? true,
293
+ forceAutoFallbackExemptions: tokensConfig.forceAutoFallbackExemptions ?? [],
294
+ defaultTheme: tokensConfig.defaultTheme ?? 'light',
295
+ tokenDataPath: _path().default.join(options.projectRoot, tokensConfig.tokenDataPath)
296
+ };
297
+ return resolvedConfig;
298
+ }
299
+ }
300
+ async function loadCompiledCssInJsConfig(config, options) {
301
+ var _contents$importSourc;
302
+ const conf = await config.getConfigFrom((0, _path().join)(options.projectRoot, 'index'), ['.compiledcssrc', '.compiledcssrc.json'], {
303
+ packageKey: '@atlaspack/transformer-compiled-css-in-js'
304
+ });
305
+ const contents = {
306
+ configPath: conf === null || conf === void 0 ? void 0 : conf.filePath,
307
+ importSources: ['@compiled/react', '@atlaskit/css']
308
+ };
309
+ Object.assign(contents, conf === null || conf === void 0 ? void 0 : conf.contents);
310
+ if (!((_contents$importSourc = contents.importSources) !== null && _contents$importSourc !== void 0 && _contents$importSourc.includes('@compiled/react'))) {
311
+ var _contents$importSourc2;
312
+ (_contents$importSourc2 = contents.importSources) === null || _contents$importSourc2 === void 0 || _contents$importSourc2.push('@compiled/react');
313
+ }
314
+ contents.extract = contents.extract && options.mode !== 'development';
315
+ return contents;
316
+ }
158
317
  var _default = exports.default = new (_plugin().Transformer)({
159
318
  async loadConfig({
160
319
  config,
161
320
  options
162
321
  }) {
163
- let pkg = await config.getPackage();
164
- let isJSX, pragma, pragmaFrag, jsxImportSource, automaticJSXRuntime, reactRefresh, decorators, useDefineForClassFields;
322
+ var _conf$contents;
323
+ let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
324
+ packageKey: '@atlaspack/transformer-js'
325
+ });
326
+ if (conf && conf.contents) {
327
+ _utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
328
+ data: conf.contents,
329
+ source: () => options.inputFS.readFileSync(conf.filePath, 'utf8'),
330
+ filePath: conf.filePath,
331
+ prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-js')}`
332
+ },
333
+ // FIXME
334
+ '@atlaspack/transformer-js', 'Invalid config for @atlaspack/transformer-js');
335
+ }
336
+ let packageJson = await config.getPackage();
337
+ let decorators, useDefineForClassFields;
338
+ let {
339
+ isJSX,
340
+ jsxPragma,
341
+ jsxPragmaFrag,
342
+ jsxImportSource,
343
+ automaticJSXRuntime,
344
+ reactRefresh
345
+ } = options.featureFlags.newJsxConfig ? (0, _rust().determineJsxConfiguration)(config.searchPath, config.isSource, conf === null || conf === void 0 || (_conf$contents = conf.contents) === null || _conf$contents === void 0 ? void 0 : _conf$contents.jsx, options.projectRoot) : await legacyDetemineJsxConfig(config, options);
165
346
  if (config.isSource) {
166
- var _pkg$dependencies2, _pkg$devDependencies2, _pkg$peerDependencies2, _tsconfig$contents;
167
- let reactLib;
168
- if (pkg !== null && pkg !== void 0 && pkg.alias && pkg.alias['react']) {
169
- // e.g.: `{ alias: { "react": "preact/compat" } }`
170
- reactLib = 'react';
171
- } else {
172
- // Find a dependency that we can map to a JSX pragma
173
- reactLib = Object.keys(JSX_PRAGMA).find(libName => {
174
- var _pkg$dependencies, _pkg$devDependencies, _pkg$peerDependencies;
175
- return (pkg === null || pkg === void 0 || (_pkg$dependencies = pkg.dependencies) === null || _pkg$dependencies === void 0 ? void 0 : _pkg$dependencies[libName]) || (pkg === null || pkg === void 0 || (_pkg$devDependencies = pkg.devDependencies) === null || _pkg$devDependencies === void 0 ? void 0 : _pkg$devDependencies[libName]) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies = pkg.peerDependencies) === null || _pkg$peerDependencies === void 0 ? void 0 : _pkg$peerDependencies[libName]);
176
- });
177
- }
178
- reactRefresh = options.hmrOptions && options.mode === 'development' && Boolean((pkg === null || pkg === void 0 || (_pkg$dependencies2 = pkg.dependencies) === null || _pkg$dependencies2 === void 0 ? void 0 : _pkg$dependencies2.react) || (pkg === null || pkg === void 0 || (_pkg$devDependencies2 = pkg.devDependencies) === null || _pkg$devDependencies2 === void 0 ? void 0 : _pkg$devDependencies2.react) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies2 = pkg.peerDependencies) === null || _pkg$peerDependencies2 === void 0 ? void 0 : _pkg$peerDependencies2.react));
179
- let tsconfig = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json']);
180
- let compilerOptions = tsconfig === null || tsconfig === void 0 || (_tsconfig$contents = tsconfig.contents) === null || _tsconfig$contents === void 0 ? void 0 : _tsconfig$contents.compilerOptions;
181
-
182
- // Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
183
- pragma = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFactory) || (reactLib ? JSX_PRAGMA[reactLib].pragma : undefined);
184
- pragmaFrag = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFragmentFactory) || (reactLib ? JSX_PRAGMA[reactLib].pragmaFrag : undefined);
185
- if ((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsx' || (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsxdev' || compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxImportSource) {
186
- jsxImportSource = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxImportSource;
187
- automaticJSXRuntime = true;
188
- } else if (reactLib) {
189
- var _JSX_PRAGMA$effective, _pkg$dependencies3, _pkg$devDependencies3, _pkg$peerDependencies3, _semver$minVersion;
190
- let effectiveReactLib = pkg !== null && pkg !== void 0 && pkg.alias && pkg.alias['react'] === 'preact/compat' ? 'preact' : reactLib;
191
- let automaticVersion = (_JSX_PRAGMA$effective = JSX_PRAGMA[effectiveReactLib]) === null || _JSX_PRAGMA$effective === void 0 ? void 0 : _JSX_PRAGMA$effective.automatic;
192
- let reactLibVersion = (pkg === null || pkg === void 0 || (_pkg$dependencies3 = pkg.dependencies) === null || _pkg$dependencies3 === void 0 ? void 0 : _pkg$dependencies3[effectiveReactLib]) || (pkg === null || pkg === void 0 || (_pkg$devDependencies3 = pkg.devDependencies) === null || _pkg$devDependencies3 === void 0 ? void 0 : _pkg$devDependencies3[effectiveReactLib]) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies3 = pkg.peerDependencies) === null || _pkg$peerDependencies3 === void 0 ? void 0 : _pkg$peerDependencies3[effectiveReactLib]);
193
- reactLibVersion = reactLibVersion ? _semver().default.validRange(reactLibVersion) : null;
194
- let minReactLibVersion = reactLibVersion !== null && reactLibVersion !== '*' ? (_semver$minVersion = _semver().default.minVersion(reactLibVersion)) === null || _semver$minVersion === void 0 ? void 0 : _semver$minVersion.toString() : null;
195
- automaticJSXRuntime = automaticVersion && !(compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxFactory) && minReactLibVersion != null && _semver().default.satisfies(minReactLibVersion, automaticVersion, {
196
- includePrerelease: true
197
- });
198
- if (automaticJSXRuntime) {
199
- jsxImportSource = reactLib;
200
- }
201
- }
202
- isJSX = Boolean((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) || pragma);
347
+ var _await$config$getConf2;
348
+ const compilerOptions = (_await$config$getConf2 = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
349
+ readTracking: true
350
+ })) === null || _await$config$getConf2 === void 0 || (_await$config$getConf2 = _await$config$getConf2.contents) === null || _await$config$getConf2 === void 0 ? void 0 : _await$config$getConf2.compilerOptions;
203
351
  decorators = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.experimentalDecorators;
204
352
  useDefineForClassFields = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.useDefineForClassFields;
205
353
  if (useDefineForClassFields === undefined && (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.target) != null) {
@@ -215,43 +363,86 @@ var _default = exports.default = new (_plugin().Transformer)({
215
363
 
216
364
  // Check if we should ignore fs calls
217
365
  // See https://github.com/defunctzombie/node-browser-resolve#skip
218
- let ignoreFS = pkg && pkg.browser && typeof pkg.browser === 'object' && pkg.browser.fs === false;
219
- let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
220
- packageKey: '@atlaspack/transformer-js'
221
- });
366
+ let ignoreFS = packageJson && packageJson.browser && typeof packageJson.browser === 'object' && packageJson.browser.fs === false;
222
367
  let inlineEnvironment = config.isSource;
223
368
  let inlineFS = !ignoreFS;
224
369
  let inlineConstants = false;
225
370
  let magicComments = false;
371
+ let addReactDisplayName = false;
372
+ let enableSsrTypeofReplacement = options.env.NATIVE_SSR_TYPEOF_REPLACEMENT === 'true';
373
+ let globalAliasingConfig = options.env.NATIVE_GLOBAL_ALIASING && JSON.parse(options.env.NATIVE_GLOBAL_ALIASING);
374
+ let enableLazyLoading = options.env.NATIVE_LAZY_LOADING === 'true';
375
+ let enableReactHooksRemoval = options.env.NATIVE_REACT_HOOKS_REMOVAL === 'true';
376
+ let enableReactAsyncImportLift = options.env.NATIVE_REACT_ASYNC_IMPORT_LIFT === 'true';
377
+ let reactAsyncLiftByDefault = options.env.REACT_ASYNC_IMPORT_LIFTING_BY_DEFAULT === 'true';
378
+ let reactAsyncLiftReportLevel = options.env.REACT_ASYNC_LIFT_REPORT_LEVEL || 'none';
379
+ let enableStaticPrevaluation = options.env.NATIVE_PREVALUATION === 'true';
380
+ let enableDeadReturnsRemoval = options.env.NATIVE_DEAD_RETURNS_REMOVAL === 'true';
381
+ let enableUnusedBindingsRemoval = options.env.NATIVE_UNUSED_BINDINGS_REMOVAL === 'true';
382
+ let syncDynamicImportConfig;
383
+ if (config.env.isTesseract() && options.env.SYNC_DYNAMIC_IMPORT_CONFIG) {
384
+ try {
385
+ let config = configCache.get('SYNC_DYNAMIC_IMPORT_CONFIG');
386
+ if (!config) {
387
+ var _config;
388
+ config = JSON.parse(options.env.SYNC_DYNAMIC_IMPORT_CONFIG);
389
+ (0, _assert().default)(typeof ((_config = config) === null || _config === void 0 ? void 0 : _config.entrypoint_filepath_suffix) === 'string');
390
+ (0, _assert().default)(Array.isArray(config.actual_require_paths));
391
+ configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', config);
392
+ }
393
+ syncDynamicImportConfig = config;
394
+ } catch {
395
+ // eslint-disable-next-line no-console
396
+ console.warn('Failed to parse SYNC_DYNAMIC_IMPORT_CONFIG to JSON or config shape did not match. Config will not be applied.');
397
+ const fallback = {
398
+ entrypoint_filepath_suffix: '__NO_MATCH__',
399
+ actual_require_paths: []
400
+ };
401
+
402
+ // Set cache to fallback so we don't keep trying to parse.
403
+ configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', fallback);
404
+ syncDynamicImportConfig = fallback;
405
+ }
406
+ }
407
+ config.invalidateOnEnvChange('SYNC_DYNAMIC_IMPORT_CONFIG');
408
+ const tokensConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadTokensConfig(config, options) : undefined;
409
+ const compiledCssInJsConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadCompiledCssInJsConfig(config, options) : undefined;
226
410
  if (conf && conf.contents) {
227
- var _conf$contents, _conf$contents2, _conf$contents3, _conf$contents4;
228
- _utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
229
- data: conf.contents,
230
- // FIXME
231
- source: await options.inputFS.readFile(conf.filePath, 'utf8'),
232
- filePath: conf.filePath,
233
- prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-js')}`
234
- },
235
- // FIXME
236
- '@atlaspack/transformer-js', 'Invalid config for @atlaspack/transformer-js');
237
- magicComments = ((_conf$contents = conf.contents) === null || _conf$contents === void 0 ? void 0 : _conf$contents.magicComments) ?? magicComments;
238
- inlineEnvironment = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.inlineEnvironment) ?? inlineEnvironment;
239
- inlineFS = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.inlineFS) ?? inlineFS;
240
- inlineConstants = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.unstable_inlineConstants) ?? inlineConstants;
411
+ var _conf$contents2, _conf$contents3, _conf$contents4, _conf$contents5, _conf$contents6;
412
+ addReactDisplayName = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.addReactDisplayName) ?? addReactDisplayName;
413
+ magicComments = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.magicComments) ?? magicComments;
414
+ // @ts-expect-error TS2322
415
+ inlineEnvironment = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.inlineEnvironment) ?? inlineEnvironment;
416
+ inlineFS = ((_conf$contents5 = conf.contents) === null || _conf$contents5 === void 0 ? void 0 : _conf$contents5.inlineFS) ?? inlineFS;
417
+ inlineConstants = ((_conf$contents6 = conf.contents) === null || _conf$contents6 === void 0 ? void 0 : _conf$contents6.unstable_inlineConstants) ?? inlineConstants;
241
418
  }
242
419
  return {
243
420
  isJSX,
244
421
  automaticJSXRuntime,
245
422
  jsxImportSource,
246
- pragma,
247
- pragmaFrag,
423
+ pragma: jsxPragma,
424
+ pragmaFrag: jsxPragmaFrag,
248
425
  inlineEnvironment,
249
426
  inlineFS,
250
427
  inlineConstants,
428
+ addReactDisplayName,
251
429
  reactRefresh,
252
430
  decorators,
253
431
  useDefineForClassFields,
254
- magicComments
432
+ magicComments,
433
+ globalAliasingConfig,
434
+ enableSsrTypeofReplacement,
435
+ enableLazyLoading,
436
+ enableDeadReturnsRemoval,
437
+ enableUnusedBindingsRemoval,
438
+ enableStaticPrevaluation,
439
+ enableReactHooksRemoval,
440
+ syncDynamicImportConfig,
441
+ enableReactAsyncImportLift,
442
+ reactAsyncLiftByDefault,
443
+ reactAsyncLiftReportLevel,
444
+ tokensConfig: tokensConfig,
445
+ compiledCssInJsConfig: compiledCssInJsConfig
255
446
  };
256
447
  },
257
448
  async transform({
@@ -280,17 +471,22 @@ var _default = exports.default = new (_plugin().Transformer)({
280
471
  for (let browser of browsers) {
281
472
  let [name, version] = browser.split(' ');
282
473
  if (BROWSER_MAPPING.hasOwnProperty(name)) {
474
+ // @ts-expect-error TS7053
283
475
  name = BROWSER_MAPPING[name];
284
476
  if (!name) {
285
477
  continue;
286
478
  }
287
479
  }
288
480
  let [major, minor = '0', patch = '0'] = version.split('-')[0].split('.');
481
+ // @ts-expect-error TS2345
289
482
  if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
290
483
  continue;
291
484
  }
292
485
  let semverVersion = `${major}.${minor}.${patch}`;
486
+
487
+ // @ts-expect-error TS2345
293
488
  if (targets[name] == null || _semver().default.gt(targets[name], semverVersion)) {
489
+ // @ts-expect-error TS7053
294
490
  targets[name] = semverVersion;
295
491
  }
296
492
  }
@@ -305,6 +501,9 @@ var _default = exports.default = new (_plugin().Transformer)({
305
501
  if (options.env.NODE_ENV != null) {
306
502
  env.NODE_ENV = options.env.NODE_ENV;
307
503
  }
504
+ if (process.env.ATLASPACK_BUILD_ENV === 'test') {
505
+ env.ATLASPACK_BUILD_ENV = 'test';
506
+ }
308
507
  } else if (Array.isArray(config === null || config === void 0 ? void 0 : config.inlineEnvironment)) {
309
508
  for (let match of (0, _utils().globMatch)(Object.keys(options.env), config.inlineEnvironment)) {
310
509
  env[match] = String(options.env[match]);
@@ -322,23 +521,42 @@ var _default = exports.default = new (_plugin().Transformer)({
322
521
  if (asset.type === 'ts') {
323
522
  isJSX = false;
324
523
  } else if (!isJSX) {
524
+ // @ts-expect-error TS7053
325
525
  isJSX = Boolean(JSX_EXTENSIONS[asset.type]);
326
526
  }
327
527
  }
328
528
  let macroAssets = [];
329
529
  let {
530
+ // @ts-expect-error TS2339
330
531
  dependencies,
532
+ // @ts-expect-error TS2339
331
533
  code: compiledCode,
534
+ // @ts-expect-error TS2339
332
535
  map,
536
+ // @ts-expect-error TS2339
333
537
  shebang,
538
+ // @ts-expect-error TS2339
334
539
  hoist_result,
540
+ // @ts-expect-error TS2339
335
541
  symbol_result,
542
+ // @ts-expect-error TS2339
543
+ is_empty_or_empty_export,
544
+ // @ts-expect-error TS2339
336
545
  needs_esm_helpers,
546
+ // @ts-expect-error TS2339
337
547
  diagnostics,
548
+ // @ts-expect-error TS2339
338
549
  used_env,
550
+ // @ts-expect-error TS2339
339
551
  has_node_replacements,
552
+ // @ts-expect-error TS2339
340
553
  is_constant_module,
341
- conditions
554
+ // @ts-expect-error TS2339
555
+ conditions,
556
+ // @ts-expect-error TS2339
557
+ magic_comments,
558
+ // @ts-expect-error TS2339
559
+ style_rules
342
560
  } = await (_rust().transformAsync || _rust().transform)({
343
561
  filename: asset.filePath,
344
562
  code,
@@ -349,7 +567,7 @@ var _default = exports.default = new (_plugin().Transformer)({
349
567
  insert_node_globals: !asset.env.isNode() && asset.env.sourceType !== 'script',
350
568
  node_replacer: asset.env.isNode(),
351
569
  is_browser: asset.env.isBrowser(),
352
- is_worker: asset.env.isWorker(),
570
+ is_worker: asset.env.isWorker() || asset.env.isTesseract(),
353
571
  env,
354
572
  is_type_script: asset.type === 'ts' || asset.type === 'tsx',
355
573
  is_jsx: isJSX,
@@ -358,7 +576,7 @@ var _default = exports.default = new (_plugin().Transformer)({
358
576
  automatic_jsx_runtime: Boolean(config === null || config === void 0 ? void 0 : config.automaticJSXRuntime),
359
577
  jsx_import_source: config === null || config === void 0 ? void 0 : config.jsxImportSource,
360
578
  is_development: options.mode === 'development',
361
- react_refresh: asset.env.isBrowser() && !asset.env.isLibrary && !asset.env.isWorker() && !asset.env.isWorklet() && Boolean(config === null || config === void 0 ? void 0 : config.reactRefresh),
579
+ react_refresh: Boolean(asset.env.isBrowser() && !asset.env.isLibrary && !asset.env.isWorker() && !asset.env.isTesseract() && !asset.env.isWorklet() && (config === null || config === void 0 ? void 0 : config.reactRefresh) && options.hmrOptions && options.mode === 'development'),
362
580
  decorators: Boolean(config === null || config === void 0 ? void 0 : config.decorators),
363
581
  use_define_for_class_fields: Boolean(config === null || config === void 0 ? void 0 : config.useDefineForClassFields),
364
582
  targets,
@@ -373,16 +591,33 @@ var _default = exports.default = new (_plugin().Transformer)({
373
591
  standalone: asset.query.has('standalone'),
374
592
  inline_constants: config.inlineConstants,
375
593
  conditional_bundling: options.featureFlags.conditionalBundlingApi,
376
- magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments),
594
+ hmr_improvements: options.featureFlags.hmrImprovements,
595
+ add_display_name: Boolean(config.addReactDisplayName),
596
+ exports_rebinding_optimisation: options.featureFlags.exportsRebindingOptimisation,
597
+ magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments) || (0, _featureFlags().getFeatureFlag)('supportWebpackChunkName'),
598
+ is_source: asset.isSource,
599
+ nested_promise_import_fix: options.featureFlags.nestedPromiseImportFix,
600
+ global_aliasing_config: config.globalAliasingConfig,
601
+ enable_ssr_typeof_replacement: Boolean(config.enableSsrTypeofReplacement),
602
+ enable_lazy_loading: Boolean(config.enableLazyLoading),
603
+ enable_dead_returns_removal: Boolean(config.enableDeadReturnsRemoval),
604
+ enable_unused_bindings_removal: Boolean(config.enableUnusedBindingsRemoval),
605
+ enable_static_prevaluation: Boolean(config.enableStaticPrevaluation),
606
+ enable_react_hooks_removal: Boolean(config.enableReactHooksRemoval),
607
+ enable_react_async_import_lift: Boolean(config.enableReactAsyncImportLift),
608
+ react_async_lift_by_default: Boolean(config.reactAsyncLiftByDefault),
609
+ react_async_lift_report_level: String(config.reactAsyncLiftReportLevel),
610
+ sync_dynamic_import_config: config.syncDynamicImportConfig,
611
+ enable_tokens_and_compiled_css_in_js_transform: (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform'),
612
+ tokens_config: config.tokensConfig,
613
+ compiled_css_in_js_config: config.compiledCssInJsConfig,
377
614
  callMacro: asset.isSource ? async (err, src, exportName, args, loc) => {
378
615
  let mod;
379
616
  try {
380
617
  mod = await options.packageManager.require(src, asset.filePath);
381
618
 
382
619
  // Default interop for CommonJS modules.
383
- if (exportName === 'default' && !mod.__esModule &&
384
- // $FlowFixMe
385
- Object.prototype.toString.call(config) !== '[object Module]') {
620
+ if (exportName === 'default' && !mod.__esModule && Object.prototype.toString.call(config) !== '[object Module]') {
386
621
  mod = {
387
622
  default: mod
388
623
  };
@@ -398,7 +633,7 @@ var _default = exports.default = new (_plugin().Transformer)({
398
633
  }
399
634
  try {
400
635
  if (typeof mod[exportName] === 'function') {
401
- return mod[exportName].apply({
636
+ let ctx = {
402
637
  // Allows macros to emit additional assets to add as dependencies (e.g. css).
403
638
  addAsset(a) {
404
639
  let k = String(macroAssets.length);
@@ -406,6 +641,7 @@ var _default = exports.default = new (_plugin().Transformer)({
406
641
  if (asset.env.sourceMap) {
407
642
  // Generate a source map that maps each line of the asset to the original macro call.
408
643
  map = new (_sourceMap().default)(options.projectRoot);
644
+ // @ts-expect-error TS2304
409
645
  let mappings = [];
410
646
  let line = 1;
411
647
  for (let i = 0; i <= a.content.length; i++) {
@@ -428,7 +664,9 @@ var _default = exports.default = new (_plugin().Transformer)({
428
664
  if (originalMap) {
429
665
  map.extends(originalMap);
430
666
  } else {
431
- map.setSourceContent(asset.filePath, code.toString());
667
+ if (!(0, _featureFlags().getFeatureFlag)('omitSourcesContentInMemory')) {
668
+ map.setSourceContent(asset.filePath, code.toString());
669
+ }
432
670
  }
433
671
  }
434
672
  macroAssets.push({
@@ -457,7 +695,8 @@ var _default = exports.default = new (_plugin().Transformer)({
457
695
  invalidateOnBuild() {
458
696
  asset.invalidateOnBuild();
459
697
  }
460
- }, args);
698
+ };
699
+ return mod[exportName].apply(ctx, args);
461
700
  } else {
462
701
  throw new Error(`"${exportName}" in "${src}" is not a function.`);
463
702
  }
@@ -479,11 +718,10 @@ var _default = exports.default = new (_plugin().Transformer)({
479
718
  } : null
480
719
  });
481
720
  if ((0, _featureFlags().getFeatureFlag)('conditionalBundlingApi')) {
482
- asset.meta.conditions = conditions.map(c => ({
483
- key: c.key,
484
- ifTruePlaceholder: c.if_true_placeholder,
485
- ifFalsePlaceholder: c.if_false_placeholder
486
- }));
721
+ asset.meta.conditions = conditions;
722
+ }
723
+ if (style_rules) {
724
+ asset.meta.styleRules = style_rules;
487
725
  }
488
726
  if (is_constant_module) {
489
727
  asset.meta.isConstantModule = true;
@@ -503,17 +741,22 @@ var _default = exports.default = new (_plugin().Transformer)({
503
741
 
504
742
  // If there is an original source map, use it to remap to the original source location.
505
743
  if (originalMap) {
506
- location = (0, _utils().remapSourceLocation)(location, originalMap);
744
+ location = (0, _utils().remapSourceLocation)(location, originalMap, options.projectRoot);
507
745
  }
508
746
  return location;
509
747
  };
510
748
  if (diagnostics) {
511
- let errors = diagnostics.filter(d => d.severity === 'Error' || d.severity === 'SourceError' && asset.isSource);
512
- let warnings = diagnostics.filter(d => d.severity === 'Warning' || d.severity === 'SourceError' && !asset.isSource);
749
+ let errors = diagnostics.filter(
750
+ // @ts-expect-error TS7006
751
+ d => d.severity === 'Error' || d.severity === 'SourceError' && asset.isSource);
752
+ let warnings = diagnostics.filter(
753
+ // @ts-expect-error TS7006
754
+ d => d.severity === 'Warning' || d.severity === 'SourceError' && !asset.isSource);
513
755
  let convertDiagnostic = diagnostic => {
514
756
  var _diagnostic$code_high;
515
757
  let message = diagnostic.message;
516
758
  if (message === 'SCRIPT_ERROR') {
759
+ // @ts-expect-error TS7053
517
760
  let err = SCRIPT_ERRORS[asset.env.context];
518
761
  message = (err === null || err === void 0 ? void 0 : err.message) || SCRIPT_ERRORS.browser.message;
519
762
  }
@@ -536,6 +779,8 @@ var _default = exports.default = new (_plugin().Transformer)({
536
779
  codeHighlights: [(0, _diagnostic().convertSourceLocationToHighlight)(asset.env.loc, 'The environment was originally created here')]
537
780
  });
538
781
  }
782
+
783
+ // @ts-expect-error TS7053
539
784
  let err = SCRIPT_ERRORS[asset.env.context];
540
785
  if (err) {
541
786
  if (!res.hints) {
@@ -580,6 +825,7 @@ var _default = exports.default = new (_plugin().Transformer)({
580
825
  env: {
581
826
  context: 'web-worker',
582
827
  sourceType: dep.source_type === 'Module' ? 'module' : 'script',
828
+ // @ts-expect-error TS2322
583
829
  outputFormat,
584
830
  loc
585
831
  },
@@ -629,6 +875,13 @@ var _default = exports.default = new (_plugin().Transformer)({
629
875
  });
630
876
  } else if (dep.kind === 'File') {
631
877
  asset.invalidateOnFileChange(dep.specifier);
878
+ } else if (dep.kind === 'Id') {
879
+ // Record parcelRequire calls so that the dev packager can add them as dependencies.
880
+ // This allows the HMR runtime to collect parents across async boundaries (through runtimes).
881
+ // TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
882
+ asset.meta.hmrDeps ??= [];
883
+ (0, _assert().default)(Array.isArray(asset.meta.hmrDeps));
884
+ asset.meta.hmrDeps.push(dep.specifier);
632
885
  } else {
633
886
  let meta = {
634
887
  kind: dep.kind
@@ -676,6 +929,12 @@ var _default = exports.default = new (_plugin().Transformer)({
676
929
  outputFormat,
677
930
  loc: convertLoc(dep.loc)
678
931
  };
932
+ if ((0, _featureFlags().getFeatureFlag)('supportWebpackChunkName')) {
933
+ let chunkName = magic_comments[dep.specifier];
934
+ if (chunkName) {
935
+ meta.chunkName = chunkName;
936
+ }
937
+ }
679
938
  }
680
939
 
681
940
  // Always bundle helpers, even with includeNodeModules: false, except if this is a library.
@@ -695,6 +954,7 @@ var _default = exports.default = new (_plugin().Transformer)({
695
954
  idx = dep.specifier.indexOf('/', idx + 1);
696
955
  }
697
956
  let module = idx >= 0 ? dep.specifier.slice(0, idx) : dep.specifier;
957
+ // @ts-expect-error TS7053
698
958
  range = _package.default.dependencies[module];
699
959
  }
700
960
  asset.addDependency({
@@ -706,6 +966,7 @@ var _default = exports.default = new (_plugin().Transformer)({
706
966
  meta,
707
967
  resolveFrom: isHelper ? __filename : undefined,
708
968
  range,
969
+ // @ts-expect-error TS2322
709
970
  env
710
971
  });
711
972
  }
@@ -717,10 +978,12 @@ var _default = exports.default = new (_plugin().Transformer)({
717
978
  exported,
718
979
  local,
719
980
  loc,
720
- is_esm
981
+ is_esm,
982
+ is_static_binding_safe
721
983
  } of hoist_result.exported_symbols) {
722
984
  asset.symbols.set(exported, local, convertLoc(loc), {
723
- isEsm: is_esm
985
+ isEsm: is_esm,
986
+ isStaticBindingSafe: is_static_binding_safe
724
987
  });
725
988
  }
726
989
 
@@ -802,6 +1065,9 @@ var _default = exports.default = new (_plugin().Transformer)({
802
1065
  // (and the asset has side effects), or the asset is wrapped.
803
1066
  // This allows accessing symbols that don't exist without errors in symbol propagation.
804
1067
  if (hoist_result.has_cjs_exports || !hoist_result.is_esm && asset.sideEffects && deps.size === 0 && Object.keys(hoist_result.exported_symbols).length === 0 || hoist_result.should_wrap && !asset.symbols.hasExportSymbol('*')) {
1068
+ if (is_empty_or_empty_export) {
1069
+ asset.meta.emptyFileStarReexport = true;
1070
+ }
805
1071
  asset.symbols.set('*', `$${asset.id}$exports`);
806
1072
  }
807
1073
  asset.meta.hasCJSExports = hoist_result.has_cjs_exports;