🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

node-exports-info

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-exports-info - npm Package Compare versions

Comparing version
1.4.0
to
1.5.0
+8
-0
CHANGELOG.md

@@ -8,2 +8,10 @@ # Changelog

## [v1.5.0](https://github.com/inspect-js/node-exports-info/compare/v1.4.0...v1.5.0) - 2026-01-16
### Commits
- [New] add `node-addons` condition support [`fd11809`](https://github.com/inspect-js/node-exports-info/commit/fd118093e55e8fcb1b3b1c90779e277a6806bc73)
- [New] add `module-sync` condition support [`6cc5123`](https://github.com/inspect-js/node-exports-info/commit/6cc51230673a8846d5b1d2ec4124e35c9d6f077f)
- [New] add `subpath-imports-slash` category for `#/` subpath imports [`547f4ef`](https://github.com/inspect-js/node-exports-info/commit/547f4ef3f62e05032cb7b4d7e4f541eea380fcbf)
## [v1.4.0](https://github.com/inspect-js/node-exports-info/compare/v1.3.1...v1.4.0) - 2026-01-12

@@ -10,0 +18,0 @@

@@ -11,2 +11,8 @@ import type { Category, Condition } from './types';

| ['import', 'node', 'require', 'default']
| ['import', 'node-addons', 'node', 'default']
| ['node-addons', 'node', 'require', 'default']
| ['import', 'node-addons', 'node', 'require', 'default']
| ['import', 'node-addons', 'node', 'module-sync', 'default']
| ['node-addons', 'node', 'require', 'module-sync', 'default']
| ['import', 'node-addons', 'node', 'require', 'module-sync', 'default']
| null

@@ -13,0 +19,0 @@ );

+105
-31

@@ -5,15 +5,98 @@ 'use strict';

var $TypeError = require('es-errors/type');
var entries = require('object.entries');
var ranges = require('./ranges');
var isCategory = require('./isCategory');
// pre-computed condition sets
/** @type {['import', 'node', 'require', 'default']} */
var base = [
'import',
'node',
'require',
'default'
];
/** @type {['import', 'node', 'default']} */
var baseImport = [
'import',
'node',
'default'
];
/** @type {['node', 'require', 'default']} */
var baseRequire = [
'node',
'require',
'default'
];
/** @type {['import', 'node-addons', 'node', 'require', 'default']} */
var withAddons = [
'import',
'node-addons',
'node',
'require',
'default'
];
/** @type {['import', 'node-addons', 'node', 'default']} */
var withAddonsImport = [
'import',
'node-addons',
'node',
'default'
];
/** @type {['node-addons', 'node', 'require', 'default']} */
var withAddonsRequire = [
'node-addons',
'node',
'require',
'default'
];
/** @type {['import', 'node-addons', 'node', 'require', 'module-sync', 'default']} */
var withAddonsModuleSync = [
'import',
'node-addons',
'node',
'require',
'module-sync',
'default'
];
/** @type {['import', 'node-addons', 'node', 'module-sync', 'default']} */
var withAddonsModuleSyncImport = [
'import',
'node-addons',
'node',
'module-sync',
'default'
];
/** @type {['node-addons', 'node', 'require', 'module-sync', 'default']} */
var withAddonsModuleSyncRequire = [
'node-addons',
'node',
'require',
'module-sync',
'default'
];
// categories that support node-addons condition (added in v14.19/v16.10)
/** @type {{ [k: string]: boolean | null | undefined }} */
var nodeAddonsCategories = {
__proto__: null,
'pattern-trailers': true,
'pattern-trailers+json-imports': true,
'pattern-trailers-no-dir-slash': true,
'pattern-trailers-no-dir-slash+json-imports': true,
'require-esm': true,
'strips-types': true,
'subpath-imports-slash': true
};
// categories that support module-sync condition (added in v22.12)
/** @type {{ [k: string]: boolean | null | undefined }} */
var moduleSyncCategories = {
__proto__: null,
'require-esm': true,
'strips-types': true,
'subpath-imports-slash': true
};
/** @type {import('./getConditionsForCategory')} */
module.exports = function getConditionsForCategory(category) {
var rangeEntries = entries(ranges);
var found = false;
for (var i = 0; !found && i < rangeEntries.length; i++) {
var entry = rangeEntries[i];
found = entry[1] === category;
}
if (!found) {
if (!isCategory(category)) {
throw new $RangeError('invalid category ' + category);

@@ -30,25 +113,16 @@ }

}
if (category !== 'broken' && category !== 'pre-exports') {
if (moduleSystem === 'import') {
return [
'import',
'node',
'default'
];
}
if (moduleSystem === 'require') {
return [
'node',
'require',
'default'
];
}
return [
'import',
'node',
'require',
'default'
];
if (category === 'broken' || category === 'pre-exports') {
return null;
}
return null;
var hasAddons = !!nodeAddonsCategories[category];
var hasModuleSync = !!moduleSyncCategories[category];
if (hasAddons && hasModuleSync) {
return moduleSystem === 'import' ? withAddonsModuleSyncImport : moduleSystem === 'require' ? withAddonsModuleSyncRequire : withAddonsModuleSync;
}
if (hasAddons) {
return moduleSystem === 'import' ? withAddonsImport : moduleSystem === 'require' ? withAddonsRequire : withAddons;
}
return moduleSystem === 'import' ? baseImport : moduleSystem === 'require' ? baseRequire : base;
};
{
"name": "node-exports-info",
"version": "1.4.0",
"version": "1.5.0",
"description": "Info about node `exports` field support: version ranges, categories, etc.",

@@ -5,0 +5,0 @@ "main": false,

@@ -6,3 +6,4 @@ 'use strict';

__proto__: null,
'>= 23.6 || ^22.18': 'strips-types', // added in 23.6, backported to 22.18
'>= 25.4': 'subpath-imports-slash', // added in 25.4
'23.6 - 25.3 || ^22.18': 'strips-types', // added in 23.6, backported to 22.18
'23 - 23.5 || 22.12 - 22.17 || ^20.19': 'require-esm', // added in 23.0, 22.12, 20.19

@@ -9,0 +10,0 @@ '17.1 - 19 || 20 - 20.18 || ^21 || 22 - 22.11': 'pattern-trailers-no-dir-slash+json-imports',

@@ -24,3 +24,4 @@ # node-exports-info <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

- `require-esm`: ESM files can be `require`d (`23 - 23.5 || 22.12 - 22.17 || ^20.19`)
- `strips-types`: these versions also automatically strip types from typescript files, for both `require` and `import` (`>= 23.6 || ^22.18`)
- `strips-types`: these versions also automatically strip types from typescript files, for both `require` and `import` (`23.6 - 25.3 || ^22.18`)
- `subpath-imports-slash`: these versions support `#/` subpath imports patterns in the `imports` field, e.g. `"#/*": "./src/*.js"` (`>= 25.4`)

@@ -27,0 +28,0 @@ ## Entry points

@@ -24,4 +24,20 @@ 'use strict';

'v16.9.0',
'v16.13.999',
'v16.14.0',
'v16.999.999',
'v17.0.0'
'v17.0.0',
'v17.0.999',
'v17.1.0',
'v20.18.999',
'v20.19.0',
'v22.11.999',
'v22.12.0',
'v22.17.999',
'v22.18.0',
'v22.999.999',
'v23.0.0',
'v23.5.999',
'v23.6.0',
'v25.3.999',
'v25.4.0'
];

@@ -9,2 +9,2 @@ import ranges from './ranges';

export type Condition = 'node' | 'import' | 'require' | 'default';
export type Condition = 'node' | 'node-addons' | 'import' | 'require' | 'module-sync' | 'default';