@parcel/packager-js 2.0.0-dev.1528 → 2.0.0-dev.1562

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.
@@ -271,6 +271,7 @@ class ScopeHoistingPackager {
271
271
  // TODO: handle ESM exports of wrapped entry assets...
272
272
  let entry = this.bundle.getMainEntry();
273
273
  if (entry && !this.wrappedAssets.has(entry.id)) {
274
+ let hasNamespace = entry.symbols.hasExportSymbol('*');
274
275
  for (let {
275
276
  asset,
276
277
  exportAs,
@@ -279,6 +280,12 @@ class ScopeHoistingPackager {
279
280
  } of this.bundleGraph.getExportedSymbols(entry)) {
280
281
  if (typeof symbol === 'string') {
281
282
  var _this$exportedSymbols, _entry$symbols$get2;
283
+ // If the module has a namespace (e.g. commonjs), and this is not an entry, only export the namespace
284
+ // as default, without individual exports. This mirrors the importing logic in addExternal, avoiding
285
+ // extra unused exports and potential for non-identifier export names.
286
+ if (hasNamespace && this.isAsyncBundle && exportAs !== '*') {
287
+ continue;
288
+ }
282
289
  let symbols = (_this$exportedSymbols = this.exportedSymbols.get(symbol === '*' ? (0, _nullthrows().default)((_entry$symbols$get2 = entry.symbols.get('*')) === null || _entry$symbols$get2 === void 0 ? void 0 : _entry$symbols$get2.local) : symbol)) === null || _this$exportedSymbols === void 0 ? void 0 : _this$exportedSymbols.exportAs;
283
290
  if (!symbols) {
284
291
  symbols = [];
package/lib/index.js CHANGED
@@ -32,13 +32,6 @@ function _rust() {
32
32
  };
33
33
  return data;
34
34
  }
35
- function _path() {
36
- const data = _interopRequireDefault(require("path"));
37
- _path = function () {
38
- return data;
39
- };
40
- return data;
41
- }
42
35
  function _nullthrows() {
43
36
  const data = _interopRequireDefault(require("nullthrows"));
44
37
  _nullthrows = function () {
@@ -63,23 +56,29 @@ var _default = exports.default = new (_plugin().Packager)({
63
56
  config,
64
57
  options
65
58
  }) {
66
- var _pkg$contents$name, _pkg$contents, _pkg$contents$package;
67
- // Generate a name for the global parcelRequire function that is unique to this project.
68
- // This allows multiple parcel builds to coexist on the same page.
69
- let pkg = await config.getConfigFrom(_path().default.join(options.projectRoot, 'index'), ['package.json']);
59
+ var _packageName$contents, _packageName$contents2, _conf$contents;
70
60
  let packageKey = '@parcel/packager-js';
71
- if (pkg !== null && pkg !== void 0 && pkg.contents[packageKey]) {
61
+ let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
62
+ packageKey
63
+ });
64
+ if (conf !== null && conf !== void 0 && conf.contents) {
72
65
  _utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
73
- data: pkg === null || pkg === void 0 ? void 0 : pkg.contents[packageKey],
74
- source: await options.inputFS.readFile(pkg.filePath, 'utf8'),
75
- filePath: pkg.filePath,
66
+ data: conf === null || conf === void 0 ? void 0 : conf.contents,
67
+ source: await options.inputFS.readFile(conf.filePath, 'utf8'),
68
+ filePath: conf.filePath,
76
69
  prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)(packageKey)}`
77
70
  }, packageKey, `Invalid config for ${packageKey}`);
78
71
  }
79
- let name = (_pkg$contents$name = pkg === null || pkg === void 0 || (_pkg$contents = pkg.contents) === null || _pkg$contents === void 0 ? void 0 : _pkg$contents.name) !== null && _pkg$contents$name !== void 0 ? _pkg$contents$name : '';
72
+
73
+ // Generate a name for the global parcelRequire function that is unique to this project.
74
+ // This allows multiple parcel builds to coexist on the same page.
75
+ let packageName = await config.getConfigFrom(options.projectRoot + '/index', [], {
76
+ packageKey: 'name'
77
+ });
78
+ let name = (_packageName$contents = packageName === null || packageName === void 0 || (_packageName$contents2 = packageName.contents) === null || _packageName$contents2 === void 0 ? void 0 : _packageName$contents2.name) !== null && _packageName$contents !== void 0 ? _packageName$contents : '';
80
79
  return {
81
80
  parcelRequireName: 'parcelRequire' + (0, _rust().hashString)(name).slice(-4),
82
- unstable_asyncBundleRuntime: Boolean(pkg === null || pkg === void 0 || (_pkg$contents$package = pkg.contents[packageKey]) === null || _pkg$contents$package === void 0 ? void 0 : _pkg$contents$package.unstable_asyncBundleRuntime)
81
+ unstable_asyncBundleRuntime: Boolean(conf === null || conf === void 0 || (_conf$contents = conf.contents) === null || _conf$contents === void 0 ? void 0 : _conf$contents.unstable_asyncBundleRuntime)
83
82
  };
84
83
  },
85
84
  async package({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parcel/packager-js",
3
- "version": "2.0.0-dev.1528+70889ca07",
3
+ "version": "2.0.0-dev.1562+298c035e0",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -17,17 +17,17 @@
17
17
  "source": "src/index.js",
18
18
  "engines": {
19
19
  "node": ">= 12.0.0",
20
- "parcel": "^2.0.0-dev.1526+70889ca07"
20
+ "parcel": "^2.0.0-dev.1560+298c035e0"
21
21
  },
22
22
  "dependencies": {
23
- "@parcel/diagnostic": "2.0.0-dev.1528+70889ca07",
24
- "@parcel/plugin": "2.0.0-dev.1528+70889ca07",
25
- "@parcel/rust": "2.12.1-dev.3151+70889ca07",
23
+ "@parcel/diagnostic": "2.0.0-dev.1562+298c035e0",
24
+ "@parcel/plugin": "2.0.0-dev.1562+298c035e0",
25
+ "@parcel/rust": "2.12.1-dev.3185+298c035e0",
26
26
  "@parcel/source-map": "^2.1.1",
27
- "@parcel/types": "2.0.0-dev.1528+70889ca07",
28
- "@parcel/utils": "2.0.0-dev.1528+70889ca07",
27
+ "@parcel/types": "2.0.0-dev.1562+298c035e0",
28
+ "@parcel/utils": "2.0.0-dev.1562+298c035e0",
29
29
  "globals": "^13.2.0",
30
30
  "nullthrows": "^1.1.1"
31
31
  },
32
- "gitHead": "70889ca07dccb95e21e4c6a2844d632e3723faf4"
32
+ "gitHead": "298c035e0ffb82d7c5579ce233cc35dce2fe1061"
33
33
  }
@@ -354,6 +354,8 @@ export class ScopeHoistingPackager {
354
354
  // TODO: handle ESM exports of wrapped entry assets...
355
355
  let entry = this.bundle.getMainEntry();
356
356
  if (entry && !this.wrappedAssets.has(entry.id)) {
357
+ let hasNamespace = entry.symbols.hasExportSymbol('*');
358
+
357
359
  for (let {
358
360
  asset,
359
361
  exportAs,
@@ -361,6 +363,13 @@ export class ScopeHoistingPackager {
361
363
  exportSymbol,
362
364
  } of this.bundleGraph.getExportedSymbols(entry)) {
363
365
  if (typeof symbol === 'string') {
366
+ // If the module has a namespace (e.g. commonjs), and this is not an entry, only export the namespace
367
+ // as default, without individual exports. This mirrors the importing logic in addExternal, avoiding
368
+ // extra unused exports and potential for non-identifier export names.
369
+ if (hasNamespace && this.isAsyncBundle && exportAs !== '*') {
370
+ continue;
371
+ }
372
+
364
373
  let symbols = this.exportedSymbols.get(
365
374
  symbol === '*' ? nullthrows(entry.symbols.get('*')?.local) : symbol,
366
375
  )?.exportAs;
package/src/index.js CHANGED
@@ -10,7 +10,6 @@ import {
10
10
  } from '@parcel/utils';
11
11
  import {encodeJSONKeyComponent} from '@parcel/diagnostic';
12
12
  import {hashString} from '@parcel/rust';
13
- import path from 'path';
14
13
  import nullthrows from 'nullthrows';
15
14
  import {DevPackager} from './DevPackager';
16
15
  import {ScopeHoistingPackager} from './ScopeHoistingPackager';
@@ -32,22 +31,18 @@ const CONFIG_SCHEMA: SchemaEntity = {
32
31
 
33
32
  export default (new Packager({
34
33
  async loadConfig({config, options}): Promise<JSPackagerConfig> {
35
- // Generate a name for the global parcelRequire function that is unique to this project.
36
- // This allows multiple parcel builds to coexist on the same page.
37
- let pkg = await config.getConfigFrom(
38
- path.join(options.projectRoot, 'index'),
39
- ['package.json'],
40
- );
41
-
42
34
  let packageKey = '@parcel/packager-js';
35
+ let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
36
+ packageKey,
37
+ });
43
38
 
44
- if (pkg?.contents[packageKey]) {
39
+ if (conf?.contents) {
45
40
  validateSchema.diagnostic(
46
41
  CONFIG_SCHEMA,
47
42
  {
48
- data: pkg?.contents[packageKey],
49
- source: await options.inputFS.readFile(pkg.filePath, 'utf8'),
50
- filePath: pkg.filePath,
43
+ data: conf?.contents,
44
+ source: await options.inputFS.readFile(conf.filePath, 'utf8'),
45
+ filePath: conf.filePath,
51
46
  prependKey: `/${encodeJSONKeyComponent(packageKey)}`,
52
47
  },
53
48
  packageKey,
@@ -55,11 +50,21 @@ export default (new Packager({
55
50
  );
56
51
  }
57
52
 
58
- let name = pkg?.contents?.name ?? '';
53
+ // Generate a name for the global parcelRequire function that is unique to this project.
54
+ // This allows multiple parcel builds to coexist on the same page.
55
+ let packageName = await config.getConfigFrom(
56
+ options.projectRoot + '/index',
57
+ [],
58
+ {
59
+ packageKey: 'name',
60
+ },
61
+ );
62
+
63
+ let name = packageName?.contents?.name ?? '';
59
64
  return {
60
65
  parcelRequireName: 'parcelRequire' + hashString(name).slice(-4),
61
66
  unstable_asyncBundleRuntime: Boolean(
62
- pkg?.contents[packageKey]?.unstable_asyncBundleRuntime,
67
+ conf?.contents?.unstable_asyncBundleRuntime,
63
68
  ),
64
69
  };
65
70
  },