@atlaspack/transformer-js 3.2.3-canary.45 → 3.2.3-canary.451

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,165 @@ 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
+ const DEFAULT_IMPORT_SOURCES = ['@compiled/react', '@atlaskit/css'];
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 resolvedBrowserslistEnv = (conf === null || conf === void 0 ? void 0 : conf.contents.browserslistEnv) ?? process.env.BROWSERSLIST_ENV ?? process.env.NODE_ENV ?? 'production';
306
+ const contents = {
307
+ ...(conf === null || conf === void 0 ? void 0 : conf.contents),
308
+ importSources: [...DEFAULT_IMPORT_SOURCES, ...((conf === null || conf === void 0 ? void 0 : conf.contents.importSources) ?? [])],
309
+ extract: (conf === null || conf === void 0 ? void 0 : conf.contents.extract) && options.mode !== 'development',
310
+ // Use explicit env or process env (BROWSERSLIST_ENV/NODE_ENV). Default to "production"
311
+ // to match browserslist/caniuse defaults and the legacy Babel plugin behavior.
312
+ browserslistEnv: resolvedBrowserslistEnv
313
+ };
314
+ return contents;
315
+ }
158
316
  var _default = exports.default = new (_plugin().Transformer)({
159
317
  async loadConfig({
160
318
  config,
161
319
  options
162
320
  }) {
163
- let pkg = await config.getPackage();
164
- let isJSX, pragma, pragmaFrag, jsxImportSource, automaticJSXRuntime, reactRefresh, decorators, useDefineForClassFields;
321
+ var _conf$contents;
322
+ let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
323
+ packageKey: '@atlaspack/transformer-js'
324
+ });
325
+ if (conf && conf.contents) {
326
+ _utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
327
+ data: conf.contents,
328
+ source: () => options.inputFS.readFileSync(conf.filePath, 'utf8'),
329
+ filePath: conf.filePath,
330
+ prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-js')}`
331
+ },
332
+ // FIXME
333
+ '@atlaspack/transformer-js', 'Invalid config for @atlaspack/transformer-js');
334
+ }
335
+ let packageJson = await config.getPackage();
336
+ let decorators, useDefineForClassFields;
337
+ let {
338
+ isJSX,
339
+ jsxPragma,
340
+ jsxPragmaFrag,
341
+ jsxImportSource,
342
+ automaticJSXRuntime,
343
+ reactRefresh
344
+ } = 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
345
  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);
346
+ var _await$config$getConf2;
347
+ const compilerOptions = (_await$config$getConf2 = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
348
+ readTracking: true
349
+ })) === 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
350
  decorators = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.experimentalDecorators;
204
351
  useDefineForClassFields = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.useDefineForClassFields;
