@atlaspack/transformer-js 3.2.3-dev.14 → 3.2.3-dev.1c70d50f9.99

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.
@@ -25,6 +25,13 @@ function _rust() {
25
25
  };
26
26
  return data;
27
27
  }
28
+ function _assert() {
29
+ const data = _interopRequireDefault(require("assert"));
30
+ _assert = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
28
35
  function _browserslist() {
29
36
  const data = _interopRequireDefault(require("browserslist"));
30
37
  _browserslist = function () {
@@ -160,24 +167,25 @@ var _default = exports.default = new (_plugin().Transformer)({
160
167
  config,
161
168
  options
162
169
  }) {
163
- let pkg = await config.getPackage();
170
+ let packageJson = await config.getPackage();
164
171
  let isJSX, pragma, pragmaFrag, jsxImportSource, automaticJSXRuntime, reactRefresh, decorators, useDefineForClassFields;
165
172
  if (config.isSource) {
166
- var _pkg$dependencies2, _pkg$devDependencies2, _pkg$peerDependencies2, _tsconfig$contents;
173
+ var _packageJson$dependen2, _packageJson$devDepen2, _packageJson$peerDepe2, _await$config$getConf;
167
174
  let reactLib;
168
- if (pkg !== null && pkg !== void 0 && pkg.alias && pkg.alias['react']) {
175
+ if (packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react']) {
169
176
  // e.g.: `{ alias: { "react": "preact/compat" } }`
170
177
  reactLib = 'react';
171
178
  } else {
172
179
  // Find a dependency that we can map to a JSX pragma
173
180
  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]);
181
+ var _packageJson$dependen, _packageJson$devDepen, _packageJson$peerDepe;
182
+ 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]);
176
183
  });
177
184
  }
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;
185
+ reactRefresh = options.hmrOptions && options.mode === 'development' && 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));
186
+ const compilerOptions = (_await$config$getConf = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
187
+ readTracking: true
188
+ })) === 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;
181
189
 
182
190
  // Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
183
191
  pragma = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFactory) || (reactLib ? JSX_PRAGMA[reactLib].pragma : undefined);
@@ -186,10 +194,10 @@ var _default = exports.default = new (_plugin().Transformer)({
186
194
  jsxImportSource = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxImportSource;
187
195
  automaticJSXRuntime = true;
188
196
  } 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;
197
+ var _JSX_PRAGMA$effective, _packageJson$dependen3, _packageJson$devDepen3, _packageJson$peerDepe3, _semver$minVersion;
198
+ let effectiveReactLib = packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react'] === 'preact/compat' ? 'preact' : reactLib;
191
199
  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]);
200
+ 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]);
193
201
  reactLibVersion = reactLibVersion ? _semver().default.validRange(reactLibVersion) : null;
194
202
  let minReactLibVersion = reactLibVersion !== null && reactLibVersion !== '*' ? (_semver$minVersion = _semver().default.minVersion(reactLibVersion)) === null || _semver$minVersion === void 0 ? void 0 : _semver$minVersion.toString() : null;
