@atlaspack/transformer-js 3.2.3-canary.5 → 3.2.3-canary.500

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