205
352
  if (useDefineForClassFields === undefined && (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.target) != null) {
@@ -215,43 +362,88 @@ var _default = exports.default = new (_plugin().Transformer)({
215
362
 
216
363
  // Check if we should ignore fs calls
217
364
  // 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
- });
365
+ let ignoreFS = packageJson && packageJson.browser && typeof packageJson.browser === 'object' && packageJson.browser.fs === false;
222
366
  let inlineEnvironment = config.isSource;
223
367
  let inlineFS = !ignoreFS;
224
368
  let inlineConstants = false;
225
369
  let magicComments = false;
370
+ let addReactDisplayName = false;
371
+ let enableSsrTypeofReplacement = options.env.NATIVE_SSR_TYPEOF_REPLACEMENT === 'true';
372
+ let globalAliasingConfig = options.env.NATIVE_GLOBAL_ALIASING && JSON.parse(options.env.NATIVE_GLOBAL_ALIASING);
373
+ let enableLazyLoading = options.env.NATIVE_LAZY_LOADING === 'true';
374
+ let enableReactHooksRemoval = options.env.NATIVE_REACT_HOOKS_REMOVAL === 'true';
375
+ let enableReactAsyncImportLift = options.env.NATIVE_REACT_ASYNC_IMPORT_LIFT === 'true';
376
+ let reactAsyncLiftByDefault = options.env.REACT_ASYNC_IMPORT_LIFTING_BY_DEFAULT === 'true';
377
+ let reactAsyncLiftReportLevel = options.env.REACT_ASYNC_LIFT_REPORT_LEVEL || 'none';
378
+ let enableStaticPrevaluation = options.env.NATIVE_PREVALUATION === 'true';
379
+ let enableDeadReturnsRemoval = options.env.NATIVE_DEAD_RETURNS_REMOVAL === 'true';
380
+ let enableUnusedBindingsRemoval = options.env.NATIVE_UNUSED_BINDINGS_REMOVAL === 'true';
381
+ let syncDynamicImportConfig;
382
+ if (config.env.isTesseract() && options.env.SYNC_DYNAMIC_IMPORT_CONFIG) {
383
+ try {
384
+ let config = configCache.get('SYNC_DYNAMIC_IMPORT_CONFIG');
385
+ if (!config) {
386
+ var _config;
387
+ config = JSON.parse(options.env.SYNC_DYNAMIC_IMPORT_CONFIG);
388
+ (0, _assert().default)(typeof ((_config = config) === null || _config === void 0 ? void 0 : _config.entrypoint_filepath_suffix) === 'string');
389
+ (0, _assert().default)(Array.isArray(config.actual_require_paths));
390
+ (0, _assert().default)(typeof (config.activate_reject_on_unresolved_imports ?? false) === 'boolean');
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
+ activate_reject_on_unresolved_imports: false
401
+ };
402
+
403
+ // Set cache to fallback so we don't keep trying to parse.
404
+ configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', fallback);
405
+ syncDynamicImportConfig = fallback;
406
+ }
407
+ }
408
+ config.invalidateOnEnvChange('SYNC_DYNAMIC_IMPORT_CONFIG');
409
+ const tokensConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadTokensConfig(config, options) : undefined;
410
+ const compiledCssInJsConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadCompiledCssInJsConfig(config, options) : undefined;
226
411
  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;
412
+ var _conf$contents2, _conf$contents3, _conf$contents4, _conf$contents5, _conf$contents6;
413
+ addReactDisplayName = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.addReactDisplayName) ?? addReactDisplayName;
414
+ magicComments = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.magicComments) ?? magicComments;
415
+ // @ts-expect-error TS2322
416
+ inlineEnvironment = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.inlineEnvironment) ?? inlineEnvironment;
417
+ inlineFS = ((_conf$contents5 = conf.contents) === null || _conf$contents5 === void 0 ? void 0 : _conf$contents5.inlineFS) ?? inlineFS;
418
+ inlineConstants = ((_conf$contents6 = conf.contents) === null || _conf$contents6 === void 0 ? void 0 : _conf$contents6.unstable_inlineConstants) ?? inlineConstants;
241
419
  }
242
420
  return {
243
421
  isJSX,
244
422
  automaticJSXRuntime,
245
423
  jsxImportSource,
246
- pragma,
247
- pragmaFrag,
424
+ pragma: jsxPragma,
425
+ pragmaFrag: jsxPragmaFrag,
248
426
  inlineEnvironment,
249
427
  inlineFS,
250
428
  inlineConstants,
429
+ addReactDisplayName,
251
430
  reactRefresh,
252
431
  decorators,
253
432
  useDefineForClassFields,
254
- magicComments
433
+ magicComments,
434
+ globalAliasingConfig,
435
+ enableSsrTypeofReplacement,
436
+ enableLazyLoading,
437
+ enableDeadReturnsRemoval,
438
+ enableUnusedBindingsRemoval,
439
+ enableStaticPrevaluation,
440
+ enableReactHooksRemoval,
441
+ syncDynamicImportConfig,
442
+ enableReactAsyncImportLift,
443
+ reactAsyncLiftByDefault,
444
+ reactAsyncLiftReportLevel,
445
+ tokensConfig,
446
+ compiledCssInJsConfig
255
447
  };