195
203
  automaticJSXRuntime = automaticVersion && !(compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxFactory) && minReactLibVersion != null && _semver().default.satisfies(minReactLibVersion, automaticVersion, {
@@ -215,7 +223,7 @@ var _default = exports.default = new (_plugin().Transformer)({
215
223
 
216
224
  // Check if we should ignore fs calls
217
225
  // See https://github.com/defunctzombie/node-browser-resolve#skip
218
- let ignoreFS = pkg && pkg.browser && typeof pkg.browser === 'object' && pkg.browser.fs === false;
226
+ let ignoreFS = packageJson && packageJson.browser && typeof packageJson.browser === 'object' && packageJson.browser.fs === false;
219
227
  let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
220
228
  packageKey: '@atlaspack/transformer-js'
221
229
  });
@@ -373,6 +381,7 @@ var _default = exports.default = new (_plugin().Transformer)({
373
381
  standalone: asset.query.has('standalone'),
374
382
  inline_constants: config.inlineConstants,
375
383
  conditional_bundling: options.featureFlags.conditionalBundlingApi,
384
+ hmr_improvements: options.featureFlags.hmrImprovements,
376
385
  magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments),
377
386
  callMacro: asset.isSource ? async (err, src, exportName, args, loc) => {
378
387
  let mod;
@@ -629,6 +638,13 @@ var _default = exports.default = new (_plugin().Transformer)({
629
638
  });
630
639
  } else if (dep.kind === 'File') {
631
640
  asset.invalidateOnFileChange(dep.specifier);
641
+ } else if (dep.kind === 'Id') {
642
+ // Record parcelRequire calls so that the dev packager can add them as dependencies.
643
+ // This allows the HMR runtime to collect parents across async boundaries (through runtimes).
644
+ // TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
645
+ asset.meta.hmrDeps ??= [];
646
+ (0, _assert().default)(Array.isArray(asset.meta.hmrDeps));
647
+ asset.meta.hmrDeps.push(dep.specifier);
632
648
  } else {
633
649
  let meta = {
634
650
  kind: dep.kind
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaspack/transformer-js",
3
- "version": "3.2.3-dev.14+8c369e38c",
3
+ "version": "3.2.3-dev.1c70d50f9.99+1c70d50f9",
4
4
  "license": "(MIT OR Apache-2.0)",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,12 +22,12 @@
22
22
  "src"
23
23
  ],
24
24
  "dependencies": {
25
- "@atlaspack/diagnostic": "2.14.1-dev.82+8c369e38c",
26
- "@atlaspack/feature-flags": "2.14.1-dev.82+8c369e38c",
27
- "@atlaspack/plugin": "2.14.5-dev.14+8c369e38c",
28
- "@atlaspack/rust": "3.2.1-dev.14+8c369e38c",
29
- "@atlaspack/utils": "2.14.5-dev.14+8c369e38c",
30
- "@atlaspack/workers": "2.14.5-dev.14+8c369e38c",
25
+ "@atlaspack/diagnostic": "2.14.1-dev.1c70d50f9.167+1c70d50f9",
26
+ "@atlaspack/feature-flags": "2.14.1-dev.1c70d50f9.167+1c70d50f9",
27
+ "@atlaspack/plugin": "2.14.5-dev.1c70d50f9.99+1c70d50f9",
28
+ "@atlaspack/rust": "3.2.1-dev.1c70d50f9.99+1c70d50f9",
29
+ "@atlaspack/utils": "2.14.5-dev.1c70d50f9.99+1c70d50f9",
30
+ "@atlaspack/workers": "2.14.5-dev.1c70d50f9.99+1c70d50f9",
31
31
  "@parcel/source-map": "^2.1.1",
32
32
  "@swc/helpers": "^0.5.15",
33
33
  "browserslist": "^4.6.6",
@@ -39,5 +39,5 @@
39
39
  "@atlaspack/core": "^2.13.1"
40
40
  },
41
41
  "type": "commonjs",
42
- "gitHead": "8c369e38ccd428409811114aebd6044c27f90705"
42
+ "gitHead": "1c70d50f914cb662515b0b61053e51a06f3af234"
43
43
  }
@@ -12,6 +12,7 @@ import type {Diagnostic} from '@atlaspack/diagnostic';
12
12
  import SourceMap from '@parcel/source-map';
13
13
  import {Transformer} from '@atlaspack/plugin';
14
14
  import {transform, transformAsync} from '@atlaspack/rust';
15
+ import invariant from 'assert';
15
16
  import browserslist from 'browserslist';
16
17
  import semver from 'semver';
17
18
  import nullthrows from 'nullthrows';
@@ -173,7 +174,7 @@ type MacroContext = {|
173
174
 
174
175
  export default (new Transformer({
175
176
  async loadConfig({config, options}) {
176
- let pkg = await config.getPackage();
177
+ let packageJson = await config.getPackage();
177
178
  let isJSX,
178
179
  pragma,
179
180
  pragmaFrag,
@@ -184,16 +185,16 @@ export default (new Transformer({
184
185
  useDefineForClassFields;
185
186
  if (config.isSource) {
186
187
  let reactLib;
187
- if (pkg?.alias && pkg.alias['react']) {
188
+ if (packageJson?.alias && packageJson.alias['react']) {
188
189
  // e.g.: `{ alias: { "react": "preact/compat" } }`
189
190
  reactLib = 'react';
190
191
  } else {
191
192
  // Find a dependency that we can map to a JSX pragma
192
193
  reactLib = Object.keys(JSX_PRAGMA).find(
193
194
  (libName) =>
194
- pkg?.dependencies?.[libName] ||
195
- pkg?.devDependencies?.[libName] ||
196
- pkg?.peerDependencies?.[libName],
195
+ packageJson?.dependencies?.[libName] ||
196
+ packageJson?.devDependencies?.[libName] ||
197
+ packageJson?.peerDependencies?.[libName],
197
198
  );
198
199
  }
199
200
 
@@ -201,16 +202,20 @@ export default (new Transformer({
201
202
  options.hmrOptions &&
202
203
  options.mode === 'development' &&
203
204
  Boolean(
204
- pkg?.dependencies?.react ||
205
- pkg?.devDependencies?.react ||
206
- pkg?.peerDependencies?.react,
205
+ packageJson?.dependencies?.react ||
206
+ packageJson?.devDependencies?.react ||
207
+ packageJson?.peerDependencies?.react,
207
208
  );
208
209
 
209
- let tsconfig = await config.getConfigFrom<TSConfig>(
210
- options.projectRoot + '/index',
211
- ['tsconfig.json', 'jsconfig.json'],
212
- );
213
- let compilerOptions = tsconfig?.contents?.compilerOptions;
210
+ const compilerOptions: TSConfig['compilerOptions'] = (
211
+ await config.getConfigFrom<TSConfig>(
212
+ options.projectRoot + '/index',
213
+ ['tsconfig.json', 'jsconfig.json'],
214
+ {
215
+ readTracking: true,
216
+ },
217
+ )
218
+ )?.contents?.compilerOptions;
214
219
 
215
220
  // Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
216
221
  pragma =
@@ -229,14 +234,14 @@ export default (new Transformer({
229
234
  automaticJSXRuntime = true;
230
235
  } else if (reactLib) {
231
236
  let effectiveReactLib =
232
- pkg?.alias && pkg.alias['react'] === 'preact/compat'
237
+ packageJson?.alias && packageJson.alias['react'] === 'preact/compat'
233
238
  ? 'preact'
234
239
  : reactLib;
235
240
  let automaticVersion = JSX_PRAGMA[effectiveReactLib]?.automatic;
236
241
  let reactLibVersion =
237
- pkg?.dependencies?.[effectiveReactLib] ||
238
- pkg?.devDependencies?.[effectiveReactLib] ||
239
- pkg?.peerDependencies?.[effectiveReactLib];
242
+ packageJson?.dependencies?.[effectiveReactLib] ||
243
+ packageJson?.devDependencies?.[effectiveReactLib] ||
244
+ packageJson?.peerDependencies?.[effectiveReactLib];
240
245
  reactLibVersion = reactLibVersion
241
246
  ? semver.validRange(reactLibVersion)
242
247
  : null;
@@ -278,10 +283,10 @@ export default (new Transformer({
278
283
  // Check if we should ignore fs calls
279
284
  // See https://github.com/defunctzombie/node-browser-resolve#skip
280
285
  let ignoreFS =
281
- pkg &&
282
- pkg.browser &&
283
- typeof pkg.browser === 'object' &&
284
- pkg.browser.fs === false;
286
+ packageJson &&
287
+ packageJson.browser &&
288
+ typeof packageJson.browser === 'object' &&
289
+ packageJson.browser.fs === false;
285
290
 
286
291
  let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
287
292
  packageKey: '@atlaspack/transformer-js',
@@ -470,6 +475,7 @@ export default (new Transformer({
470
475
  standalone: asset.query.has('standalone'),
471
476
  inline_constants: config.inlineConstants,
472
477
  conditional_bundling: options.featureFlags.conditionalBundlingApi,
478
+ hmr_improvements: options.featureFlags.hmrImprovements,
473
479
  magic_comments: Boolean(config?.magicComments),
474
480
  callMacro: asset.isSource
475
481
  ? async (err, src, exportName, args, loc) => {
@@ -776,6 +782,13 @@ export default (new Transformer({
776
782
  });
777
783
  } else if (dep.kind === 'File') {
778
784
  asset.invalidateOnFileChange(dep.specifier);
785
+ } else if (dep.kind === 'Id') {
786
+ // Record parcelRequire calls so that the dev packager can add them as dependencies.
787
+ // This allows the HMR runtime to collect parents across async boundaries (through runtimes).
788
+ // TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
789
+ asset.meta.hmrDeps ??= [];
790
+ invariant(Array.isArray(asset.meta.hmrDeps));
791
+ asset.meta.hmrDeps.push(dep.specifier);
779
792
  } else {
780
793
  let meta: JSONObject = {kind: dep.kind};
781
794
  if (dep.attributes) {