Skip to content

Commit 7e728a5

Browse files
committed
feat(esm): add 'module.exports' export hint for Node.js ESM/CJS interop
Add `export { x as 'module.exports' }` to all default exports as a hint for Node.js ESM/CJS interoperability. This documents the intended interop behavior even though frozen objects still require .default accessors at runtime. Files updated: - src/maintained-node-versions.ts - src/package-default-node-range.ts - src/package-default-socket-categories.ts - src/package-extensions.ts - src/lifecycle-script-names.ts
1 parent a1e88ed commit 7e728a5

File tree

5 files changed

+20
-5
lines changed

5 files changed

+20
-5
lines changed

src/lifecycle-script-names.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* https://docs.npmjs.com/cli/v10/using-npm/scripts#life-cycle-scripts
66
*/
77

8-
export default new Set(
8+
const lifecycleScriptNames = new Set(
99
[
1010
'dependencies',
1111
'prepublishOnly',
@@ -21,3 +21,6 @@ export default new Set(
2121
].map(n => [`pre${n}`, n, `post${n}`]),
2222
].flat(),
2323
)
24+
25+
export default lifecycleScriptNames
26+
export { lifecycleScriptNames as 'module.exports' }

src/maintained-node-versions.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const current = '22.20.0'
2222
const previous = '20.19.5'
2323
const last = '18.20.8'
2424

25-
export default ObjectFreeze(
25+
const maintainedNodeVersions = ObjectFreeze(
2626
Object.assign([last, previous, current, next], {
2727
current,
2828
last,
@@ -35,3 +35,6 @@ export default ObjectFreeze(
3535
next: string
3636
previous: string
3737
}
38+
39+
export default maintainedNodeVersions
40+
export { maintainedNodeVersions as 'module.exports' }

src/package-default-node-range.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@
55
const maintainedNodeVersions = require('#lib/maintained-node-versions').default
66
const semver = require('./external/semver')
77

8-
export default `>=${semver.parse(maintainedNodeVersions.last).major}`
8+
const packageDefaultNodeRange = `>=${semver.parse(maintainedNodeVersions.last).major}`
9+
10+
export default packageDefaultNodeRange
11+
export { packageDefaultNodeRange as 'module.exports' }

src/package-default-socket-categories.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
*/
44

55
// Default category for new packages
6-
export default Object.freeze(['cleanup'])
6+
const packageDefaultSocketCategories = Object.freeze(['cleanup'])
7+
8+
export default packageDefaultSocketCategories
9+
export { packageDefaultSocketCategories as 'module.exports' }

src/package-extensions.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { freeze: ObjectFreeze } = Object
99

1010
const yarnPkgExtensions = require('./external/@yarnpkg/extensions')
1111

12-
export default ObjectFreeze(
12+
const packageExtensions = ObjectFreeze(
1313
[
1414
yarnPkgExtensions.packageExtensions,
1515
[
@@ -50,3 +50,6 @@ export default ObjectFreeze(
5050
return 0
5151
}),
5252
)
53+
54+
export default packageExtensions
55+
export { packageExtensions as 'module.exports' }

0 commit comments

Comments
 (0)