256
448
  },
257
449
  async transform({
@@ -280,17 +472,22 @@ var _default = exports.default = new (_plugin().Transformer)({
280
472
  for (let browser of browsers) {
281
473
  let [name, version] = browser.split(' ');
282
474
  if (BROWSER_MAPPING.hasOwnProperty(name)) {
475
+ // @ts-expect-error TS7053
283
476
  name = BROWSER_MAPPING[name];
284
477
  if (!name) {
285
478
  continue;
286
479
  }
287
480
  }
288
481
  let [major, minor = '0', patch = '0'] = version.split('-')[0].split('.');
482
+ // @ts-expect-error TS2345
289
483
  if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
290
484
  continue;
291
485
  }
292
486
  let semverVersion = `${major}.${minor}.${patch}`;
487
+
488
+ // @ts-expect-error TS2345
293
489
  if (targets[name] == null || _semver().default.gt(targets[name], semverVersion)) {
490
+ // @ts-expect-error TS7053
294
491
  targets[name] = semverVersion;
295
492
  }
296
493
  }
@@ -305,6 +502,9 @@ var _default = exports.default = new (_plugin().Transformer)({
305
502
  if (options.env.NODE_ENV != null) {
306
503
  env.NODE_ENV = options.env.NODE_ENV;
307
504
  }
505
+ if (process.env.ATLASPACK_BUILD_ENV === 'test') {
506
+ env.ATLASPACK_BUILD_ENV = 'test';
507
+ }
308
508
  } else if (Array.isArray(config === null || config === void 0 ? void 0 : config.inlineEnvironment)) {
309
509
  for (let match of (0, _utils().globMatch)(Object.keys(options.env), config.inlineEnvironment)) {
310
510
  env[match] = String(options.env[match]);
@@ -322,23 +522,42 @@ var _default = exports.default = new (_plugin().Transformer)({
322
522
  if (asset.type === 'ts') {
323
523
  isJSX = false;
324
524
  } else if (!isJSX) {
525
+ // @ts-expect-error TS7053
325
526
  isJSX = Boolean(JSX_EXTENSIONS[asset.type]);
326
527
  }
327
528
  }
328
529
  let macroAssets = [];
329
530
  let {
531
+ // @ts-expect-error TS2339
330
532
  dependencies,
533
+ // @ts-expect-error TS2339
331
534
  code: compiledCode,
535
+ // @ts-expect-error TS2339
332
536
  map,
537
+ // @ts-expect-error TS2339
333
538
  shebang,
539
+ // @ts-expect-error TS2339
334
540
  hoist_result,
541
+ // @ts-expect-error TS2339
335
542
  symbol_result,
543
+ // @ts-expect-error TS2339
544
+ is_empty_or_empty_export,
545
+ // @ts-expect-error TS2339
336
546
  needs_esm_helpers,
547
+ // @ts-expect-error TS2339
337
548
  diagnostics,
549
+ // @ts-expect-error TS2339
338
550
  used_env,
551
+ // @ts-expect-error TS2339
339
552
  has_node_replacements,
553
+ // @ts-expect-error TS2339
340
554
  is_constant_module,
341
- conditions
555
+ // @ts-expect-error TS2339
556
+ conditions,
557
+ // @ts-expect-error TS2339
558
+ magic_comments,
559
+ // @ts-expect-error TS2339
560
+ style_rules
342
561
  } = await (_rust().transformAsync || _rust().transform)({
343
562
  filename: asset.filePath,
344
563
  code,
@@ -349,7 +568,7 @@ var _default = exports.default = new (_plugin().Transformer)({
349
568
  insert_node_globals: !asset.env.isNode() && asset.env.sourceType !== 'script',
350
569
  node_replacer: asset.env.isNode(),
351
570
  is_browser: asset.env.isBrowser(),
352
- is_worker: asset.env.isWorker(),
571
+ is_worker: asset.env.isWorker() || asset.env.isTesseract(),
353
572
  env,
354
573
  is_type_script: asset.type === 'ts' || asset.type === 'tsx',
355
574
  is_jsx: isJSX,
@@ -358,7 +577,7 @@ var _default = exports.default = new (_plugin().Transformer)({
358
577
  automatic_jsx_runtime: Boolean(config === null || config === void 0 ? void 0 : config.automaticJSXRuntime),
359
578
  jsx_import_source: config === null || config === void 0 ? void 0 : config.jsxImportSource,
360
579
  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),
580
+ 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
581
  decorators: Boolean(config === null || config === void 0 ? void 0 : config.decorators),
363
582
  use_define_for_class_fields: Boolean(config === null || config === void 0 ? void 0 : config.useDefineForClassFields),
364
583
  targets,
@@ -373,16 +592,33 @@ var _default = exports.default = new (_plugin().Transformer)({
373
592
  standalone: asset.query.has('standalone'),
374
593
  inline_constants: config.inlineConstants,
375
594
  conditional_bundling: options.featureFlags.conditionalBundlingApi,
376
- magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments),
595
+ hmr_improvements: options.featureFlags.hmrImprovements,
596
+ add_display_name: Boolean(config.addReactDisplayName),
597
+ exports_rebinding_optimisation: options.featureFlags.exportsRebindingOptimisation,
598
+ magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments) || (0, _featureFlags().getFeatureFlag)('supportWebpackChunkName'),
599
+ is_source: asset.isSource,
600
+ nested_promise_import_fix: options.featureFlags.nestedPromiseImportFix,
601
+ global_aliasing_config: config.globalAliasingConfig,
602
+ enable_ssr_typeof_replacement: Boolean(config.enableSsrTypeofReplacement),
603
+ enable_lazy_loading: Boolean(config.enableLazyLoading),
604
+ enable_dead_returns_removal: Boolean(config.enableDeadReturnsRemoval),
605
+ enable_unused_bindings_removal: Boolean(config.enableUnusedBindingsRemoval),
606
+ enable_static_prevaluation: Boolean(config.enableStaticPrevaluation),
607
+ enable_react_hooks_removal: Boolean(config.enableReactHooksRemoval),
608
+ enable_react_async_import_lift: Boolean(config.enableReactAsyncImportLift),
609
+ react_async_lift_by_default: Boolean(config.reactAsyncLiftByDefault),
610
+ react_async_lift_report_level: String(config.reactAsyncLiftReportLevel),
611
+ sync_dynamic_import_config: config.syncDynamicImportConfig,
612
+ enable_tokens_and_compiled_css_in_js_transform: (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform'),
613
+ tokens_config: config.tokensConfig,
614
+ compiled_css_in_js_config: config.compiledCssInJsConfig,
377
615
  callMacro: asset.isSource ? async (err, src, exportName, args, loc) => {
378
616
  let mod;
379
617
  try {
380
618
  mod = await options.packageManager.require(src, asset.filePath);
381
619
 
382
620
  // Default interop for CommonJS modules.
383
- if (exportName === 'default' && !mod.__esModule &&
384
- // $FlowFixMe
385
- Object.prototype.toString.call(config) !== '[object Module]') {
621
+ if (exportName === 'default' && !mod.__esModule && Object.prototype.toString.call(config) !== '[object Module]') {
386
622
  mod = {
387
623
  default: mod
388
624
  };
@@ -398,7 +634,7 @@ var _default = exports.default = new (_plugin().Transformer)({
398
634
  }
399
635
  try {
400
636
  if (typeof mod[exportName] === 'function') {
401
- return mod[exportName].apply({
637
+ let ctx = {
402
638
  // Allows macros to emit additional assets to add as dependencies (e.g. css).
403
639
  addAsset(a) {
404
640
  let k = String(macroAssets.length);
@@ -406,6 +642,7 @@ var _default = exports.default = new (_plugin().Transformer)({
406
642
  if (asset.env.sourceMap) {
407
643
  // Generate a source map that maps each line of the asset to the original macro call.
408
644
  map = new (_sourceMap().default)(options.projectRoot);
645
+ // @ts-expect-error TS2304
409
646
  let mappings = [];
410
647
  let line = 1;
411
648
  for (let i = 0; i <= a.content.length; i++) {
@@ -428,7 +665,9 @@ var _default = exports.default = new (_plugin().Transformer)({
428
665
  if (originalMap) {
429
666
  map.extends(originalMap);
430
667
  } else {
431
- map.setSourceContent(asset.filePath, code.toString());
668
+ if (!(0, _featureFlags().getFeatureFlag)('omitSourcesContentInMemory')) {
669
+ map.setSourceContent(asset.filePath, code.toString());
670
+ }
432
671
  }
433
672
  }
434
673
  macroAssets.push({
@@ -457,7 +696,8 @@ var _default = exports.default = new (_plugin().Transformer)({
457
696
  invalidateOnBuild() {
458
697
  asset.invalidateOnBuild();
459
698
  }
460
- }, args);
699
+ };
700
+ return mod[exportName].apply(ctx, args);
461
701
  } else {
462
702
  throw new Error(`"${exportName}" in "${src}" is not a function.`);
463
703
  }
@@ -479,11 +719,10 @@ var _default = exports.default = new (_plugin().Transformer)({
479
719
  } : null
480
720
  });
481
721
  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
- }));
722
+ asset.meta.conditions = conditions;
723
+ }
724
+ if (style_rules) {
725
+ asset.meta.styleRules = style_rules;
487
726
  }
488
727
  if (is_constant_module) {
489
728
  asset.meta.isConstantModule = true;
@@ -503,17 +742,22 @@ var _default = exports.default = new (_plugin().Transformer)({
503
742
 
504
743
  // If there is an original source map, use it to remap to the original source location.
505
744
  if (originalMap) {
506
- location = (0, _utils().remapSourceLocation)(location, originalMap);
745
+ location = (0, _utils().remapSourceLocation)(location, originalMap, options.projectRoot);
507
746
  }
508
747
  return location;
509
748
  };
510
749
  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);
750
+ let errors = diagnostics.filter(
751
+ // @ts-expect-error TS7006
752
+ d => d.severity === 'Error' || d.severity === 'SourceError' && asset.isSource);
753
+ let warnings = diagnostics.filter(
754
+ // @ts-expect-error TS7006
755
+ d => d.severity === 'Warning' || d.severity === 'SourceError' && !asset.isSource);
513
756
  let convertDiagnostic = diagnostic => {
514
757
  var _diagnostic$code_high;
515
758
  let message = diagnostic.message;
516
759
  if (message === 'SCRIPT_ERROR') {
760
+ // @ts-expect-error TS7053
517
761
  let err = SCRIPT_ERRORS[asset.env.context];
518
762
  message = (err === null || err === void 0 ? void 0 : err.message) || SCRIPT_ERRORS.browser.message;
519
763
  }
@@ -525,6 +769,9 @@ var _default = exports.default = new (_plugin().Transformer)({
525
769
  }],
526
770
  hints: diagnostic.hints
527
771
  };
772
+ if (diagnostic.name) {
773
+ res.name = diagnostic.name;
774
+ }
528
775
  if (diagnostic.documentation_url) {
529
776
  res.documentationURL = diagnostic.documentation_url;
530
777
  }
@@ -536,6 +783,8 @@ var _default = exports.default = new (_plugin().Transformer)({
536
783
  codeHighlights: [(0, _diagnostic().convertSourceLocationToHighlight)(asset.env.loc, 'The environment was originally created here')]
537
784
  });
538
785
  }
786
+
787
+ // @ts-expect-error TS7053
539
788
  let err = SCRIPT_ERRORS[asset.env.context];
540
789
  if (err) {
541
790
  if (!res.hints) {
@@ -580,6 +829,7 @@ var _default = exports.default = new (_plugin().Transformer)({
580
829
  env: {
581
830
  context: 'web-worker',
582
831
  sourceType: dep.source_type === 'Module' ? 'module' : 'script',
832
+ // @ts-expect-error TS2322
583
833
  outputFormat,
584
834
  loc
585
835
  },
@@ -629,6 +879,13 @@ var _default = exports.default = new (_plugin().Transformer)({
629
879
  });
630
880
  } else if (dep.kind === 'File') {
631
881
  asset.invalidateOnFileChange(dep.specifier);
882
+ } else if (dep.kind === 'Id') {
883
+ // Record parcelRequire calls so that the dev packager can add them as dependencies.
884
+ // This allows the HMR runtime to collect parents across async boundaries (through runtimes).
885
+ // TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
886
+ asset.meta.hmrDeps ??= [];
887
+ (0, _assert().default)(Array.isArray(asset.meta.hmrDeps));
888
+ asset.meta.hmrDeps.push(dep.specifier);
632
889
  } else {
633
890
  let meta = {
634
891
  kind: dep.kind
@@ -676,6 +933,12 @@ var _default = exports.default = new (_plugin().Transformer)({
676
933
  outputFormat,
677
934
  loc: convertLoc(dep.loc)
678
935
  };
936
+ if ((0, _featureFlags().getFeatureFlag)('supportWebpackChunkName')) {
937
+ let chunkName = magic_comments[dep.specifier];
938
+ if (chunkName) {
939
+ meta.chunkName = chunkName;
940
+ }
941
+ }
679
942
  }
680
943
 
681
944
  // Always bundle helpers, even with includeNodeModules: false, except if this is a library.
@@ -695,6 +958,7 @@ var _default = exports.default = new (_plugin().Transformer)({
695
958
  idx = dep.specifier.indexOf('/', idx + 1);
696
959
  }
697
960
  let module = idx >= 0 ? dep.specifier.slice(0, idx) : dep.specifier;
961
+ // @ts-expect-error TS7053
698
962
  range = _package.default.dependencies[module];
699
963
  }
700
964
  asset.addDependency({
@@ -706,6 +970,7 @@ var _default = exports.default = new (_plugin().Transformer)({
706
970
  meta,
707
971
  resolveFrom: isHelper ? __filename : undefined,
708
972
  range,
973
+ // @ts-expect-error TS2322
709
974
  env
710
975
  });
711
976
  }
@@ -717,10 +982,12 @@ var _default = exports.default = new (_plugin().Transformer)({
717
982
  exported,
718
983
  local,
719
984
  loc,
720
- is_esm
985
+ is_esm,
986
+ is_static_binding_safe
721
987
  } of hoist_result.exported_symbols) {
722
988
  asset.symbols.set(exported, local, convertLoc(loc), {
723
- isEsm: is_esm
989
+ isEsm: is_esm,
990
+ isStaticBindingSafe: is_static_binding_safe
724
991
  });
725
992
  }
726
993
 
@@ -802,6 +1069,9 @@ var _default = exports.default = new (_plugin().Transformer)({
802
1069
  // (and the asset has side effects), or the asset is wrapped.
803
1070
  // This allows accessing symbols that don't exist without errors in symbol propagation.
804
1071
  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('*')) {
1072
+ if (is_empty_or_empty_export) {
1073
+ asset.meta.emptyFileStarReexport = true;
1074
+ }
805
1075
  asset.symbols.set('*', `$${asset.id}$exports`);
806
1076
  }
807
1077
  asset.meta.hasCJSExports = hoist_result.has_cjs_exports;